100% encontró este documento útil (1 voto)
366 vistas12 páginas

Simón Dice - Tutorial

Este documento describe las distintas etapas de desarrollo de un juego tipo Simón dice en Python. Inicialmente se crean listas para almacenar los colores generados aleatoriamente y las respuestas del jugador. Luego se añaden funcionalidades como detectar si el jugador acierta, repetir el juego hasta que falle y permitir ingresar múltiples respuestas. Finalmente, se borra la pantalla y se agregan pausas entre colores para emular el juego original.

Cargado por

alejandrocjoos2
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
366 vistas12 páginas

Simón Dice - Tutorial

Este documento describe las distintas etapas de desarrollo de un juego tipo Simón dice en Python. Inicialmente se crean listas para almacenar los colores generados aleatoriamente y las respuestas del jugador. Luego se añaden funcionalidades como detectar si el jugador acierta, repetir el juego hasta que falle y permitir ingresar múltiples respuestas. Finalmente, se borra la pantalla y se agregan pausas entre colores para emular el juego original.

Cargado por

alejandrocjoos2
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 12

Simón dice

TUTORIAL - PYTHON
Iniciamos con un código básico:
import random 1) Primero, incluimos la funcionalidad import random
para poder trabajar con números aleatorios.
2) Creamos una lista con las cuatro posibilidades que
colores = ["AMAR", "AZUL", "VERD", "ROJO"] son los colores.
3) Creamos una lista vacía llamada secuenciaSimon que
secuenciaSimon = [] va a guardar los colores al azar que vaya
generando.
4) reamos una variable llamada azar que en vez de
usar la funcionalidad random.randint() y un if, usará
azar = random.choice(colores) random.choice() que tiene el mismo efecto: elegir un
elemento aleatorio de la lista en cuestión.
secuenciaSimon.append(azar) 5) Usando el método append, se añadirá el contenido
de la variable azar a la lista secuenciaSimon.
secuenciaJugador = [] 6) Creamos una lista vacía llamada secuenciaJugador
que albergará los intentos de adivinar del jugador
en cada ronda.
print(secuenciaSimon) 7) Finalmente, escribimos la secuencia de colores
generada por la computadora y guardada en la
lista secuenciaSimon.

Si ejecutamos este código, por lo pronto mostrará un


único color al azar:
import random

colores = ["AMAR", "AZUL", "VERD", "ROJO"]


secuenciaSimon = []
No obstante, para que el jugador pueda adivinar, deberemos crear la
variable respuestaUsuario y usar un input. También se deberá usar el
azar = random.choice(colores) método append para ir guardando las respuestas del usuario en la lista
secuenciaJugador.
secuenciaSimon.append(azar)
Como vemos en la ejecución, ahora permite al usuario adivinar:
secuenciaJugador = []

print(secuenciaSimon)

respuestaUsuario = input("Ingresá AMAR/AZUL/VERD/ROJO:")


secuenciaJugador.append(respuestaUsuario)
import random
Sin embargo, el programa aún no es
capaz de detectar si el jugador ha
colores = ["AMAR", "AZUL", "VERD", "ROJO"] acertado o no, para lo que agregaremos
secuenciaSimon = [] un if que compare el primer elemento de
la lista secuenciaJugador –los arriesgados
por el usuario- con el primer elemento de
azar = random.choice(colores) la lista secuenciaSimon –es decir, los
generados por la computadora. En caso
secuenciaSimon.append(azar) de no adivinar, escribiremos un mensaje
de error y mostraremos el verdadero
secuenciaJugador = [] contenido de la lista secuenciaSimon.

Como observamos a continuación, al


print(secuenciaSimon) ejecutarlo hace la comprobación
requerida:

respuestaUsuario = input("Ingresá AMAR/AZUL/VERD/ROJO:")


secuenciaJugador.append(respuestaUsuario)

if secuenciaJugador[0] != secuenciaSimon[0]:
print("Perdiste. La secuencia era:", secuenciaSimon)
import random Para que el juego vaya acumulando
colores = ["AMAR", "AZUL", "VERD", "ROJO"] distintos colores como en el Simón
dice, necesitaremos que estas
secuenciaSimon = [] acciones se repitan hasta que el
usuario pierda. Para ello,
perdio = False englobaremos las acciones dentro
de un while condicionado por una
variable de nombre perdio que será
while perdio != True:
de tipo booleana: True o False.
azar = random.choice(colores)
Al ejecutarlo, podemos notar que
secuenciaSimon.append(azar) ahora va acumulando nuevos
colores:
secuenciaJugador = []
print(secuenciaSimon)

respuestaUsuario = input("Ingresá AMAR/AZUL/VERD/ROJO:")


secuenciaJugador.append(respuestaUsuario)

Sin embargo, el usuario aún puede


if secuenciaJugador[0] != secuenciaSimon[0]: ingresar una única respuesta por
print("Perdiste. La secuencia era:", secuenciaSimon) ronda.

perdio = True
import random
Para que el usuario pueda
colores = ["AMAR", "AZUL", "VERD", "ROJO"] ingresar la cantidad de
secuenciaSimon = [] colores que deba adivinar,
perdio = False colocaremos el input y el
append en cuestión dentro de
un bucle for sujeto a la
while perdio != True:
cantidad de elementos que
azar = random.choice(colores) componen la lista
secuenciaSimon.append(azar) secuenciaSimon.

secuenciaJugador = [] De esta manera, al ejecutarlo


print(secuenciaSimon) permitirá ingresar y adivinar
la cantidad necesaria de
for i in range(len(secuenciaSimon)): colores:
respuestaUsuario = input("Ingresá AMAR/AZUL/VERD/ROJO:")
secuenciaJugador.append(respuestaUsuario)

if secuenciaJugador[0] != secuenciaSimon[0]:
print("Perdiste. La secuencia era:", secuenciaSimon)
perdio = True
import random
Sin embargo, necesitamos que
colores = ["AMAR", "AZUL", "VERD", "ROJO"] los colores que va generando
secuenciaSimon = [] la computadora se muestren
perdio = False de a uno y no todos juntos.
Para ello, comenzaremos por
usar un bucle for para
while perdio != True:
mostrar sus elementos en
azar = random.choice(colores) lugar de usar la expresión
secuenciaSimon.append(azar) print(secuenciaSimon).

secuenciaJugador = [] Al ejecutarlo, se verá más


for i in range(len(secuenciaSimon)): estético, pero ciertamente aún
no conseguiremos el efecto
print(secuenciaSimon[i])
deseado:
for i in range(len(secuenciaSimon)):
respuestaUsuario = input("Ingresá AMAR/AZUL/VERD/ROJO:")
secuenciaJugador.append(respuestaUsuario)

if secuenciaJugador[0] != secuenciaSimon[0]:
print("Perdiste. La secuencia era:", secuenciaSimon)
perdio = True
import random
import time
import os Para que la pantalla se vaya borrando
después de mostrar cada color y espere
colores = ["AMAR", "AZUL", "VERD", "ROJO"] unos momentos antes de mostrar el
secuenciaSimon = []
perdio = False siguiente, usaremos dos funcionalidades:
time.sleep() y os.system(‘cls’) del modo que
while perdio != True: acá se muestra.
azar = random.choice(colores)
secuenciaSimon.append(azar) De esta manera, al ejecutarlo, primero se
secuenciaJugador = []
mostrará el color:
os.system('cls')

for i in range(len(secuenciaSimon)):
time.sleep(0.1) Luego, desaparecerá y dará lugar al
print(secuenciaSimon[i])
time.sleep(1) siguiente color. Una vez mostrados todos los
os.system('cls') colores, uno por uno, permitirá al usuario
adivinar los mismos, poniendo a prueba su
for i in range(len(secuenciaSimon)): memoria:
respuestaUsuario = input("Ingresá AMAR/AZUL/VERD/ROJO:")
secuenciaJugador.append(respuestaUsuario)

if secuenciaJugador[0] != secuenciaSimon[0]:
print("Perdiste. La secuencia era:", secuenciaSimon)
perdio = True
import random
import time
import os

colores = ["AMAR", "AZUL", "VERD", "ROJO"]


secuenciaSimon = []
perdio = False
Aunque todo parece funcionar, al
while perdio != True: ejecutarlo nos encontramos con un
azar = random.choice(colores)
secuenciaSimon.append(azar) primer inconveniente: la secuencia era
secuenciaJugador = [] ROJO, VERDE, AMAR. Sin embargo, al
escribir incorrectamente ROJO,
os.system('cls')
AZUL…, el programa continúa
for i in range(len(secuenciaSimon)): pidiendo el resto de los colores,
time.sleep(0.1) cuando debería indicar que el jugador
print(secuenciaSimon[i])
time.sleep(1) perdió:
os.system('cls')

for i in range(len(secuenciaSimon)):
respuestaUsuario = input("Ingresá AMAR/AZUL/VERD/ROJO:")
secuenciaJugador.append(respuestaUsuario)

if secuenciaJugador[0] != secuenciaSimon[0]:
print("Perdiste. La secuencia era:", secuenciaSimon)
perdio = True
import random
import time
import os Recordemos que el if aplicaba únicamente
al primer elemento de cada lista. Para
colores = ["AMAR", "AZUL", "VERD", "ROJO"] solucionarlo, deberemos incluir el if dentro
secuenciaSimon = [] del bucle for correspondiente al usuario y
perdio = False
reemplazar [0] por [i]. De esta manera, en
while perdio != True: cada repetición comparará el elemento
azar = random.choice(colores) correspondiente y no únicamente el
secuenciaSimon.append(azar) primero.
secuenciaJugador = []
Al ejecutarlo, observamos que funciona
os.system('cls')
según lo esperado:
for i in range(len(secuenciaSimon)):
time.sleep(0.1)
print(secuenciaSimon[i])
time.sleep(1)
os.system('cls')

for i in range(len(secuenciaSimon)):
respuestaUsuario = input("Ingresá AMAR/AZUL/VERD/ROJO:") Pero aún hay otra disfuncionalidad por
secuenciaJugador.append(respuestaUsuario) resolver. Aunque el usuario perdió, el
programa continúa pidiendo colores.
if secuenciaJugador[i] != secuenciaSimon[i]:
print("Perdiste. La secuencia era:", secuenciaSimon)
perdio = True
import random
import time
import os
Para solucionarlo, podemos incluir la
colores = ["AMAR", "AZUL", "VERD", "ROJO"]
secuenciaSimon = []
palabra break (pausa) dentro del if.
perdio = False Esto hará que si se cumple esa
while perdio != True: condición, se ejecute el break y
azar = random.choice(colores)
secuenciaSimon.append(azar)
detenga la repetición del for,
secuenciaJugador = [] aunque no se haya cumplido la
os.system('cls') condición establecida en el bucle.
for i in range(len(secuenciaSimon)):
time.sleep(0.1)
print(secuenciaSimon[i])
Al ejecutarlo, verificamos que esta
time.sleep(1) vez sí se detiene:
os.system('cls')

for i in range(len(secuenciaSimon)):
respuestaUsuario = input("Ingresá AMAR/AZUL/VERD/ROJO:")
secuenciaJugador.append(respuestaUsuario)

if secuenciaJugador[i] != secuenciaSimon[i]:
print("Perdiste. La secuencia era:", secuenciaSimon)
perdio = True
break
import random
import time
import os
Por último, para mejorar la calidad del juego,
nivel = 1 podemos implementar un sistema de niveles.
colores = ["AMAR", "AZUL", "VERD", "ROJO"]
secuenciaSimon = [] Para ello, crearemos la variable nivel, iniciando con
perdio = False
el valor 1; indicaremos que se escriba el número
while perdio != True: de nivel al comienzo de cada ronda; y, al final de
azar = random.choice(colores)
secuenciaSimon.append(azar) cada vuelta, se sumará un nivel. No será necesario
secuenciaJugador = []
usar if ya que, al colocarlo al final, en caso de que
os.system('cls') el jugador pierda, el bucle se detendrá antes de
print("Nivel ", nivel, ":") llegar allí debido al break.
for i in range(len(secuenciaSimon)):
time.sleep(0.1) A continuación, podemos contemplar cómo resulta
print(secuenciaSimon[i])
time.sleep(1) su ejecución:
os.system('cls')

for i in range(len(secuenciaSimon)):
respuestaUsuario = input("Ingresá AMAR/AZUL/VERD/ROJO:")
secuenciaJugador.append(respuestaUsuario)

if secuenciaJugador[i] != secuenciaSimon[i]:
print("Perdiste. La secuencia era:", secuenciaSimon)
print("Llegaste al nivel ", nivel, ".")
perdio = True
break

nivel = nivel + 1

También podría gustarte