Paga en 4 cuotas sin intereses de $52.25

Antes:$249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

19d

02h

23m

53s

1

Optimización del Juego: Piedra, Papel o Tijera 🕹

<h1>Tutorial para crear el juego de Piedra, Papel o Tijera con Python 🐍.</h1>

Primero que todo, deberías tomar el curso de Curso de Fundamentos de Python para que tengas las nociones básicas sobre cómo crear variables y cómo crear condicionales if, elif, else y utilizar ciclos while o for.

En esta oportunidad te recomiendo que sigas paso a paso el código para que tengas una base pero si quieres agregarle algo más, tienes la libertad de hacerlo.

Código 👨🏼‍💻

Importaciones

import random

Esa línea de código nos permite importar la librería interna que tiene Python para poder utilizar sus métodos para obtener valores aleatorios.

Variables

roundTotal = 3
options = ('piedra', 'papel', 'tijera')
scorePlayer = 0
scoreComputer = 0

En esta parte del código, te darás cuentas que se están creando las variables necesarias para que nuestro juego pueda funcionar. roundTotal, sirve para definir la cantidad de rondas que deben haber en la partida, por defecto tiene 3 rondas. options, es una tupla de opciones donde tenemos 3 elementos; los elementos necesarios para el juego. scorePlayer, es el puntaje que tiene el usuario. scoreComputer, es el puntaje que tiene la computadora. Esas dos variables se le asignan a 0, ya que es el puntaje que debería tener como valor inicial.

Creación del ciclo for

for round in range(1, roundTotal + 1):

En esta línea, tienes la inicialización del ciclo for para indicar el rango entre las veces que tiene que iterar para la lógica de la partida. Creamos una variable round que va a almacenar cada uno de las rondas de la partida. Además se utiliza el método range() que trae Python para indicar rangos desde un número hasta otro número, y dentro de esos parentesis “()”, se agrega desde donde va a comenzar la partida; por defecto comienza en 0 pero nosotros necesitamos que comience en 1 por eso se le indica que va a tener el primer argumento en 1 y el segundo argumento debe ser el total de rondas más 1, ya que la longitud del arreglo es de 3 pero los ídices siempre comienzan en 0, es decir, 3 - 1 = 2, y necesitamos que la ronda sea hasta 3 por eso se le suma ese valor.

Evaluación sobre las rondas de la partida contra las rondas totales

ifround <= roundTotal:

Debemos preguntar si la ronda es menor o igual al total de rondas, en este caso se evalúa si 1 es menor que 3; de ser verdadero, entra en el ciclo. La ejecución seguirá así hasta que llegue al final que sería: round = 3 y evalúa si es menor o igual, en este caso son igual y todavía puede iterar el ciclo.

Solicitar opciones válidas al usuario para jugar contra la computadora

 user_option = input('piedra, papel o tijera => ').lower()
    if user_option notin options:
      print('Esa opcion no existe')

Esta línea nos permite pedirle al usuario las opciones necesarias para poder jugar contra la computadora, pero también debemos evaluar si las opciones que elije el usuario son totalmente válidas y además debemos convertirlas en minúsculas toda la palabra recibida para evitar problema con la tupla de opciones que creamos.

Hacer que la computadora elija las opciones aleatorias

computer_option = random.choice(options)

En esta línea permitimos que la computadora pueda elegir de forma al azar un valor entre esas 3 opciones.

Evaluar si las opciones del usuario es igual a la computadora

if user_option == computer_option:
      print('¡Empate!')
      print(f'Puntaje => User: {scorePlayer} vs Computer: {scoreComputer}')

En esta condición evaluamos si la opción que eligió el usuario concuerda con la misma que eligió la computadora y de ser verdadera, debemos decirle al usuario que hubo un empate.

Condiciones del juego para ganar

elif user_option == 'piedra':
      if computer_option == 'tijera':
        scorePlayer += 1
        print('Piedra le gana a la tijera')
        print('¡User Ganó!')
        print(f'Puntaje => User: {scorePlayer} vs Computer: {scoreComputer}')
      else:
        scoreComputer += 1
        print('Papel le gana a la piedra')
        print('Computer Ganó')
        print(f'Puntaje => User: {scorePlayer} vs Computer: {scoreComputer}')
    elif user_option == 'papel':
      if computer_option == 'piedra':
        scorePlayer += 1
        print('Papel le gana a la piedra')
        print('¡User Ganó!')
        print(f'Puntaje => User: {scorePlayer} vs Computer: {scoreComputer}')
      else:
        scoreComputer += 1
        print('Tijera le gana a la papel')
        print('¡Computer Ganó!')
        print(f'Puntaje => User: {scorePlayer} vs Computer: {scoreComputer}')
    elif user_option == 'tijera':
      if computer_option == 'papel':
        scorePlayer += 1
        print('Tijera le gana a la papel')
        print('¡User Ganó!')
        print(f'Puntaje => User: {scorePlayer} vs Computer: {scoreComputer}')
      else:
        scoreComputer += 1
        print('Piedra le gana a la tijera')
        print('Computer Ganó')
        print(f'Puntaje => User: {scorePlayer} vs Computer: {scoreComputer}')

En estas líneas puedes ver las condiciones necesarias para ganar la partida, además tendrás mensajes por si te ganaron o ganaste y también tendremos la suma del puntaje del usuario o de la computadora, depende de quien vaya ganando.

Optimización de la racha

if scorePlayer == 2and scoreComputer == 0or scoreComputer == 2and scorePlayer == 0:
    break

Y por último, tenemos una pequeña condición donde vamos a evaluar si el puntaje del usuario o de la computadora es de 2 y si el contrincante tiene 0, entonces por lógica la parteda a de ser de 3, entonces, automáticamente gana el que cumpla con la condición.

Código completo para utilizarlo

import random

roundTotal = 3
options = ('piedra', 'papel', 'tijera')
scorePlayer = 0
scoreComputer = 0for round in range(1, roundTotal + 1):
  if round <= roundTotal:
    print(f'------ Round {round} ------')
    user_option = input('piedra, papel o tijera => ').lower()
    if user_option notin options:
      print('Esa opcion no existe')

# random.choise(tuple) me permite elegir de forma aleatoria valores de una tuple
    computer_option = random.choice(options)
    if user_option == computer_option:
      print('¡Empate!')
      print(f'Puntaje => User: {scorePlayer} vs Computer: {scoreComputer}')
    elif user_option == 'piedra':
      if computer_option == 'tijera':
        scorePlayer += 1
        print('Piedra le gana a la tijera')
        print('¡User Ganó!')
        print(f'Puntaje => User: {scorePlayer} vs Computer: {scoreComputer}')
      else:
        scoreComputer += 1
        print('Papel le gana a la piedra')
        print('Computer Ganó')
        print(f'Puntaje => User: {scorePlayer} vs Computer: {scoreComputer}')
    elif user_option == 'papel':
      if computer_option == 'piedra':
        scorePlayer += 1
        print('Papel le gana a la piedra')
        print('¡User Ganó!')
        print(f'Puntaje => User: {scorePlayer} vs Computer: {scoreComputer}')
      else:
        scoreComputer += 1
        print('Tijera le gana a la papel')
        print('¡Computer Ganó!')
        print(f'Puntaje => User: {scorePlayer} vs Computer: {scoreComputer}')
    elif user_option == 'tijera':
      if computer_option == 'papel':
        scorePlayer += 1
        print('Tijera le gana a la papel')
        print('¡User Ganó!')
        print(f'Puntaje => User: {scorePlayer} vs Computer: {scoreComputer}')
      else:
        scoreComputer += 1
        print('Piedra le gana a la tijera')
        print('Computer Ganó')
        print(f'Puntaje => User: {scorePlayer} vs Computer: {scoreComputer}')

  if scorePlayer == 2and scoreComputer == 0or scoreComputer == 2and scorePlayer == 0:
    break
Escribe tu comentario
+ 2