Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Wofo en 15 Marzo 2013, 16:37 pm



Título: [Ayuda] [C++] Juego de la víbora
Publicado por: Wofo en 15 Marzo 2013, 16:37 pm
Buenas, escribo porque estoy desarrollando el clásico juego de la víbora y estoy un poco confundido con el enfoque de orientiación a objetos que debo seguir.

Por un lado tengo el objeto Víbora y por el otro Comida. La víbora contiene un array de puntos (con lo que la puedo mostrar en pantalla) y la comida contiene un punto.

El movimiento de la víbora está controlado por el método Víbora::mover(), que funciona perfectamente. El problema es que desde ese método no puedo comprobar si la víbora pasa por encima de una comida (y, por lo tanto, se la come), porque el objeto Comida no está dentro de la clase víbora (está en el main).

Son dos objetos separados, como muestra el ejemplo.
Código
  1. int main() {
  2. Vibora vibora;
  3. Comida comida;
  4. }

Alternativas que se me ocurren:
-Comprobar desde el main si la víbora come algo (me da la impresión que es una solución sucia y que debe haber alguna otra mejor).
-Crear el objeto Comida dentro de la clase Víbora (sería como forzar la orientación a objetos ya que no existe relación entre Comida y Víbora).

Ambas alternativas me parecen malas. ¿Alguien tiene una mejor idea?

Espero haberme explicado bien. Si no, decidme y lo intento otra vez.

Muchas gracias,
Wofo.


Título: Re: [Ayuda] [C++] Juego de la víbora
Publicado por: amchacon en 15 Marzo 2013, 17:56 pm
¡Oh! ¡Que ilusión! Yo hize un juego de esos en mis tiempos. Tenía editor de niveles y todo:
https://dl.dropbox.com/u/69551225/Snake%20-%20Amchacon.rar

Al tema, yo lo que hize es que la clase Campo se encargase de las comprobaciones de colisión (entre las que se incluye Comida). Lo unico que necesitaba esque las clases Vibora y Comida les pasasen las coordenadas correspondientes.

Otra idea es usar los métodos friend (o metodos compartidos):
http://c.conclase.net/curso/?cap=032#inicio



Título: Re: [Ayuda] [C++] Juego de la víbora
Publicado por: Wofo en 15 Marzo 2013, 21:45 pm
¡Hombre muchas gracias!

Revisaré los recursos que me diste a ver qué tal me va. Estuve probando tu Snake y me gustó bastante aunque cuando entré a "Opciones" murió. ¿Tienes el source por ahí?

Saludos,
Wofo.


Título: Re: [Ayuda] [C++] Juego de la víbora
Publicado por: amchacon en 16 Marzo 2013, 13:31 pm
Fallo mío, se me olvido añadir algunos archivos. Vuelvetelo a bajar (por cierto lo de borrar nivel no lo llegué a implementar).

El código si quieres te lo dejo, pero lleva ya su tiempo y no es muy... Limpio xD:
https://dl.dropbox.com/u/69551225/Snake%20codigo%20-%20amchacon.rar



Título: Re: [Ayuda] [C++] Juego de la víbora
Publicado por: $Edu$ en 16 Marzo 2013, 13:37 pm
No necesitas hacer que Comer sea una clase, puede ser solo un metodo de la clase Vibora.


Título: Re: [Ayuda] [C++] Juego de la víbora
Publicado por: Wofo en 18 Marzo 2013, 15:31 pm
@amchacon
No te preocupes porque sea poco limpio. De todas maneras me servirá para aprender.

@Edu
Concuerdo contigo en que no es necesario que comer sea una clase. Sin embargo, creo que "Comida" sí puede ser una clase, donde tenga sus coordenadas, la cantidad de puntos que da, etc.

Muchas gracias. Ya postearé cuando tenga el juego terminado.
Wofo.