hola
tengo un problema con un codigo que estoy desarrollando en el lenguaje del Blitz3D
primero les muestro mi codigo para que puedan entender un poco mas mi duda
AppTitle "Snake Pacman v1.0"
Graphics 640,480
Global estado, muro, i, playerx, playery, colision_arriba, colision_abajo
Global colision_derecha, colision_izquierda, snake_der, snake_izq, snake_arri
Global snake_aba, snake_frame, movsnake, manzana, uva, piedra, corazon, platano
Global comidax, comiday
snake_der=LoadAnimImage("pacman_animation_black.bmp",32,32,0,11)
snake_izq=LoadAnimImage("pacman_animation_black_2.bmp",32,32,0,11)
snake_arri=LoadAnimImage("pacman_animation_black_3_1.bmp",32,32,0,11)
snake_aba=LoadAnimImage("pacman_animation_black_4_1.bmp",32,32,0,11)
manzana=LoadImage("manzana_1.bmp")
uva=LoadImage("uva_1.bmp")
piedra=LoadImage("piedra_1.bmp")
corazon=LoadImage("corazon_1.bmp")
platano=LoadImage("platano_1.bmp")
movsnake=3
playerx=100
playery=100
SetBuffer BackBuffer()
comidax=Rnd(5,460)
comiday=Rnd(5,460)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
While Not KeyDown(1)
Cls
;muestra la animacion del sprite
;If MilliSecs() > tmrSparks + 100 Then
; tmrSparks=MilliSecs() ; 'reset' the timer
; frmSparks=( frmSparks + 1 ) Mod 11 ; incrementa el frame
;End If
;dependiendo de que opcion se active la animacion del snake va a mostrar
;hacia arriba, abajo, a la izquierda o a la derecha
Select estado
Case 0
DrawImage snake_arri,playerx,playery,snake_frame
Case 1
DrawImage snake_aba,playerx,playery,snake_frame
Case 2
DrawImage snake_der,playerx,playery,snake_frame
Case 3
DrawImage snake_izq,playerx,playery,snake_frame
End Select
If KeyDown(200)=True Then ;arriba
playery=playery-movsnake
estado=0
snake_frame=(snake_frame+1) Mod 11; inicia el movimiento de sprites conforme movemos a la snake
;if playery<0 then playery=0 ;detiene para que el jugador no salga fuera de la pantalla
;if playery<=32 then playery=32
ElseIf KeyDown(208)=True Then ;abajo
playery=playery+movsnake
estado=1
snake_frame=(snake_frame+1) Mod 11
;if playery>448 then playery=448
ElseIf KeyDown(205)=True Then ;derecha
playerx=playerx+movsnake
estado=2
snake_frame=(snake_frame+1) Mod 11
;if playerx>608 then playerx=608
ElseIf KeyDown(203)=True Then ;izquierda
playerx=playerx-movsnake
estado=3
snake_frame=(snake_frame+1) Mod 11
;if playerx<0 then playerx=0
End If
Level_One
;Colocar_comida
Flip
Wend
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Function Level_One(); esta funcion dibuja 4 paredes como mapa
muro=LoadImage("wall1.bmp")
For i=0 To 512 Step 32 ;dibuja la pared de arriba y detiene a la snake en esa pared
DrawImage muro,i,0,0
If ImagesCollide(muro,i,0,0,snake_arri,playerx,playery,snake_frame) Then
playery=31 ; si la snake colisiona con la pared de arriba, playery tendra
; el valor de 31
End If
Next
For i=0 To 416 Step 32 ;dibuja la pared izquierda y detiene a la snake en esa pared
DrawImage muro,0,i,0
If ImagesCollide(muro,0,i,0,snake_izq,playerx,playery,snake_frame) Then
playerx=31 ; si la snake colisiona con la pared de la izquierda, playerx tendra
; el valor de 31
End If
Next
For i=0 To 512 Step 32 ;dibuja la pared de abajo y detiene a la snake en esa pared
DrawImage muro,i,447,0
If ImagesCollide(muro,i,447,0,snake_aba,playerx,playery,snake_frame) Then
playery=416 ; si la snake colisiona con la pared de abajo, playery tendra
; el valor de 416
End If
Next
For i=0 To 416 Step 32 ;dibuja la pared de la derecha y detiene a la snake en esa pared
DrawImage muro,512,i,0
If ImagesCollide(muro,512,i,0,snake_der,playerx,playery,snake_frame) Then
playerx=480
End If
Next
; el codigo de abajo es el que elimina a la comida cuando la snake colisiona con la comida
DrawImage(manzana,comidax,comiday,0)
If ImagesCollide(manzana,comidax,comiday,0,snake_aba,playerx,playery,snake_frame)=True Then
FreeImage manzana
ElseIf ImagesCollide(manzana,comidax,comiday,0,snake_arri,playerx,playery,snake_frame)=True Then
FreeImage manzana
ElseIf ImagesCollide(manzana,comidax,comiday,0,snake_der,playerx,playery,snake_frame)=True Then
FreeImage manzana
ElseIf ImagesCollide(manzana,comidax,comiday,0,snake_izq,playerx,playery,snake_frame)= True Then
FreeImage manzana
EndIf
End Function
mi problema es que cuando la snake (el pacman) colisiona con una comida (la manzana) se elimina la comida pero me aparece la imagen con la que formo las paredes
¿alguien sabe a que se debe este problema?
espero que me puedan ayudar
saludos
y se queda tan ancho
Como piensas dibujar una manzana liberada ?
CitarDrawImage(manzana,comidax,comiday,0)
If ImagesCollide(manzana,comidax,comiday,0,snake_aba,playerx,playery,snake_frame)=True Then
FreeImage manzana
ya corregi lo que me salia mal, ahora tengo otra pregunta, cuando estoy probando el juego y llego a juntar unos 170 puntos (suma hecha entre 1, 2 y 3 puntos) mi compu se alenta bastante y se traba, ¿Saben como puedo solucionar esto?
Saludos