sencillos - Juegos(basados en texto) para la práctica de C++
snake c++ (16)
Actualmente estoy aprendiendo C ++ y pensé que sería una buena idea tratar de (re) programar algunos juegos "comunes" basados en texto. (Pensando en Hunt the Wumpus, Adivina un (pseudo) número aleatorio generado por la computadora, ...)
Sin embargo, no puedo encontrar buenas fuentes para tales tareas.
- ¿Qué juegos de texto podrían ser "educativos" para que los programe?
- ¿Recuerda algún juego especial que haya programado (escrito en C ++ preferiblemente), que le enseñó mucho?
- Sería bueno si pudieras incluir:
- Un concepto general del juego.
- ¿Qué aspectos de la programación en lenguaje C ++ este juego requeriría o involucraría?
¿Qué tal Nim ? Hay dos variaciones, una con múltiples pilas donde se le permite tomar tantas fichas en una sola pila como desee, y una con una sola pila donde se le permite tomar fichas 1-N a la vez (N generalmente alrededor de 3) . La persona que tome el último token gana o pierde.
Hace mucho tiempo, cuando implementé una versión del segundo juego que te permitía especificar todos los parámetros del juego, luego elegiría ir primero o no para garantizar una victoria. Ah, buenos tiempos.
Cazar al Wumpus sería fantástico. Es un juego relativamente simple, pero la mayoría de los ejemplos son códigos de procedimiento antiguos en BASIC. Podría comenzar desde cero y escribir una versión OO en C ++.
El juego de la vida de Conway es otro bueno, ya que no requiere la interacción del usuario. Escribí una versión en 3D al principio de mi carrera y la encontré útil. Y es fascinante verlo :-)
<aside>
De hecho, extraño los viejos tiempos, cuando las revistas de computadoras tenían listados de programas en la parte posterior que podrías escribir en ti mismo. Tenían juegos, utilidades, lo que sea. Aprendí mucho simplemente copiando lo que otros habían escrito.
</aside>
Debes ir al mejor juego de texto de todos los tiempos, Elite .
Puede obtener el código fuente en código C muy interesante y muy legible. La fuente está disponible en el sitio de Ian Bell .
Elite fue famoso por su universo "infinito". Es un diseño bastante inteligente.
Debes revisar el sitio para ver ficción interactiva en inglés:
http://www.intfiction.org/forum/
Aquí es donde los nuevos desarrolladores de juegos de texto se reúnen para discutir sobre ellos. Sin embargo, la implementación ya no se lleva a cabo en C ++, en su lugar se utilizan algunos lenguajes de programación especializados llamados Inform, TADS y Hugo.
Encontrarás muchos juegos de texto (incluyendo Zork, la guía de Hithhiker sobre la galaxia, Wumpus ...) en el ifarchive:
Puedes encontrar una implementación de uno de mis juegos en C ++ aquí:
http://www.caad.es/baltasarq/if/csa/csa-cpp.zip
Podría ser útil, siempre que se pueda leer en español. De todos modos, me he movido para informar 6 yo mismo.
El legendario NetHack parece ser una excelente opción y originalmente en la interfaz gráfica de usuario ASCII. Sin embargo, se implementa en C, no en C ++, aunque puede ser un buen material educativo. Aquí encontrarás todos los detalles:
En el pasado, hice una ruleta multijugador que me enseñó algunos conceptos básicos, todos basados en texto. Básicamente, los jugadores se turnarían para hacer apuestas en varios números en diferentes niveles de apuestas, habría un sorteo (con animación y sonidos), doble o nada para el ganador. Fue muy divertido.
Estoy tratando de recordar algunas de las cosas divertidas que hice cuando estaba en mi clase de CS de la escuela secundaria. No son todos los juegos pero aquí va:
Animación basada en texto (ASCII) : básicamente animé a un dragón ASCII que entraba en la terminal, decía algo y se iba. Después de "dibujar" cada fotograma, se borró, así que básicamente se trataba de un generador de animación ASCII fotograma a fotograma.
Laberinto : se utilizan caracteres Unicode en una especie del mismo concepto. Obtuve la entrada del teclado de las teclas de flecha y rediseñé tu bloque pasando por el laberinto en función de tu entrada. Nuevamente, borrando la pantalla después de cada marco e imprimiendo el texto nuevamente.
Serpiente : concepto similar al anterior, pero era un juego de serpientes.
Chat simple : esta encuesta un archivo de texto compartido en un servidor central en nuestra escuela (que alguien accidentalmente modificó 0777) y facilitó básicamente una sala de chat realmente simple.
El beeper - este programa se hizo infame en mi escuela. Hasta XP aparentemente, el búfer de sonido en las computadoras con Windows podría sobrecargarse fácilmente por texto. Ejecutar esto hizo que la computadora emitiera un pitido hasta que lo apagara (y en la mayoría de los casos también causó que se atascara tanto que tuvo que hacer un reinicio completo). Definitivamente enojado con la administración de nuestra escuela secundaria. Además, es sólo un 2-liner.
char o = 7;
while(1) cout << o;
De todos modos, no estoy seguro de si esto te ayudó a obtener alguna idea, pero solo usa tu imaginación. Puedes divertirte mucho sin tener que saber mucho sobre programación. Solo se creativo.
Facebook tiene algunos geniales rompecabezas de ingeniería que me gustan, pero pueden estar un poco avanzados solo para comenzar. Soy un programador regular de C ++, así que resolví los rompecabezas primero en Python, luego en C ++.
Echa un vistazo a: Facebook Engineering Puzzles
Parece que tienen todo, desde fácil (Hors d''oeuvre) hasta bastante desafiante (Buffet).
Creo que estos rompecabezas se crearon para reclutar, pero son divertidos por sí mismos. (Tal vez soy un poco geeky?)
Además, tienen un beneficio adicional: nunca se sabe cuándo es posible que necesite un trabajo.
Juegos de mesa como damas y Othello. En los años 90 tuve una competencia Othello-AI con mis compañeros de trabajo. Creo que empecé con tic-tac-toe antes de eso.
Etudes para programadores tiene algunos proyectos divertidos, si puedes encontrar una copia.
Una buena fuente de juegos clásicos es
http://www.atariarchives.org/basicgames/
Los juegos son básicos en la vieja escuela, pero aprender a traducirlos y escribirlos en cualquier idioma sería útil para adquirir habilidades.
Por ejemplo, si quisiera enfrentarse a algunos juegos de cartas, sería bueno crear encabezados, funciones, clases y poner código en bibliotecas que podrían reutilizarse entre dos o más juegos.
No es tanto lo que haces como el tiempo que estira tus habilidades y se mueve de lo trivial a algo menos ...
Encuentre un mentor para revisar su código y hacer sugerencias sobre qué intentar o hacer diferente.
Una serie de juegos de mesa básicos que has jugado durante tu infancia. ¡Acorazados! (En algunos países, conocido como subs) -> Esto te enseña a jugar con matrices, pasar buffers. También puede (si codificas una IA) hacer que juegues con eso.
Damas / Ajedrez -> Implementar una IA está más allá del aprendizaje básico, pero es bastante fácil codificar una representación de texto del juego.
Juegos de estrategia o juegos de guerra básicos -> Estructuras de datos y POO.
Una versión de autoaprendizaje de "20 preguntas" puede ser bastante divertida (si no está familiarizado con esto, hay una implementación bastante divertida de esto en Guess the Dictator / Sit-Com Character ).
Una sesión de ejemplo (basada en preguntas de este sitio web):
Are you female? > N Are you overweight? > N Do you live in an apartment building? > Y Do you travel for your job? > N Do you have strange schemes to make money? > N Do you live in California? > N Are you a new doctor? > N Is your father gay? > Y Are you gay? > N Are you an actor? > N Are both your parents gay? > N Are you black? > N I guess you are Chandler from Friends, am I right? > Y
En este punto, si hubiera respondido N, tendría que decir en quién estaba pensando, elegir una pregunta que distinga al personaje dictador / sitcom de Chandler de mis amigos elegido y luego decir si la respuesta a mi pregunta es " si o no". Luego se recuerda esta pregunta, y el programa se vuelve cada vez más y más informado sobre los personajes y dictadores de sitcom.
Dependiendo de cómo hiciste esto, esto podría ayudarte a aprender:
- Consola I / O (para hacerle al usuario las preguntas)
- Árboles binarios (cada pregunta es un nodo en el árbol binario, y los nodos secundarios son las preguntas que se formulan en función de la respuesta sí / no)
- Archivo de E / S (si guarda el árbol en el disco)
juego de damas. Me divertí mucho escribiendo esto en una mezcla de cobol y fortran hace mucho tiempo
Hay una verdadera emoción al ver a tu creación actuar inteligentemente
por supuesto, usted pasa por muchas iteraciones en las que actúa como un tonto antes de llegar a ese punto
solía haber un lenguaje de escritura de aventuras (es decir, un juego basado en texto) llamado ALPS y recuerdo haber codificado una versión de este, más tcp y un controlador multiusuario rudimentario, como mi primer proyecto C / C ++ (inicialmente el primero, finalmente el último). El proyecto fue cuidadosamente "módulos" de tamaño pequeño con un criterio definitivo y un resultado final divertido: lo usé para hacer un MUD pintoresco con mi poderoso BBC Micro de 32K. La codificación de un C / C ++ ALPS terminó enseñándome los lingos en una semana, literalmente, a un nivel de trabajo decente (lejos de lo que piensan los expertos).
Jotto es un gran juego que tiene la complejidad adecuada para que alguien aprenda. Tienes que pensar mucho en un par de buenas estructuras de datos, pero puedes armar fácilmente un juego divertido en menos de 1000 líneas de C ++.
Zork por supuesto!