Hola! ^^
Estoy haciendo un juego de plataformas pero algo me sale mal cuando pruebo de hacer que cuando pulse a la derecha, el tio mire a la derecha y avance a la derecha y lo mismo con la izquierda. Este es el codigo que tengo, he probado de todo.
[Os pongo las ayudas apra que veais que es cada cosa ok?]
-- Imagenes del Jugador, uno mirando a la derecha (right) y otro a la izquierda (left)
right = Image.load("images/samus/right.png") anchoPantalla = 480 - right:width() altoPantalla = 272 - right:width() left = Image.load("images/samus/left.png") anchoPantalla = 480 - left:width() altoPantalla = 272 - left:width()
-- La tabla del jugador. En 'position' carga la imagen de cada posicion.
Player = {} Player[1] = { position = right , x = 50 , y = 127 } Player[2] = { position = left , x = Player[1].x , y = Player[1].y }
-- Codigo del movimiento. El if que esta dentro del otro if hace (en teoria) que cambie el gráfico per no funciona.
while true do screen:clear() screen:blit(0,50,mapa1) screen:blit(Player[1].x,Player[1].y,Player[1].position) pad = Controls.read() if pad:right() and Player[1].x < anchoPantalla then if pad:right() and Player.position == Player[2].position then Player[2].position = Player[1].position end Player[1].x = Player[1].x + 3 end if pad:left() and Player[1].x > 0 then if pad:left() and Player.position == Player[1].position then Player[1].position = Player[2].position end Player[1].x = Player[1].x - 3 end screen.waitVblankStart() screen.flip() oldpad = pad end end
~ Krick ~
Mirando el código asà por
Mirando el código asà por encima veo algunos fallos de sintaxis:
"if pad:right() and Player[1].x 0 then" -> falta "=="
"if pad:left() and Player.position == Player[1].position then" -> falta [numero] después de Player.
Prueba a cambiar eso y nos comentas, ¿ok?
en Player.position quiero
en Player.position quiero poner Posicion actual, por ejemplo Player[x].position, calquier de los dos peude ser, como hago eso?
Hola. NO entiendo mucho de
Hola.
NO entiendo mucho de programación (mas bien lo justo xD)
preo creo que no funciona por lo siguiente.
primero compruebas que se mueve a right y SI se cumple entonces compruebas que se mueva a left. Esta ultima es imposible que se cumpla si la dejas asi anidada.
Ano ser que te hayas confundido y quisieras comprobar los dos en la misma direccion.
Tambien hay otro error despues del pad:left pero como nunca se cumple no te ha dado el error
Player.position == Player[1].position
?? creo que te falta el numero en el primero no?
no me hagas mucho caso, solo el justo para leer esto y reflexionar un poquito, jeje
un saludo
Spirax
Es que el IF dentro del IF
Es que el IF dentro del IF (que despues compruebe) lo puse pk ya probe todo.
Falta parte del codigo, de lo que se mueve a la izquierda. Es lo mismo pero cambiando las posiciones right por left i algunos numeros del Player[x].position
No tengo ni idea de lua...
Pero la comprobacion correcta serÃa (escrito en pseudocodigo):
si pad izquierda entonces
si mira izquierda entonces
mover izquierda
sino
mirar izquierda
fin si
sino
si mira derecha entonces
mover derecha
sino
mirar derecha
fin si
fin si
Explicacion: Primero has de evaluar una unica condición (un estado) bien la dirección que se ha pulsado o bien hacia donde está mirando el personaje, pero solo una cosa. Una vez entras por una rama del condicional, en este caso has detectado que se pulsa izquierda por ejemplo, compruebas el otro estado y actuas en función del mismo.
Espero haberte ayudado, aunque repito que no tengo ni idea de lua.
Salu2
Convierte en Vampiro O Hombre Lobo
"El paraíso a mi derecha, el infierno a mi izquierda y el ángel de la muerte tras de mi."
Quiero probar esto pero
Quiero probar esto pero tengo una duda:
| Si jugador pulsa derecha (mas lo del ancho de pantalla)
| Si posición actual = Posicion Derecha
| Mover jugador a la derecha
| sino
| Posicion Izquierda cambiar a Posicion derecha
| fin
| fin
| Si jugador pulsa izquierda (mas lo del ancho de pantalla)
| Si posición actual = Posicion izquierda
| Mover jugador a la izquierda
| sino
| Posicion derecha cambiar a Posicion izquierda
| fin
| fin
Mi duda es, como hago la posicion actual? La posicion esta dentro de la tabla Player, en Player[1].position mira a la derecha y en Player[2].position mira a la izquierda. ¿Como hago lo de poner Player[posicion actual].position, o algo aprecido que haga lo mismo?
Usa una variable...
O bien añade un elemento "seleccionado" de tipo booleano al array... eso deberÃa solucionar tus problemas y asà siempre sabrÃas que imagen mostrar.
Salu2
Convierte en Vampiro O Hombre Lobo
"El paraíso a mi derecha, el infierno a mi izquierda y el ángel de la muerte tras de mi."