Problem when inserting rounds in stone game , paper and scissors

Asked

Viewed 180 times

0

Good morning, I’m not able to implement a system of rounds in this game , the rounds must change when the player’s Mao is empty. , what happens now is that when the player and player list empty the game continues running with it empty , but what should happen is he draws the cards again to start the other round.

import random
print("-"*32)
print("jogo de pedra, papel e tesoura")
print("-"*32)
jogador = []
jogador2 = []
escolha1 = ''
escolha2 = ''
aposta = 0
aposta2 = 0
rodada = 0
dinheiro = 0
dinheiro2 = 0
res = 0
res2 = 0
saldo = 0
saldo2 = 0
dinheiro = 1000
dinheiro2 = 1000
rodada = 1
jogo_roda = True
def sorteio_Cartas(jogador,jogador2,rodada):
  for i in range (3):
    a = len(jogador)
    b = len(jogador2)
    p1 = random.randint(1,3)
    p2 = random.randint(1,3)
    rodada += 1
    i += 1
    if p2 == 3:
        jogador.append("Pedra")
    elif p2 == 2:
        jogador.append("Papel")
    else:
        jogador.append("Tesoura")
    if p1 == 3:
        jogador2.append("Pedra")
    elif p1 == 2:
        jogador2.append("Papel")
    else:
        jogador2.append("Tesoura")
return jogador, jogador2 , rodada
def escolha_Cartas(escolha1,jogador):
    if escolha1 in jogador[0]:
        print("A Carta escolhida foi ",escolha1)
        escolha1 = jogador[0]
        jogador.pop(0)
    elif escolha1 in jogador[1]:
        print("A Carta escolhida foi ",escolha1)
        escolha1 = jogador[1]
        jogador.pop(1)
    else:
        print("A Carta escolhida foi ",escolha1)
        escolha1 = jogador[2]
        jogador.pop(2)
return escolha1 , jogador,rodada

FUNCTION FOR PLAYER 2 TO PICK A CARD

def escolha_Cartas2(escolha2,jogador2):
    if escolha2 in jogador2[0]:
        print("A Carta escolhida foi ",escolha2)
        escolha2 = jogador2[0]
        jogador2.pop(0)
    elif escolha2 in jogador2[1]:
        print("A Carta escolhida foi ",escolha2)
        escolha2 = jogador2[1]
        jogador2.pop(1)
    else:
        print("A Carta escolhida foi ",escolha2)
        escolha2 = jogador2[2]
        jogador2.pop(2)
return escolha2 , jogador,rodada

COMPARISON OF WHO WON THE ROUND AND WHO LOST!

defcomparacao(escolha1,escolha2,aposta,aposta2,dinheiro,dinheiro2,saldo,saldo2,res,res2):
# Comparações de Vitoria jogador 2
 if escolha1 == "Pedra" and escolha2 == "Tesoura":
     print("O Jogador 1 Ganha!!")
     print("O Jogador 1 escolheu:", str(escolha1))
     print("O Jogador2 escolheu:", str(escolha2))
     dinheiro -= aposta
     res = aposta + aposta2
     saldo = dinheiro + res
     saldo2 = dinheiro2 - aposta2
     print("O Saldo do jogador 1 é: ",str(saldo))
     print("O Saldo do jogador 2 é: ",str(saldo2))
 elif escolha1 == "Tesoura" and escolha2 == "Papel":
     print("O Jogador 1 Ganha!!")
     print("O Jogador 1 escolheu:", str(escolha1))
     print("O Jogador 2 escolheu:", str(escolha2))
     dinheiro -= aposta
     res = aposta + aposta2
     saldo = dinheiro + res
     saldo2 = dinheiro2 - aposta2
     print("O Saldo do jogador 1 é: ",str(saldo))
     print("O Saldo do jogador 2 é: ",str(saldo2))
 elif  escolha1 == "Papel" and escolha2 == "Pedra":
     print("O Jogador 1 Ganha!!")
     print("O Jogador 1 escolheu:", str(escolha1))
     print("O Jogador 2 escolheu:", str(escolha2))
     dinheiro -= aposta
     res = aposta + aposta2
     saldo = dinheiro + res
     saldo2 = dinheiro2 - aposta2
     print("O Saldo do jogador 1 é: ",str(saldo))
     print("O Saldo do jogador 2 é: ",str(saldo2))
# Comparações de Vitória jogador 2
 elif escolha2 == "Pedra" and escolha1 == "Tesoura":
     print("O Jogador 2 Ganha!!")
     print("O Jogador 1 escolheu:", str(escolha1))
     print("O Jogador 2 escolheu:", str(escolha2))
     dinheiro2 -= aposta2
     res2 = aposta + aposta2
     saldo2 = dinheiro2 + res2
     saldo = dinheiro - aposta
     print("O Saldo do jogador 2 é: ",str(saldo2))
     print("O Saldo do jogador 1 é: ",str(saldo))
 elif escolha2 == "Tesoura" and escolha1 == "Papel":
     print("O Jogador 2 Ganha!!")
     print("O Jogador 1 escolheu:", str(escolha1))
     print("O Jogador 2 escolheu:", str(escolha2))
     dinheiro2 -= aposta2
     res2 = aposta + aposta2
     saldo2 = dinheiro2 + res2
     saldo = dinheiro - aposta
     print("O Saldo do jogador 2 é: ",str(saldo2))
     print("O Saldo do jogador 1 é: ",str(saldo))
 elif escolha2 == "Papel" and escolha1 == "Pedra":
     print("O Jogador 2 Ganha!!")
     print("O Jogador 1 escolheu:", str(escolha1))
     print("O Jogador 2 escolheu:", str(escolha2))
     dinheiro2 -= aposta2
     res2 = aposta + aposta2
     saldo2 = dinheiro2 + res2
     saldo = dinheiro - aposta
     print("O Saldo do jogador 2 é: ",str(saldo2))
     print("O Saldo do jogador 1 é: ",str(saldo))
 else:
     print("EMPATE!!!")
     print("O Jogador1 escolheu:", str(escolha1))
     print("O Jogador2 escolheu:", str(escolha2))
return saldo , saldo2

function to run the game

def jogoroda(jogo_roda,rodada):
##declaracao de saldo de dinheiro
   while jogo_roda == True:
       while rodada != 3:
          if rodada == 1:
              sorteio_Cartas(jogador,jogador2,rodada)
              jogoroda(jogo_roda,rodada)
          elif rodada == 2:
              sorteio_Cartas(jogador,jogador2,rodada)
              jogoroda(jogo_roda,rodada)
          elif rodada == 3:
              sorteio_Cartas(jogador,jogador2,rodada)
              jogoroda(jogo_roda,rodada)
          else:
              jogo_roda = False
      else:
          print("Fim de jogo")
      print("Esta é a primeira {} Rodada!!".format(rodada))
      print("O jogador 1 {} reais!!!!, Boa sorte! ".format(saldo))
      print("As Cartas do jogador1 são: "+str(jogador))
      print("-"*32)
      aposta = float(input("Porfavor Faca uma Aposta: "))
      escolha1 = input("Jogador 1 escolha uma carta: ")
      print("O jogador 2 {} reais!!!!, Boa sorte! ".format(saldo2))
      print("As Cartas do Jogador 2 são: ",str(jogador2))
      print("-"*32)
      aposta2 = float(input("Porfavor Faca uma Aposta: "))
      escolha2 = input("Jogador 2 escolha uma carta: ")
      escolha_Cartas(escolha1,jogador)
      print(escolha1)
      escolha_Cartas2(escolha2,jogador2)
      print(escolha2)
      comparacao(escolha1,escolha2,aposta,aposta2,dinheiro,dinheiro2,saldo,saldo2,res,res2)         







     # chama a Execução
     jogoroda(jogo_roda,rodada)
  • What would be the "cards" in a game of stone, paper and scissors?

  • in case the "cards" in this game would be the content of the players' list, for example in the playlist 2 has three strings , these would be the "cards"

1 answer

0

The 'round' variable is being declared twice without being used at the beginning of the program. First 'round = 0' then 'round = 1' without anything happening.

The functionality of the variable 'jogo_roda' competes with the function of the variable 'round', and both are not necessary before the playable() function, so they do not need to be declared before, much less need to be passed within all other functions.

Inside the game() everything below the line 'print("End of game")' will be reached ONLY when round>3, but the only function that updates the round value is sorteio_Cartas() and you are not capturing this information ( When you change 'round' within a function, you are changing a 'round' copy). Outside the function the value will not be updated. Fora da função o valor não será atualizado

So the game runs over and over again, always thinking it’s the first round. In addition, your playable() function calls itself, but is not prepared for it. Several other variable problems will appear.

Consider rewriting the program by making a dictionary with players being the keys and the balance of each player being the stored value. The draw of the players' cards must take place immediately before the moment when the players will make the choice of the card. In the same role you will draw the cards, players will choose the cards used, and you will choose the winner and update the balance. Above this function you make a spin counter to finish the game. Remember that variable changes within a function are not loaded out. You have to capture the changes yourself.

Você tem que capturar as alterações você mesmo.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.