Google+ Seguidores

martes, 26 de noviembre de 2013

Piedra, papel o tijera: juego en python

    11

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
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

# http://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()


11 comentarios:
Write comentarios
  1. Respuestas
    1. Utilizo python 2.7 y como IDE utilizo Geany... Saludos

      Eliminar
  2. 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 sleep

    compuP = 0
    usuarP = 0
    inten = 3

    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'

    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 usuarP

    if 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 inten

    if 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 tijera\n'
    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()

    ResponderEliminar
    Respuestas
    1. 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

      Eliminar
    2. 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 defined

      estoy ulizando python 2.7.8 lo estoy haciendo desde el GUI pyhton alguien me podria ayudar por favor.

      Eliminar
    3. 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'

      Eliminar
    4. Gracias por la ayuda!!! Muy buena pagina!!Felicitaciones

      Eliminar
    5. Gracias a ti: por pasar por el blog y participar. Saludos

      Eliminar
  3. modifique un poco tu código para que el juego termine si ya no quedan suficientes jugadas para empatar.

    import random
    from time import sleep

    print "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 x

    while 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", pc

    print ""
    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()

    ResponderEliminar
    Respuestas
    1. Gracias Andre por visitar el blog. Luego me fijo que tal tu código ;)
      Saludos

      Eliminar
  4. Se podría implementar una webcam junto con opencv reconocer gestos y así jugar como si jugásemos con otra persona.

    ResponderEliminar

Tu comentario es importante y nos motiva a seguir escribiendo...

Entradas más recientes

© 2014 Mi diario Python. Designed by Bloggertheme9 | Distributed By Gooyaabi Templates
Powered by Blogger.