Una ayudita juego piedra, papel, tijera en python

Iniciado por kaiminfain, 6 Enero 2010, 20:06 PM

0 Miembros y 1 Visitante están viendo este tema.

kaiminfain

Hola!! Soy una estudiante de Diseño Industrial, y en la asignatura de Informatica estamos dando programacion en Python (que ya quisiera yo saber, para que!? xD).
Necesito ayuda con un ejercicio (cositas basicas para vosotros seguramente, while, for, if, else...)
El ejercicio es este:
En este ejercicio se tiene que desarrollar el juego de "piedra, papel o tijera" partiendo de un programa inicial:

from random import random
opciones = ["piedra", "papel", "tijera"]

(# Muestra el menú de opciones disponibles)

print "Escoge una opcion"
for i in range(3):
print str(i+1)+ ") " + opciones
escogeUsuario = int(raw_input("Escoge una opción: "))
escogeUsuario = escogeUsuario - 1

(# Las 3 siguientes instrucciones obtienen aleatoriamente un número entre 0 y 2)

NumeroMinimo = 0
NumeroMaximo = 2
escogeOrdenador = int (random()* (NumeroMaximo - NumeroMinimo +1)+ NumeroMinimo)
print "Tu has escogido:", opciones[escogeUsuario]
print "El ordenador ha escogido:", opciones[escogeOrdenador]


Para realizar el juego tienes que realizar las siguientes modificaciones a este programa.
1.Determina quien ha ganado la partida, teniendo en cuenta que Piedra gana a Tijera, Tijera gana a Papel, Papel gana a Piedra y en caso de que sean iguales, se empata.
2.Cuando el usuario introduce la opción que escoge, el programa no verifica que está sea correcta. Modifica el programa para que se solicite al usuario un valor hasta que sea correcto.
3.Modifica el programa para que se pida el número de partidas a realizar y que el programa realice exactamente este número de jugadas. El programa resultante debe llevar la cuenta del número de partidas ganadas por cada jugador de forma que al final se muestre quien es el que ha ganado, cuantas partidas ha ganado cada uno y cuantas se han empatado.


Se lo agradecere eternamente si alguien me puede ayudar con este ejercicio!!!


Darioxhcx

switch te va a servir , while lo usaria para el contador a ver kien gana.. yo hice uno en C , nada de otro mundo y lo hice asi ;D

saludos

Masita

#2
Crea tu algoritmo  planteanos tus dudas y los errores que te da y te responderemos.

¿Existe switch en python? Se que puedes hacerlo parecido con diccionarios pero creo que no tiene palabra reservada
En el cielo estan suspendidas las palabras que cantamos en nuestros sueños....

kaiminfain

#3
Vale he llegado hasta el punto donde el programa me dice quien ha ganado, ahora, como hago para que se solicite al usuario un valor hasta que sea correcto.?
He pensado en poner un while, pero no se me cierra el bucle y me sale un monton de veces el ganador.

from random import *
opciones = ["piedra", "papel", "tijera"]

print "Escoge una opcion"
for i in range(3):
 print str(i+1)+ ") " + opciones
escogeUsuario = int(raw_input("Escoge una opción: "))
escogeUsuario = escogeUsuario - 1

NumeroMinimo = 0
NumeroMaximo = 2
escogeOrdenador = int (random()* (NumeroMaximo - NumeroMinimo +1)+ NumeroMinimo)

while escogeUsuario <=3:
  print "Tu has escogido:", opciones[escogeUsuario]
  print "El ordenador ha escogido:", opciones[escogeOrdenador]

  if opciones[escogeUsuario] in opciones and opciones[escogeOrdenador] in opciones:
    if opciones[escogeUsuario] == opciones[escogeOrdenador]:
     print "Empate"
    elif opciones[escogeUsuario] == "piedra" and opciones[escogeOrdenador] == "tijera":
      print "Gana el usuario con", opciones[escogeUsuario], "al ordenador con", opciones[escogeOrdenador]
    elif opciones[escogeUsuario] == "papel" and opciones[escogeOrdenador] == "piedra":
     print "Gana el usuario con", opciones[escogeUsuario], "al ordenador con", opciones[escogeOrdenador]
    elif opciones[escogeUsuario] == "tijera" and opciones[escogeOrdenador] == "papel":
     print "Gana el usuario con", opciones[escogeUsuario], "al ordenador con", opciones[escogeOrdenador]
   else:
     print "Gana el ordenador con", opciones[escogeOrdenador], "al usuario con", opciones[escogeUsuario]

Masita

Podrias hacerlo un bucle while infinito y despues usar try: con el resto del codigo y  al final rompes el while. Intentalo y si no te lo explico un poco.
En el cielo estan suspendidas las palabras que cantamos en nuestros sueños....

kaiminfain

Ok ya esta, problema solucionado con el bucle!! muchas gracias! ^^ Es la primera vez que oigo lo del try, supongo que sera una excepcion o algo asi no?!

Masita

try sirve para intentar una accion si no la consigue en lugar de saltar una excepcion, te manda al except. Asi puedes escribir tus propias excepciones o redirigir el flujo del programa.

Saludos!
En el cielo estan suspendidas las palabras que cantamos en nuestros sueños....

Novlucker

No me pude resistir al ver el código ...

Por lo que veo, quién escribio ese primer programa estaba iniciandose en python, sino sabría que el Random puede llamarse con mínimo y máximo :-X
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

kaiminfain

#8
Siento ser tan pesada pero... se nota que no me entero mucho de python verdad??!!  :laugh:

Ahora mismo lo tengo asi:

Código (python) [Seleccionar]
from random import *
opciones = ["piedra", "papel", "tijera"]

print "Escoge una opcion"
for i in range(3):
 print str(i+1)+ ") " + opciones[i]
escogeUsuario = int(raw_input("Escoge una opción: "))
escogeUsuario = escogeUsuario - 1

NumeroMinimo = 0
NumeroMaximo = 2
escogeOrdenador = int (random()* (NumeroMaximo - NumeroMinimo +1)+ NumeroMinimo)

cantidad = [0]
cantidad[0]= int(raw_input("Partidas a jugar:"))
cuenta = 0
while cuenta < cantidad[0]:
 cuenta = cuenta + 1
 print "Tu has escogido:", opciones[escogeUsuario]
 print "El ordenador ha escogido:", opciones[escogeOrdenador]
 if opciones[escogeUsuario] in opciones and opciones[escogeOrdenador] in opciones:
   if opciones[escogeUsuario] == opciones[escogeOrdenador]:
     print "Empate"
   elif opciones[escogeUsuario] == "piedra" and opciones[escogeOrdenador] == "tijera":
     print "Gana el usuario con", opciones[escogeUsuario], "al ordenador con", opciones[escogeOrdenador]
   elif opciones[escogeUsuario] == "papel" and opciones[escogeOrdenador] == "piedra":
     print "Gana el usuario con", opciones[escogeUsuario], "al ordenador con", opciones[escogeOrdenador]
   elif opciones[escogeUsuario] == "tijera" and opciones[escogeOrdenador] == "papel":
     print "Gana el usuario con", opciones[escogeUsuario], "al ordenador con", opciones[escogeOrdenador]
   else:
     print "Gana el ordenador con", opciones[escogeOrdenador], "al usuario con", opciones[escogeUsuario]



Lo que me pasa es que los resultados se muestran en la pantalla el numero de veces que he puesto en "Partidas a jugar".... :(

Novlucker

Fijate donde tienes el while!

El while lo tienes en la parte donde se muestran los resultados, para lo que buscas debería de abarcar además la parte del ingreso de piedra/papel/tijera por parte de usuario y máquina.

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein