Programar Juegos Arcade
con Python y PygameLab 4: Camello
4.1 Descripción del Juego del Camello
La idea original del Camello proviene del Heath Users Group y fue publicada en el More BASIC Computer Games en 1979.
La idea es cabalgar con tu camello por el desierto mientras eres perseguido. Tienes que gestionar tu sed, el cansancio del camello y cuán alejado estás de los nativos que te persiguen.
Éste es uno de los primeros juegos que programé sobre un Apple //e. El juego es flexible. He tenido estudiantes que crearon una versión Star Wars del juego donde tenía que cabalgar un wampa a través de Hoth. Es fácil añadir tormentas de arena y otros eventos aleatorios para hacer más entretenido el juego. Aunque es un juego basado en texto, me he encontrado con algunos alumnos muy enganchados a él. Una vez vino un profesor a quejarse de que mis alumnos hacían mucho ruido jugando este juego en la “gran pantalla.”
4.2 Ejemplo del Camello
Ésta es un ejemplo del juego:
Bienvenido al Camello! Has robado un camello para atravesar el gran desierto del Mobi. Los nativos quieren que les devuelvas su camello y salen en persecución tuya! Tendrás que sobrevivir al desierto y correr más que los nativos. A. Beber de la cantimplora. B. Velocidad moderada hacia adelante. C. A toda velocidad hacia adelante. D. Para y descansa. E. Comprueba tu estado. Q. Salir. ¿Qué eliges? C Has recorrido 12 millas. A. Beber de la cantimplora. B. Velocidad moderada hacia adelante. C. A toda velocidad hacia adelante. D. Para y descansa. E. Comprueba tu estado. Q. Salir. ¿Qué eliges? C Has recorrido 17 millas. A. Beber de la cantimplora. B. Velocidad moderada hacia adelante. C. A toda velocidad hacia adelante. D. Para y descansa. E. Comprueba tu estado. Q. Salir. ¿Qué eliges? e Millas recorridas: 29 Veces que has bebido de la cantimplora: 3 Los nativos están a 31 millas detrás de ti. A. Beber de la cantimplora. B. Velocidad moderada hacia adelante. C. A toda velocidad hacia adelante. D. Para y descansa. E. Comprueba tu estado. Q. Salir. ¿Qué eliges? b Has recorrido 6 millas. ...y así hasta que... A. Beber de la cantimplora. B. Velocidad moderada hacia adelante. C. A toda velocidad hacia adelante. D. Para y descansa. E. Comprueba tu estado. Q. Salir. ¿Qué eliges? C Has recorrido 12 millas. Los nativos se están acercando! A. Beber de la cantimplora. B. Velocidad moderada hacia adelante. C. A toda velocidad hacia adelante. D. Para y descansa. E. Comprueba tu estado. Q. Salir. ¿Qué eliges? C Has recorrido 11 millas. Los nativos se están acercando! Has conseguido atravesar el desierto! Has ganado!
4.3 Guía de Programación
Estos son los pasos para completar este taller. Tienes total libertad de modificar y ampliar el taller. Intenta jugarlo con tus amigos y familia.
- Crea un programa nuevo e imprime la instrucciones sobre la pantalla. Haz esto
con múltiples declaraciones print. No vayas a usar una sola declaración
print y múltiples caracteres \n para separar cada cosa en una
línea.
Bienvenido al Camello! Has robado un camello para atravesar el gran desierto del Mobi. Los nativos quieren que les devuelvas su camello y salen en persecución tuya! Tendrás que sobrevivir al desierto y correr más que los nativos.
- Crea una variable booleana llamada hecho y establécela a False.
- Crea un bucle while que iterará mientras hecho sea False.
- Imprime lo siguiente dentro del bucle:
A. Beber de la cantimplora. B. Velocidad moderada hacia adelante. C. A toda velocidad hacia adelante. D. Para y descansa. E. Comprueba tu estado. Q. Salir.
- Pregúntale al jugador por la opción que elige. Asegúrate de poner un espacio antes de las comillas, de forma que lo que escriba el jugador no se mezcle con tu texto.
- Si el jugador elige Q, entonces estableces hecho como True. Usando algo como usuario_elige.upper(), en lugar de solo usuario_elige en tu declaración if, puedes hacer que no hayan problemas con las minúsculas/mayúsculas.
- Pruébalo y asegúrate de que puedes salir del juego.
- Antes del bucle principal del programa, créate variables para millas recorridas, sed, cansancio del camello. Inicialízalas con cero.
- Crea una variable para la distancia recorrida por los nativos y establécela a -20 (Veinte millas por detrás.)
- Crea y establece un número inicial de sorbos en la cantimplora.
- Añade un elif en el bucle principal de tu programa que mire si el usuario está preguntado por su
estado. Si es así, imprime algo como:
Millas recorridas: 0 Veces que has bebido de la cantimplora: 3 Los nativos están a 10 millas detrás de ti.
- >Añade un elif en el bucle principal de tu programa que gestione si el jugador quiere detenerse por la noche. Si es así, reinicia el cansancio del camello a 0. Imprime que el camello se congratula de ello, y desplaza a los nativos en una cantidad aleatoria de entre 7 y 14 millas más o menos.
- Añade un elif en el bucle principal de tu programa que gestione si el jugador quiere avanzar a toda velocidad. Si es así, avanza una cantidad aleatoria entre 10 y 20 incluidos. Imprime cuántas millas ha recorrido. Suma 1 a sed. Suma un número aleatorio entre 1 y 3 al cansancio del camello. Desplaza a los nativos una cantidad entre 7 y 14 millas.
- Añade un elif en el bucle principal de tu programa que gestione si el jugador quiere avanzar a velocidad moderada. Si es así, avanza una cantidad aleatoria entre 5 y 12, ambos incluidos. Imprime cuántas millas ha recorrido. Suma 1 a sed. Suma 1 al cansancio del camello. Desplaza los nativos una cantidad entre 7 y 14 millas.
- Añade un elif en el bucle principal de tu programa que gestione si el jugador quiere beber de la cantimplora. Si es así, asegúrate que queden tragos en la cantimplora. Si los hay, réstale 1 y devuelve la sed del jugador a cero. En caso contrario, que imprima error.
- En el bucle, que imprima “Estás sediento” si la sed del jugador está por encima de 4.
- Que imprima “Has muerto de sed” si la sed del jugador está por encima de 6. Establece hecho como true. Asegúrate de que tu código no imprima, a la vez, “Estás sediento” y “Haz muerto de sed!” Utiliza elif cuando sea pertinente.
- Que imprima “Tu camello se está cansando.” si el cansancio del camello está por encima de 5.
- Imprime “Tu camello ha muerto.” si el cansancio del camello está por encima de 8. Al igual que con los anteriores pasos, imprime uno o el otro. Sería una buena idea incluir una comprobación en la variable hecho de forma que no fueras a imprimir que tu camello se está cansando, después de que ya hubiera muerto de sed.
- Si los nativos te han capturado, imprime que han capturado al jugador y finaliza el juego.
- Si los nativos están a menos de 15 millas del jugador, que imprima “Los nativos se están acercando!”
- Si el jugador ha recorrido 200 millas por el desierto, que imprima que ha ganado y finaliza el juego. Asegúrate, eso sí, de que no hayan muerto antes de declararlos ganadores.
- Añade una oportunidad entre 20, de encontrar un oasis. Imprime que el jugador lo encouentra, que rellena la cantimplora, reinicia la sed del jugador y que el camello descanse.
- Prueba el juego, y afina los números para que se convierta en un reto y no en algo imposible. Arregla cualquier fallo que encuentres.
4.4 Pistas
- Recuerda que es una buena idea colocar líneas en blanco entre los bloques lógicos de tu programa. Por ejemplo, pon una línea en blanco después de las instrucciones y entre cada comando de usuario.
- Queda mejor escribir (una cuestión de estilo) while not hecho: que while hecho == False:
- Para evitar combinaciones confusas de mensajes, tales como “¡Has muerto de sed!” y “¡Has encontrado un oasis!” a la vez, usa el operador and. Como en if not hecho and sed > 4: í
You are not logged in. Log in here and track your progress.
English version by Paul Vincent Craven
Spanish version by Antonio Rodríguez Verdugo
Russian version by Vladimir Slav
Turkish version by Güray Yildirim
Portuguese version by Armando Marques Sobrinho and Tati Carvalho
Dutch version by Frank Waegeman
Hungarian version by Nagy Attila
Finnish version by Jouko Järvenpää
French version by Franco Rossi
Korean version by Kim Zeung-Il
Chinese version by Kai Lin