Duda implementar niveles

Duda implementar niveles

Notapor thepoi » Vie Jun 06, 2008 5:03 pm

Hola
Durante un par de dias es estado trabajando en un juego (con c++ y sdl). El juego consiste es ir esquivando unas bolas que van rebotando por toda la pantalla..

Hoy poy hoy el juego consta de un unico nivel y me gustaria incluir otros niveles en los cuales haya mas bolas o estas se muevan mas rapido.

Lo que no se muy bien es como implementalo

Se me ocurre tener varios game loop de esta forma:

while ((!salir) && (fase==1)) {

if mision completada fase = 2;

}
while ((!salir) && (fase==2)) {

if mision completada fase = 3;
}
.....

y asi sucesivamente. Es esta una buena forma de hacerlo? Como se deberia hacer?

Gracias y saludos!!
thepoi
 
Mensajes: 17
Registrado: Sab May 31, 2008 9:41 pm

Notapor lucesita » Vie Jun 06, 2008 7:44 pm

Honestamente no se como se implementa, pero podrias hacerlo con un switch(nivel)
case 1:
....
case 2:
....
case 3:
....


no se... se me ocurre eso... igual ya te van a responder los mas expertos ajajaja
lucesita
 
Mensajes: 57
Registrado: Mié Mar 12, 2008 2:49 pm

Re: Duda implementar niveles

Notapor hugoruscitti » Vie Jun 06, 2008 10:05 pm

thepoi escribió:Se me ocurre tener varios game loop de esta forma:


Sí, hay varias formas de lograr separar el juego en fases o escenas. No
hay una "mejor forma", sino "formas diferentes", aquí que cuento una
manera distinta de resolverlo, pero tendrías que evaluar si resultará
útil en tu juego:

Una forma de separar etapas en un juego es tratar de 'desacoplar' cada
una de las fases del juego en diferentes objetos. Esto hace que sea mas
sencillo añadir, modificar, e intercambiar partes del juego.

En esencia la idea sería:

- Crear un objeto por cada escena del juego: Menu, Intro, Juego, Creditos...
- Crear un objeto principal que inicialice la biblioteca, tenga el bucle
de juego y mantenga una referencia a la escena actual.
- Que el bucle de juego actualice la escena constantemente.
- Que cada escena pueda ordenar un cambio a otra escena. Por ejemplo, que Menu
pueda cambiar el juego a la escena Creditos...

Veamos un ejemplo simple en python, necesitamos un objeto principal que
administre a la escenas (Mundo), y un método para cambiar de una escena a
otra. Los objetos Menu y Juego son las escenas

Código: Seleccionar todo
class Mundo:

    def __init__(self):
        # crear ventana, cargar recursos etc ...
        [...]

    def cambiar_escena(self, nueva_escena):
        self.escena = nueva_escena

    def loop(self):

        while not salir:
            self.escena.actualizar()
            self.escena.dibujar()
            flip()

class Escena:
    pass

class Juego(Escena):
    def update(self):
        print "estoy jugando..."

class Menu(Escena):
    def update(self):
        print "mostrando opciones al usuario..."

# ejemplo de funcionamiento.

mundo = Mundo()
mundo.cambiar_escena(Menu())
juego = Juego()
mundo.cambiar_escena(juego)
[...]



Te recomiendo veas en detalle el mensaje que escribí hace tiempo sobre
este asunto en el foro de mensajes:

http://www.losersjuegos.com.ar/foro/viewtopic.php?t=170

Además, en el sitio de losersjuegos hay algunos juegos que hacen uso de esta
estrategia (cito unos pocos para que lo veas realizado en diferentes lenguajes):

- Irobot (en python): http://code.google.com/p/irobotgame/
- Ceferino (en C++): http://www.losersjuegos.com.ar/juegos/c ... ferino.php
- volleyball (en C): http://www.losersjuegos.com.ar/juegos/v ... eyball.php

Saludos, y suerte.
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Notapor thepoi » Sab Jun 07, 2008 1:12 pm

Okey, creo que mas o menos me queda claro. Yo hasta el momento solo tenia una clase juego y por eso se me hacia dificil visualizar como hacerlo.

Siguiendo un poco el patron de diseño que comentas creo que se me hace mas sencillo. Intentare implementarlo a ver que tal.

Gracias !! :)


Y lucesita lo malo del case es que luego queda un codigo muy lioso, pasa mas o menos lo mismo que con los multiples game loop que yo proponia. Pero gracias a ti tb ;)
thepoi
 
Mensajes: 17
Registrado: Sab May 31, 2008 9:41 pm


Volver a Videojuegos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado