4.-Taller virtual de videojuegos. Jugamos con una IA y con los cops

Bucles while Los bucles son giros, si ejecutamos el juego y se acaba y lo queremos volver a jugar será necesario algo que haga que vuelva al inicio por ejemplo.

¿Cómo se hace? La sintaxis es muy semejante a la del if, pero escribiendo la palabra while, la condición y añadimos : (dos puntos), indentamos ese bloque de código pero vamos a poner unos ejemplos para entenderlo bien:

El resultado es, como podemos observar,los números del 1 al 7,al imprimir en cada vuelta y después de aumentar en uno el número. Ahora el siguiente ejemplo pero cambiando la condición y el orden de print.Piensa si saldrá lo mismo o no :)

El bucle while ejecutará el bloque de código siempre y cuando la condición que tenga sea cierta, una vez que no lo sea, se dejará de ejecutar. Una cosa que mola y es una de las primeras cosas que nos hacemos lios con los bucles es que puede que la condición siempre sea válida, entonces entramos en un bucle infinito y hasta que acabe el universo estará dando vueltas y vueltas y vueltas, con lo cual si lo que quieres es eso bien, pero si tu intención no era esa hay que saber como van las condiciones en los bucles while. Aquí tenemos un ejemplo muy representativo de cómo es un bucle y cómo puede seguir hasta cuando tú decidas.Por cierto está basado en Mr.Robot.

Jugamos con una IA

Para repasar un poco los conceptos que vimos en el anterior taller https://elbinario.net/2018/04/30/taller-virtual-variables-entornos-caminos hemos creado un juego conversacional de texto, que usa condicionales y print(y algún que otro comando) la idea es que os bajéis el juego, lo juguéis, y luego toquéis el código para cambiarlo y darle el formato o el final que os hubiera gustado que tenga, el código es muy accesible y si visteis el anterior articulo lo entenderéis fácilmente. Recordar que aprender jugando es mas accesible y divertido y modificando y tocando el código de otras se aprende muchísimo.

Podéis bajar el juego de aqui

Para ejecutarlo, podéis usar IDLE como vimos en el articulo anterior, o directamente en consola con:

O directamente en consola con:

python juego_conversacional.py

Jugamos con los cops: Beware the cops

Para repasar lo aprendido y con todo el trajín que hay de que si la poli para aquí o para allá,(que si a lxs trabajadorxs sexuales nos salen hijos cops) podemos jugar a un jueguecillo que llamamos “All cops are beautiful” donde tenemos que escapar de los cops y alcanzar la mayor puntuación para evitar que nos cacen y nos den hasta en el carné de identidad. Ojo aún no está a prueba de errores de usuario para poder reutilizarlo cuando expliquemos las excepciones.Aquí el juego, a ver qué puntuación conseguís.

Para repasar

Los comentarios se utilizan para dar explicaciones a ciertas partes del código y también para deshabilitar partes del mismo, se utiliza poniendo una almohadilla delante como en el siguiente ejemplo:

# hola soy un comentario y el intérprete me omite

¿Pero seguro de verdad que éste símbolo (#) de denomina solamente almohadilla? Vamos a ser un poco curiosas y buscar cómo se llama, podéis contestar en los comentarios. Con nuestro intérprete podemos hacer operaciones matemáticas desde las más sencillas, hasta las más complejas. Las más básicas son:

  • Suma (+)
  • Resta (-)
  • Multiplicación (*)
  • División (/)
  • Módulo (%) quizás parezca que significa el porcentaje de un número, pero nada más lejos de eso, significa el resto de una división. Por ejemplo si dividimos 100/16 obtenemos como resto 4, ese sería el módulo.

>>>100 % 16

Nos devolvería 4 que es el resto o módulo.

Como podéis observar para programar en Python, aparte de ser muy metódica y comprobar continuamente lo escrito, es necesario saber que la tabulación (los espacios) forman parte del código y por eso también es un lenguaje que enseña a formatear de manera correcta. Si no lo hacéis, devolverá algo asi como IndentationError: expected an indented block No os preócupeis al principio será normal tener ese tipo de errores sintácticos, así como los de lógica. Pero con el paso del tiempo y a través de la práctica esos errores se van aminorando.

6 Comments

  1. Sin buscar, recuerdo que los hablantes latinos de EEUU llaman “cajón” al símbolo “#” por lo tango fue un término exportado a Argentina cuando se “liberaron” las telecomunicaciones y contratábamos servicios proveídos desde USA.

    Edit: he recordado que antes de eso lo llamábamos “numeral”

    1. En realidad hay muchas formas de llamarlo, una de ellas que era la que estábamos pensando es “octothorpe” u octothorp en inglés. Gracias por comentar querido.

  2. ¿una pregunta? en python se puede modularizar o es siempre un solo archivo?? es decir, por ejemplo este ejercicio ya es un archivo grande ¿se puede separar pregunta por pregunta?

    1. Si, muy buena pregunta. Como bien te han comentado en la sala tan maravillosa que tenemos, en Python existen los módulos para poder integrar en otro fichero, Pero ojo saber modularizar hay que hacerlo con cabeza y NO todo tiene una única manera de proceder, eso es lo que hace especial a programar. Una de las cosas que veremos más adelante será estructurar los juegos con paradigmas que den una visión de la obtención de los datos orientada a objetos (POO), que sería una opción que genera un código más inteligible en cierta manera.
      Volviendo al tema de modularizar, es interesante si quieres ver si ese código sigue un patrón de preguntas y respuestas, encapsularlas en funciones (que aún no hemos visto) y que doten de contenido per se para poder crear módulos e invocarlos en un fichero principal por ejemplo :)

Deja una respuesta

Tu correo no será publicado. Los campos obligatorios están marcados *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax