2010-02-05 30 views
24

Actualmente estoy aprendiendo C++, así que pensé que sería una buena idea intentar (re) programar algunos juegos "comunes" basados ​​en texto. (Pensando en Hunt the Wumpus, supongo que un número (pseudo) aleatorio generado por la computadora, ...)(basado en texto) Games for C++ practice

Sin embargo, no puedo encontrar ninguna buena fuente para tales tareas.

  • ¿Qué juegos basados ​​en texto podrían ser "educativos" para mí programar?
  • ¿Recuerdas un juego especial que has programado (escrito en C++ preferiblemente), que te enseñó mucho?
  • Sería bueno si pudiera incluir:
    • Un concepto general del juego
    • ¿Qué aspectos del lenguaje de programación C++ este juego requeriría/implican
+2

¡Gran pregunta! –

Respuesta

5

Estoy tratando de recordar algunas de las cosas divertidas que hice mucho cuando estaba en mi clase de CS de secundaria. No son todos los juegos, pero aquí va:

Animación basada en texto (ASCII) - Básicamente animé 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 era un generador de animación ASCII fotograma a fotograma.

Laberinto - Se usan caracteres Unicode en el mismo tipo de concepto. Obtuve la entrada del teclado con las teclas de flecha y volví a dibujar tu bloque atravesando el laberinto en función de tu entrada. Nuevamente, borrar la pantalla después de cada cuadro e imprimir el texto nuevamente.

Snake - concepto similar al anterior pero era un juego de serpientes.

Simple chat - este sondeó un archivo de texto compartido en un servidor central de nuestra escuela (que alguien accidentalmente le dio el nombre 0777) y facilitó básicamente una sala de chat realmente simple.

El beeper - este programa se volvió infame en mi escuela. Hasta XP aparentemente el buffer de sonido en las computadoras con Windows podría sobrecargarse fácilmente por el texto. Al ejecutar esto, la computadora emitió un pitido hasta que lo apagaste (y en la mayoría de los casos también hizo que se empantanara tanto que debiste reiniciarlo). Definitivamente enojado con la administración de nuestra escuela secundaria. Además, es solo un 2-liner.

char o = 7; 
while(1) cout << o; 

De todos modos, no estoy seguro si esto le ayudó a obtener alguna idea, pero simplemente use su imaginación. Puede divertirse mucho sin tener que saber mucho sobre programación. Solo sé creativo.

+4

Para el zumbador, el C++ voluntariamente incluso le proporciona un escape para ayudar a su trabajo: intente * para (;;) cout << '\ a'; *: P –

+0

Por curiosidad sobre el zumbador, ¿no podría simplemente terminar eso? programa con '[Ctrl] + [C]' en lugar de reiniciar la máquina? – stakx

+0

Con '[Ctrl] + [C]' en Windows :)? En términos más generales, es un dolor de cabeza matar un programa que se está volviendo loco, porque invocar al administrador de tareas puede no ser trivial y requiere una gran cantidad de recursos. Tiene '[Alt] + [F4]' pero una vez más si la máquina está atascada ... a veces no funciona. –

5

Zork de ¡curso!

+3

Parece que el que pregunta es un principiante de C++; volver a implementar un juego de aventura de texto con un analizador avanzado probablemente sea un desafío. –

+2

Puntos de bonificación si lo implementa como un clásico de culto. –

+1

De hecho, hice algo muy similar a esto cuando estaba aprendiendo C++ y lo encontré MENSIVAMENTE útil. Claro, lo escribiría 1000000 veces mejor ahora, pero aprendí muchas lecciones. Comience simple. –

11

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 (en base a las 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, yo tendría que decir que yo estaba pensando, seleccione una pregunta que distingue el personaje elegido de dictador/persona sentada de Chandler from Friends, y luego decir si la respuesta a mi pregunta es "sí" o "no". Esta pregunta se recuerda y el programa se vuelve cada vez más conocedor de los personajes y dictadores de sit-com.

Dependiendo de cómo se hizo esto, esto podría ayudarle a aprender:

  • consola de E/S (para preguntar al usuario las preguntas)
  • árboles binarios (cada pregunta es un nodo en el árbol binario y los nodos secundarios son las preguntas que usted hace en función de las respuesta sí/no)
  • File I/O (si guarda el árbol en el disco)
+0

Con un poco más de investigación, esto se compara con el programa 'Eliza' o el programa de psicólogo. –

0

debe ir al partido de texto fresca nunca, Elite.

Puede obtener el código fuente en código C muy legible y muy interesante. La fuente está disponible en Ian Bell's site.

Elite era famoso por su universo "infinito". Es un diseño bastante inteligente.

1

Una serie de juegos de mesa básicos que has jugado durante tu infancia. Battleships! (En algunos países, conocido como subs) -> Esto te enseña a jugar con arreglos, pasando búferes. También puede (si codifica una IA) lograr que juegue con eso.

Damas/Ajedrez -> Implementar una IA va más allá del aprendizaje básico, pero es bastante fácil codificar una representación de texto del juego.

Stratego o wargames básicos -> estructuras de datos y OOP.

0

Cazar a los Wumpus sería fantástico. Es un juego relativamente simple, pero la mayoría de los ejemplos son código de procedimiento antiguo en BASIC. Puede comenzar desde cero y escribir una versión de OO en C++.

Conway's Game of Life es otra muy buena, ya que no requiere ninguna interacción del usuario. Escribí una versión en 3D al comienzo de mi carrera y la encontré útil. Y es fascinante ver :-)

<lado>
realmente echo de menos los viejos tiempos, cuando las revistas de informática tenían listados de programas en la parte trasera que puede escribir en ti mismo. Tenían juegos, utilidades, lo que sea. Aprendí mucho solo copiando lo que otros habían escrito.
</aparte >

3

Facebook tiene algunos puzzles fresco de ingeniería que me gustan, pero pueden ser un poco avanzado para que acaba de empezar. Soy un programador regular de C++, así que resolví los acertijos primero en Python, luego en C++.

Salida: Facebook Engineering Puzzles

Parece que tienen todo, desde fácil (entremeses) para todo un reto (buffet).

Creo que estos acertijos fueron creados para reclutar, pero son divertidos por sí mismos. (¿Tal vez soy un poco geek?)

Además, tienen un beneficio adicional: nunca se sabe cuándo necesitarás un trabajo.

1

Una buena fuente de juegos clásicos es

http://www.atariarchives.org/basicgames/

Los juegos son en edad escolar básica pero aprender a traducir y escribir estos en cualquier idioma sin duda sería útil para la obtención de habilidades.

Por ejemplo, si quisiera abordar 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 de los juegos.

No es tanto lo que haces, siempre que se extiende sus habilidades y se mueve de lo trivial a algo menos ...

Encontrar un mentor para revisar su código y hacer sugerencias sobre lo que debe hacer o tratar diferente.

0

De vuelta en el día, hice una ruleta multijugador en el asiento caliente que me enseñó algunos conceptos básicos, todos basados ​​en texto. Básicamente, los jugadores se turnaban para hacer apuestas sobre varios números en diferentes niveles de apuestas, habría un sorteo (con sonidos de animación &), doble o nada para el ganador. Fue muy divertido.

1

¿Qué tal Nim? Hay dos variaciones, una con pilas múltiples 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 típicamente alrededor de 3) . La persona que toma el último token gana o pierde.

Hace un tiempo cuando implementé una versión del segundo juego que permitía especificar todos los parámetros del juego, luego elegía ir primero o no para garantizar una victoria. Ah, buenos momentos.

+0

Divertido, me tomó un tiempo descubrir que con algunas matemáticas básicas puedes ganar todas las veces (la segunda versión), siempre y cuando decidas quién comienza después de conocer el número total de piezas ... entonces mi hermanita me odió: p –

0

damas. Me divertí escribiendo esto en una mezcla de COBOL y Fortran hace un tiempo largo

hay una verdadera emoción de ver a su acto de creación inteligentemente

por supuesto que va a través de muchas iteraciones donde actúa mudo delante Llegas a ese punto

0

Jotto es un gran juego que es casi la complejidad adecuada para alguien que aprende. Tienes que pensar mucho sobre un par de buenas estructuras de datos, pero puedes armar fácilmente un juego divertido en menos de 1000 líneas de C++.

0

Usted debe verificar el sitio de la 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 cambio, se utilizan algunos lenguajes de programación especializados llamados Inform, TADS y Hugo.

Usted encontrará una gran cantidad de juegos de texto (incluyendo Zork, guía de Hithhiker a la galaxia, Wumpus ...) en el ifarchive:

http://ifarchive.org/

puede encontrar una implementación de una de mis uno juegos en C++ aquí:

http://www.caad.es/baltasarq/if/csa/csa-cpp.zip

podría ser útil, siempre que se puede leer en español. De todos modos, me mudé a Inform 6 yo mismo.

0

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 comencé con el tic-tac-toe antes de eso.

Etudes for Programmers tiene algunos proyectos divertidos, si puede encontrar una copia.

0

solía haber un lenguaje de escritura de aventura (es decir, juego basado en texto) llamado ALPS y recuerdo codificar una versión de esto, más tcp y manejador de usuario múltiple rudimentario, como mi primer proyecto de C/C++ (inicialmente el primero, finalmente el último). El proyecto era "módulos" del tamaño de un bocado, con un criterio definitivo y un resultado final divertido: lo usé para hacer un pintoresco MUD con mi poderoso 32K BBC Micro. Codificando un C/C++ ALPS terminó enseñándome el lingos en literalmente una semana - a un nivel de trabajo decente (lejos de la mente experta).

+0

Esto no proporciona una respuesta a la pregunta. Para criticar o solicitar aclaraciones de un autor, deje un comentario debajo de su publicación; siempre puede comentar sus propias publicaciones, y una vez que tenga suficiente [reputación] (http://stackoverflow.com/help/whats-reputation) lo hará poder [comentar cualquier publicación] (http://stackoverflow.com/help/privileges/comment). –

+0

No estoy de acuerdo. Responde las preguntas, pero no quise citar nombres, ya que podría ser potencialmente útil. Por lo tanto, denominé el lenguaje de aventuras cuyo formato modularizado era una herramienta de aprendizaje ideal, dejando que el que preguntara mirara más si era curioso. ¿Cómo es eso menos apropiado que el capítulo citando a Elite como un juego de texto (¿lo sabías? En ese momento nada podría haber sido menos juego de texto!) - por más que apruebo que Ian Bell reciba una merecida mención ... – yms