Ayuda con movimiento de enemigo [JUEGO C++]

Buenas, estoy intentando hacer una especie de espace invaders en c++ con las SDL.

Pues resulta que como tengo un FOR principal, pongo esto :

for (;;) //el for es infinito ya que aqui va dentro todo el juego

datos.destenemigo2.x+=7; //incrementamos el valor de la x del enemigo (horizontal)

if (datos.destenemigo2.x > 1024)datos.destenemigo2.x=0; //una vez llega a 1024 (la resolucion del juego esta para 1024) que vuelva a 0.

Esto hace que el enemigo salga de la parte izquierda hasta la derecha, desaparezca y vuelva a salir por la parte izquierda... pero a mi me gustaria hacer que saliese desde la parte derecha (valor 0) y cuando llegara a el valor 1024, que empezara a retroceder hasta el valor 0...

Mi problema es que haciendo un for dentro de un if pues si sabria hacer que volviera para atras sin tener que desaparecer y volver a 0 pero como ya hay un for, no puedo hacer otro...

ALGUIEN ME AYUDA!!??

GRACIAS!!!
Un metodo simple y cutre: Cambia ese +=7 por un "+=avance". Logicamente es una variable, que empezara siendo 7 o lo que quieras.
Luego, if (posicionenemigo > 1024) avance = -7;
Y no hara falta que diga que otro if si posicion enemigo < 0, avance = 7;

P.D.- Aunque sea una tonteria, me parecen mucho mas coherentes los bucles infinitos con "while (1)"
muchas gracias lo probare y os cuento
Y como consejo, nunca hagas lo que estas intentando hacer

Si un pc ejecuta el bucle en un segundo, se movera a 7pixeles segundo.
Si un pc ejecuta el bucle en 0'01 segundos, se movera a 700pixeles segundo.

Lo suyo es calcular el tiempo que ha pasado des de una ejecucion a la otra del bucle y multiplicarlo por la velocidad

x = v * t

Y luego, un if ((x > 1024) || (x < 0)) velocidad = -velocidad;

EDIT: esto iria en otras consolas-desarollo
darix2006 escribió:EDIT: esto iria en otras consolas-desarollo

Si no se trata de ninguna consola...
Ver por aqui posts sobre codigo fuente es bastante normal, sobretodo porque normalmente no tratan sobre juegos.
JanKusanagi escribió:
darix2006 escribió:EDIT: esto iria en otras consolas-desarollo

Si no se trata de ninguna consola...
Ver por aqui posts sobre codigo fuente es bastante normal, sobretodo porque normalmente no tratan sobre juegos.


Alli hay mas hilos que no tratan de consolas que los que tratan de consolas.

Si fuera para un programa lo veria logico, pero siendo juego lo veo mas correcto alli. De todos modos a mi no me molesta, era mas un apunte porque alli puede encontrar mas informacion sobre videojuegos
darix2006 escribió:Y como consejo, nunca hagas lo que estas intentando hacer

Si un pc ejecuta el bucle en un segundo, se movera a 7pixeles segundo.
Si un pc ejecuta el bucle en 0'01 segundos, se movera a 700pixeles segundo.

Lo suyo es calcular el tiempo que ha pasado des de una ejecucion a la otra del bucle y multiplicarlo por la velocidad

x = v * t

Y luego, un if ((x > 1024) || (x < 0)) velocidad = -velocidad;

EDIT: esto iria en otras consolas-desarollo




GRACIAS por tu consejo, lo que pasa esque soy estudiante y por ahora hemos empezado asi, ya nos comentaron que pondremos temporizadores para que eso no pase. Voy a probar ahora mismo a ver si me funciona lo que me pusiste!
edit: perdon pero lo he probado y no se como hacer para que el avance sea para el enemigo.

tengo esto...

datos.destenemigo1.x=+datos.avanceenemigo1;

if (datos.destenemigo1.x < 0)datos.avanceenemigo1=7;
else if (datos.destenemigo1.x > 1024)datos.avanceenemigo1=-7;

pero no me hace nada. se queda el enemigo quieto... [+risas]
rorrocrack escribió:tengo esto...

datos.destenemigo1.x=+datos.avanceenemigo1;

if (datos.destenemigo1.x < 0)datos.avanceenemigo1=7;
else if (datos.destenemigo1.x > 1024)datos.avanceenemigo1=-7;

pero no me hace nada. se queda el enemigo quieto... [+risas]


Claro que se queda quieto XD

Mira tu primera linea detenidamente:
datos.destenemigo1.x = +datos.avanceenemigo1;


que viene a ser:
variable = +otravariable;


Vamos, no variara jamas, siempre sera igual a esa otra variable. XD

Pista: Lo que tu quieres es el operador +=
jajajajaj ya vess!! mientras he estado viendo mi codigo y lo habia descubierto... QUE CABEZA!!!

mil gracias de todas formas!!

no sabes el placer que da estar empezando a programar y que te vaya saliendo mas o menos el juego que querias (minijuego) jejeje

gracias por todo de verdad!
8 respuestas