Piedra, papel o tijera: juego en python
Hace unos días me tope con un video en YouTube que mostraba el juego Piedra, papel o tijera hecho en Python.
Piedra, papel o tijera en Python |
Por si no saben de que trata el juego, acá les dejo el enlace: http://es.wikipedia.org/wiki/Piedra,_papel_o_tijera
Me parece un muy buen ejercicio para los que recién están empezando. Dejo el video y el código que a mi se me ocurrió. A parte de lo que muestra el video, implemento en el código el resultado final y la posibilidad de volver a jugar.
Aconsejo mirar el video he ir implementando el código. Por cualquier duda o sugerencia dejar sus comentarios al final del post...
Mi código del juego:
# -*- coding: utf-8 -*-
#!/usr/bin/env python
# https://www.pythondiario.com
import random
from time import sleep
print "Bienvenido, vamos a jugar a Piedra, papel o tijera."
print ""
sleep(2)
print "Jugamos al mejor de tres, o prefieres cambiar?"
sleep(1)
print ""
#Funcion que realiza la lógica del juego
def juego(intentos):
x = 0
tu = 0
pc = 0
while str(x) != intentos:
print "Piedra, papel o tijera?"
opcion = raw_input()
opcion = opcion.lower()
azar = random.choice(["piedra", "papel", "tijera"])
if opcion == azar:
print "El pc tambien elijio", azar
print ""
elif azar == "tijera" and opcion == "papel":
x += 1
pc += 1
print "El PC saco", azar
print "Tu", tu, "PC", pc
print ""
elif azar == "tijera" and opcion == "piedra":
x += 1
tu += 1
print "El PC saco", azar
print "Tu", tu, "PC", pc
print ""
elif azar == "piedra" and opcion == "tijera":
x += 1
pc += 1
print "El PC saco", azar
print "Tu", tu, "PC", pc
print ""
elif azar == "piedra" and opcion == "papel":
x += 1
tu += 1
print "El PC saco", azar
print "Tu", tu, "PC", pc
print ""
elif azar == "papel" and opcion == "tijera":
x += 1
tu += 1
print "El PC saco", azar
print "Tu", tu, "PC", pc
print ""
elif azar == "papel" and opcion == "piedra":
x += 1
pc += 1
print "El pc saco", azar
print "Tu", tu, "PC", pc
print ""
else:
print "Opcion incorrecta, vuleva a intentarlo"
print ""
if pc > tu:
print "Gano el PC", pc, "a", tu
elif pc == tu:
print "Empataron", tu, "a", pc
else:
print "Ganaste", tu, "a", pc
print ""
print "PARTIDA TERMINADA"
def main():
print "Escribe 1 para jugar al mejor de tres."
print "Escribe 2 para cambiar el tipo de juego."
opcion = input()
if opcion == 1:
juego("3")
print ""
restart = raw_input ("Quieres jugar de nuevo?(s/n): ")
restart = restart.lower()
if restart == "s":
print ""
main()
else:
intentos = raw_input ("Tu diras, jugamos al mejor de: ")
juego(intentos)
print ""
restart = raw_input ("Quieres jugar de nuevo?(s/n): ")
restart = restart.lower()
if restart == "s":
print ""
main()
else:
print "FIN"
main()
-
-
Utilizo python 2.7 y como IDE utilizo Geany... Saludos
-
-
Yo use tu codigo y me di cuenta que no llega al mejor de n intentos sino que suma los puntos del usuario y del computador y si da como resultado n intentos el juego se termina.
A mi se me ocurrio este codigo:
import random
from time import sleepcompuP = 0
usuarP = 0
inten = 3def jugarDeNuevo():
s = raw_input('nSi quieres jugar de nuevo presiona s sino presiona otra tecla: ')
s = s.lower()if s == 's':
main()
else:
print 'Fin del juego'def ganador(usuario,computador):
if usuario > computador:
print 'nTu le has ganado a la PC'
elif usuario < computador:
print 'nTu has perdido'
jugarDeNuevo()def terminar(usuari,comp):
global inten
if usuari < inten and comp < inten:
juegos()
if usuari == inten or comp == inten:
print 'nEl juego se ha terminado'
ganador(usuari,comp)def logica(finalPC,eleccionUsuario):
global compuP
global usuarPif finalPC == 'piedra' and eleccionUsuario == 'papel':
print 'nEl PC saco', finalPC
usuarP += 1
print 'Tu ',str(usuarP),' ',str(compuP),'PC'
elif finalPC == 'papel' and eleccionUsuario == 'papel':
print 'nEl PC saco', finalPC
print 'Tu ',str(usuarP),' ',str(compuP),'PC'
elif finalPC == 'tijera' and eleccionUsuario == 'papel':
print 'nEl PC saco', finalPC
compuP += 1
print 'Tu ',str(usuarP),' ',str(compuP),'PC'
elif eleccionUsuario == 'piedra' and finalPC == 'piedra':
print 'nEl PC saco', finalPC
print 'Tu ',str(usuarP),' ',str(compuP),'PC'
elif eleccionUsuario == 'tijera' and finalPC == 'piedra':
print 'nEl PC saco', finalPC
compuP += 1
print 'Tu ',str(usuarP),' ',str(compuP),'PC'
elif eleccionUsuario == 'piedra' and finalPC == 'papel':
print 'nEl PC saco', finalPC
compuP += 1
print 'Tu ',str(usuarP),' ',str(compuP),'PC'
elif eleccionUsuario == 'tijera' and finalPC == 'papel':
print 'nEl PC saco', finalPC
usuarP += 1
print 'Tu ',str(usuarP),' ',str(compuP),'PC'
elif eleccionUsuario == 'piedra' and finalPC == 'tijera':
print 'nEl PC saco', finalPC
usuarP += 1
print 'Tu ',str(usuarP),' ',str(compuP),'PC'
elif eleccionUsuario == 'tijera' and finalPC == 'tijera':
print 'nEl PC saco', finalPC
print 'Tu ',str(usuarP),' ',str(compuP),'PC'terminar(usuarP,compuP)
def juegos():
finalP = random.choice(["piedra", "papel", "tijera"])
print 'nPiedra, papel o tijera'
eleccionUsuari = raw_input()
eleccionUsuari = eleccionUsuari.lower()logica(finalP,eleccionUsuari)
def decidirJuego(nJuego):
global intenif nJuego == 2:
inten = input('nTu diras, jugamos al mejor de: ')
juegos()
elif nJuego == 1:
juegos()def main():
print 'Bienvenido, vamos a jugar Piedra, papel o tijeran'
sleep(2)
print 'Jugamos al mejor de tres, o prefieres cambiar?n'
print 'nEscribe 1 para jugar al mejor de tres.'
print 'nEscribe 2 para cambiar el tipo de juego.'nJuego = input()
decidirJuego(nJuego)
main()-
Hola Jesus, ya hace tiempo que lo hice. Un día de estos le doy una ojeada para ver lo que me comentas. Gracias por pasarte por el blog y participar. Saludos
-
Buen dia, estoy transcribiendo el codigo del compañero anterior, pero me esta mostrando el siguiente error al principo
Traceback (most recent call last):
File "C:/Python34/JuegoPapel", line 12, in
if s == "s":
NameError: name 's' is not definedestoy ulizando python 2.7.8 lo estoy haciendo desde el GUI pyhton alguien me podria ayudar por favor.
-
Hola Elfrid, fijate lo siguiente:
Todo lo de abajo es una función(jugarDeNuevo), tienes bien identada la funcion? Dejo la identacion con 4 guiones, espero te sea de ayuda:
def jugarDeNuevo():
----s = raw_input('nSi quieres jugar de nuevo presiona s sino presiona otra tecla: ')
----s = s.lower()----if s == 's':
--------main()
----else:
--------print 'Fin del juego' -
Gracias por la ayuda!!! Muy buena pagina!!Felicitaciones
-
Gracias a ti: por pasar por el blog y participar. Saludos
-
-
modifique un poco tu código para que el juego termine si ya no quedan suficientes jugadas para empatar.
import random
from time import sleepprint "Bienvenido, vamos a jugar a Piedra, papel o tijera."
print ""
sleep(1)
print "Jugamos al mejor de tres, o prefieres cambiar?"
sleep(1)
print ""#Funcion que realiza la logica del juego
def juego(intentos):
x = 0
tu = 0
pc = 0
def mostrar_result():
print "El PC saco", azar
print "Tu", tu, "PC", pc
print ""
jugadas_restantes=intentos-x
if pc>jugadas_restantes or tu>jugadas_restantes:
return intentos
else:
return xwhile x != intentos:
print "Piedra, papel o tijera?"
opcion = raw_input()
opcion = opcion.lower()
azar = random.choice(["piedra", "papel", "tijera"])
if opcion == azar:
print "El pc tambien elijio", azar
print ""
elif azar == "tijera" and opcion == "papel":
x += 1
pc += 1
x=mostrar_result()
elif azar == "tijera" and opcion == "piedra":
x += 1
tu += 1
x=mostrar_result()
elif azar == "piedra" and opcion == "tijera":
x += 1
pc += 1
x=mostrar_result()
elif azar == "piedra" and opcion == "papel":
x += 1
tu += 1
x=mostrar_result()
elif azar == "papel" and opcion == "tijera":
x += 1
tu += 1
x=mostrar_result()
elif azar == "papel" and opcion == "piedra":
x += 1
pc += 1
x=mostrar_result()
else:
print "Opcion incorrecta, vuleva a intentarlo"print ""
if pc > tu:
print "Gano el PC", pc, "a", tu
elif pc == tu:
print "Empataron", tu, "a", pc
else:
print "Ganaste", tu, "a", pcprint ""
print "PARTIDA TERMINADA"def main():
def ask_restart():
print ""
restart = raw_input ("Quieres jugar de nuevo?(s/n): ")
restart = restart.lower()
if restart == "s":
print ""
main()
else:
print "FIN"print "Escribe 1 para jugar al mejor de tres."
print "Escribe 2 para cambiar el tipo de juego."opcion = input()
if opcion == 1:
juego(3)
ask_restart()else:
intentos = raw_input ("Tu diras, jugamos al mejor de: ")
juego(int(intentos))
ask_restart()main()
-
Gracias Andre por visitar el blog. Luego me fijo que tal tu código 😉
Saludos
-
-
Se podría implementar una webcam junto con opencv reconocer gestos y así jugar como si jugásemos con otra persona.
Deja una respuesta
Que version de IDE Python usas