Título: [C++] [Aporte] Buscaminas por consola Publicado por: Wofo en 11 Marzo 2013, 16:20 pm Buenas gente, luego de algunos días trabajando en un buscaminas para aprender, les dejo el código para que lo puedan aprovechar.
Lo programé poniendo especial empeño en que fuera orientado a objetos y exclusivamente C++ (intenté no usar nada de C). También escribí muchos comentarios para que quede todo más claro y sea muy fácil de entender. Espero que a alguien le sirva para aprender. Por lo menos a mí me sirvió bastante. Una particularidad del programa es que, gracias a que está orientado a objetos, es posible crear una interfaz gráfica sin tener que modificar ni una sola línea de código dentro de las clases. Conceptos implementados: -Herencia -Manejo de errores (excepciones) -Uso de la clase vector -Generación de números aleatorios *Nota: este es un segundo upload con correcciones para mejorar el manejo de excepciones y una mejor orientación a objetos Programa: Buscaminas IDE: Ninguna (Notepad++) *Se puede compilar escribiendo g++ main.cpp -o archivo_compilado Link: http://depositfiles.com/files/z79itfr7f ________ Por si alguien prefiere copiar el código en vez de descargarlo de depositfiles, lo dejo aquí también: *Es importante guardar los archivos con el mismo nombre, para que funcionen los includes correctamente. main.cpp Código
board.cpp Código
console_board.cpp Código
square.cpp Código
random_number.cpp Código
Título: Re: [C++] [Aporte] Buscaminas por consola Publicado por: daryo en 11 Marzo 2013, 21:47 pm excelente aporte seguro aprendere mucho de este code ;-)
Título: Re: [C++] [Aporte] Buscaminas por consola Publicado por: amchacon en 12 Marzo 2013, 16:16 pm Código: [code=cpp]class Random_Number { Para que usas seed? *_* Por otro lado: Código Lanzar cadenas sueltas puede resultar complejo de capturar además pueden colisionar con las excepciones de otras clases.. Lo mejor es hacerte una clase para las excepciones: Código
Siguiendo ese ejemplo: Código
Se pueden hacer clases que hereden de esta si quieres ser más especifico (por ejemplo, Excepcion_Minas, Excepcion_Aleatorios...). Otra cuestión es: Código
Entiendo que no la has metido dentro de la clase para que sea más general. No obstante creo, que al ser una función relacionada con el tablero debería ir dentro. Para asegurarnos la independencia de cout, lo que haremos es devolver un string: Código
El programador usuario podrá optar por mostrarlo con cout, interpetrarlo para una interfaz gráfica o bien usarlo en un archivo de depuración. Por lo demás muy bueno y muy buen ordenado. Me gusta :)[/code] Título: Re: [C++] [Aporte] Buscaminas por consola Publicado por: Wofo en 12 Marzo 2013, 17:37 pm Gracias amchacon por tus comentarios.
La verdad es que no me había dado cuenta de que ese "seed" estaba ahí. Habrá que eliminarlo. Lo de las excepciones me parece una excelente idea, pero no entiendo por qué usas "struct" en vez de "class". Por otro lado, meter el render dentro de la clase no me termina de convencer por la dificultad que significa procesar ese string para transformarlo en una interfaz visual. Creo que es excesivamente complicado (mucho más que usar los métodos que provee la clase Board). Quizá una buena alternativa sería crear una tercera clase que se llame Screen o algo por el estilo, donde esté el método render. Gracias denuevo! Wofo. Título: Re: [C++] [Aporte] Buscaminas por consola Publicado por: amchacon en 12 Marzo 2013, 18:05 pm Lo de las excepciones me parece una excelente idea, pero no entiendo por qué usas "struct" en vez de "class". Cuando todos los miembros de un objeto son públicos, uso struct en vez de class... Simple manía, no hay ninguna otra razón.Por otro lado, meter el render dentro de la clase no me termina de convencer por la dificultad que significa procesar ese string para transformarlo en una interfaz visual. Creo que es excesivamente complicado (mucho más que usar los métodos que provee la clase Board). Quizá una buena alternativa sería crear una tercera clase que se llame Screen o algo por el estilo, donde esté el método render. Cierto para lo visual puede ser complicado pero aún así no lo descataría... Para el modo consola sería bastante sencillo la representacion (cout<<board.ToString(); ) y tener un "mapa" en modo texto puede ser útil para una depuración en una interfaz visual.Puedes crear un método virtual "Dibujar", que el programador herede la clase y lo implemente... Título: Re: [C++] [Aporte] Buscaminas por consola Publicado por: Wofo en 15 Marzo 2013, 11:18 am Me parece excelente la idea de crear una subclase. Acabo de hacerlo y de subir el code.
Las excepciones las hice usando la clase estándar runtime_exception (derivada de exception). ¡Muchas gracias! |