2 respuestas

Movimiento estrellas juego java

!
Iniciado por 1 estrellas

Hola. ¿Como puede hacer el efecto de estrellas en movimiento de derecha a izquierda para hacer un juego de naves en java? Ejemplo, juego Némesis de Konami. Gracias.


Ordenar por: Más útiles | Recientes | Cronológico

2 Respuestas

  • !

    Karma: 23 (1 voto)

    Hola Javi,

    la forma más sencilla es la siguiente:

    1. defines el tipo “Estrella” con posición “(x, y)” y velocidad horizontal “dx”.

    2. defines un array al inicio del programa con un número constante de estrellas tipo “Estrella”. Creas los objetos estrella sólo una vez.

    3. defines una función inicializadora de estrella (es mejor que sea un método de “Estrella”). Que inicializa los valores “x = MAXX – 1”, “y = MAXY – 1">RANDOM” y “dx = MAXVELOCIDAD, -MINVELOCIDAD">RANDOM”.

    4. inicializas una única vez cada estrella con la función [3]. Además, sólo una vez, fijas cada “x = MAXX – 1">RANDOM”.

    5. para dibujar las estrellas, dibujas un punto cuyo color (ESTO ES IMPORTANTE) es más blanco cuanto más rápido vaya la estrella y más oscura cuanto más lenta.

    6. en cada iteración del juego, avanzas las estrellas, que no es más que actualizar “x = x + dx”.

    7. a cada avance de estrella miras si “x < 0”, en tal caso, a esa estrella le aplicas la función en [3].

    ¡Y listo!

    Variantes:

    A. un efecto adicional que puedes hacer es el siguiente. Añades la componente “dy” a cada estrella (linealmente proporcional a “dx”). Cuando la nave sube o baja, haces que “dy” actúe en sentido contrario. Así dará un efecto de movimiento vertical sobre el fondo.

    B. si quieres hacer efecto “hiperespacio”, puedes crear el campo de estrellas en un “backbuffer” y en lugar de borrar las estrellas previas, únicamente reduces la intensidad de todo el buffer (eg. “while(*b){if(*b>0)(*b)—;b++;}”). Así las estrellas dejarán estela ¡aun con efecto combinado H/V!.

    C. detrás de las estrellas, puedes pintar un fondo cósmico (eg. tomado de la NASA) muy, muy velado (que no sea muy llamativo, es decir, oscurecido) al que también aplicas un movimiento “dx/dy” pero más lento.

    ¿Te ha sido útil
    esta respuesta?

    No
  • !

    Si ejecutas este código https://gist.github.com/4129979 en la consola de firefox (u otro explorador) en una página con “jQuery” (eg. aquí mismo en Genbeta) podrás ver un ejemplo en ejecución (en lugar de cambiar el color, aplico una transparencia cuanto más lejos está).

  • !

    (las estrellas se verán arriba del todo de la página)

  • !

    Gracias Jose Juan, la respuesta no podría ser más completa. ¿Podrías aconsejarme algún libro/s (aunque sean en inglés) o alguna página donde puede aprender a realizar juegos en Java? Creo que es la mejor forma de explotar este lenguaje tan completo.

  • !

    En “http://www.etnassoft.com/biblioteca/” seguro que encuentras montones de libros ¡y son libres! ;)

  • !

    Karma: 18 (1 voto)

    Otra alternativa: ¿Y si haces dos imágenes con estrellas? Así, en vez de tener que mover todas las estrellas una a una sólo tienes que mover las imágenes.

    Utilizas dos imágenes para que, cuando una empiece a salir de la pantalla, la otra empiece a entrar, con lo que tienes un bucle infinito.

    Un saludo.

    ¿Te ha sido útil
    esta respuesta?

    No
  • !

    Hola Karma. Ya conseguí hacer el movimiento de estrellas con la anterior respuesta que me diste, pero voy a probar con ésta que también me parece interesante. Gracias.

  • !

    Entonces no tendrás profundidad.

    Puedes hacerlo pero con N imágenes, en que cada imagen presenta un plano de estrellas.

    Como mínimo deberías tener 4 o 5 planos de profundidad (8 o 10 imágenes) para que el efecto sea vistoso.