lunes, 16 de febrero de 2015

Piedra, Papel, Tijeras, Lagarto, Spock

Últimamente estoy intentando aprender python, y la mejor manera de hacerlo es buscándole aplicaciones prácticas; o en este caso, juegos.

Por eso he montado un pequeño programa para jugar piedra-papel-tijeras-lagarto-spock contra la máquina y así, a la vez, fijar algunos conocimientos.

La lógica del juego es la siguiente:

Las tijeras cortan el papel, el papel cubre a la piedra,
la piedra aplasta al lagarto, el lagarto envenena a Spock,
Spock destroza las tijeras, las tijeras decapitan al lagarto,
el lagarto se come el papel, el papel refuta a Spock,
Spock vaporiza la piedra, y, como es habitual… la piedra aplasta las tijeras.

# -*- coding: utf-8 -*-
# Piedra-Papel-Tijeras-Lagarto-Spock
import random

def leyenda():
    print "Las tijeras cortan el papel, el papel cubre a la piedra," 
    print "la piedra aplasta al lagarto, el lagarto envenena a Spock, "
    print "Spock destroza las tijeras, las tijeras decapitan al lagarto, "
    print "el lagarto se come el papel, el papel refuta a Spock, "
    print "Spock vaporiza la piedra, y, como es habitual… la piedra aplasta las tijeras."

def mano_aleatoria():
    mano = ['PIEDRA','PAPEL','TIJERAS','LAGARTO','SPOCK']
    return random.choice(mano)

def mano_a_numero(name):
    if(name == 'PIEDRA'):
        return 0;
    elif(name == 'SPOCK'):
        return 1;
    elif(name == 'PAPEL'):
        return 2;
    elif(name == 'LAGARTO'):
        return 3;
    elif(name == 'TIJERAS'):
        return 4;
    else:
        print 'ERROR'
    
def numero_a_mano(number):
    if(number == 0):
        return 'PIEDRA';
    elif(number == 1):
        return 'SPOCK';
    elif(number == 2):
        return 'PAPEL';
    elif(number == 3):
        return 'LAGARTO';
    elif(number == 4):
        return 'TIJERAS';
    else:
        print 'ERROR'
        
def logica(mano_jugador):
    print 'Humano elige: ' + mano_jugador
    numerohumano = mano_a_numero(mano_jugador)
    numeromaquina = mano_a_numero(mano_aleatoria())
    print 'Máquina elige: ' + numero_a_mano(numeromaquina)
    diferencia = (numeromaquina - numerohumano) % 5
    if(diferencia==1 or diferencia==2):
        print '¡MAQUINA GANA!'
        return 1
    elif (diferencia==4 or diferencia==3):
        print '¡HUMANO GANA!'
        return 2
    elif(diferencia==0):
        print 'EMPATE'

def juego():
    marcadorhumano = 0
    marcadormaquina = 0
    empate = 0
    manos = int(raw_input ("Manos a jugar: "))
    for jugada in range (1,manos+1):
        valor = 1
        while valor == 1:
            mano_humano = raw_input ("Elige Humano (PIEDRA, PAPEL, TIJERAS, LAGARTO, SPOCK): ")
            if mano_humano == 'PIEDRA' or mano_humano == 'PAPEL' or mano_humano == 'TIJERAS' or mano_humano == 'LAGARTO' or mano_humano == 'SPOCK':
                valor = 0
            else:
                valor = 1
        valor_mano = logica(mano_humano)
        if valor_mano == 1:
            marcadormaquina += 1
        elif valor_mano == 2:
            marcadorhumano += 1
        else:
            empate += 1
    print '\n'
    print 'MARCADOR: '
    print 'Humano: ',marcadorhumano
    print 'Maquina: ',marcadormaquina
        
if __name__ == '__main__':
    leyenda()
    juego()

0 comentarios: