Traducir este blog

UN DISPARO SIN USAR POO [ Sin objetos ni clases]

UN ESPACIO PARA COLISIONES Y DISPAROS CON BLITZ3D 

Este es un programa con movimiento de un avatar con las teclas cursoras y con programción de disparos

;================================================================

; funcion: disparos sin POO. Con matrices

; fecha: 24-08-2025

; lenguaje: Blitz3D

; autor: Edgar Ramos

; archivo: disparo_1.bb

; ===============================================================

; variables:

Global avatar

x#=0

y#=0

z#=0

; activar entorno gráfico 3D, #s:  ancho,  alto,  profundidad color,  pantalla completa (2: ventana)

Graphics3D 1024,768, 32,2

;==============================================================

;creacion del heroe

avatar=CreateCube()

; Crear la cámara

camera = CreateCamera(avatar)      ; la camara sigue al avatar

PositionEntity camera, 0, 5,-15

RotateEntity camera, 0, 0, 0

ScaleEntity avatar,2,2,2

PositionEntity avatar,x#,y#,z#


luz1=CreateLight()

;creacion del escenario de juego

plano = CreatePlane ()

PositionEntity plano , 0, 0 , 0

; colocar pasto al plano

textura = LoadTexture ("pasto1.bmp") ; hay que crear una textura para el piso

ScaleTexture textura,20,20

EntityTexture plano,textura


Global vel_disparo# = 1

; Variables para disparo

bulletSpeed# = 0.8

Dim bullets(100)  

Dim bulletActive(100)


While Not KeyDown(1) ; Loop principal

 Cls

    ; Movimiento del jugador con teclas

    If KeyDown(205) Then TurnEntity avatar, 0, -2, 0  ; Rotar izquierda

    If KeyDown(203) Then TurnEntity avatar, 0, 2, 0   ; Rotar derecha

    If KeyDown(200) Then MoveEntity avatar, 0, 0, 0.2 ; Avanzar

If EntityCollided(avatar, 2) Then  PositionEntity avatar, EntityX(avatar), EntityY(plancha1) +                     1, EntityZ(avatar)

MoveEntity avatar,x#,y#,z#

    If KeyDown(208) Then MoveEntity avatar, 0, 0, -0.2 ; Retroceder

    ; Disparar con la tecla ESPACIO

    If KeyHit(57)

        For i = 0 To 99

            If bulletActive(i) = 0 Then ; Encuentra una bala inactiva en la posicion 0

                bullets(i) = CreateSphere(5)  ; Se crea una esfera como bala

bala=LoadTexture("bala.bmp") ; hay que crear una textura para la bala

EntityTexture bullets(i),bala

                PositionEntity bullets(i), EntityX(avatar), EntityY(avatar), EntityZ(avatar)

                RotateEntity bullets(i), EntityPitch(avatar), EntityYaw(avatar), EntityRoll(avatar)

                bulletActive(i) = 1 ; activa la bala en posicion 0 de la matriz

                Exit

            EndIf

        Next

    EndIf

    ; Mover balas activas en la dirección del jugador

    For i = 0 To 99

        If bulletActive(i) = 1 Then

            MoveEntity bullets(i), 0, 0, bulletSpeed#

            If EntityZ(bullets(i)) > 300 Or EntityZ(bullets(i)) < -300 Then ; Si sale del área: rango del                             disparo

                FreeEntity bullets(i)

                bulletActive(i) = 0 ; inactiva todas las 101 balas de la matriz

            EndIf

        EndIf

    Next

    UpdateWorld

    RenderWorld 

Text 1,1,"x= "+EntityX(avatar)

Text 1,20,"z= "+EntityZ(avatar)

    Flip

Wend

End

;============================================================

; fin de programa

; ===========================================================

Nota: si el programa no "corre" puedes indicarme el error del compilador para corregirlo.


No hay comentarios:

Publicar un comentario

Porque en mi llevo el caos puedo hacer una estrella.