Problem inserting rounds in stone, paper and scissors game

0

Good morning, I am not able to implement a rounding system in this game, the rounds should change when the player's Mao empties. , what happens now is that when the player and player list 2 are emptied the game continues to run with it empty, but what should happen was that it raffles the cards again to start another 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

PLAYER FUNCTION 2 CHOOSE A CHART

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 WIN 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)
    
asked by anonymous 04.05.2018 / 16:59

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 'game_root' competes with the function of the variable 'round', and both are not necessary before the play_root () function, so they do not need to be declared before, much less need to be passed inside all other functions .

Within jogoroda () everything below the 'print' line will be reached ONLY when rounded> 3, however the only function that updates the round value is draw__cards () and you are not capturing this (when you change 'round' inside a function, you are changing a 'round' copy). Out of function the value will not be updated.

Thenthegamerunsseveraltimesalwaysthinkingit'sthefirstround.Inaddition,itsjogoroda()functioncallsitselfbutisnotpreparedforit.Severalotherproblemswithvariableswillappear.

Considerrewritingtheprogrambymakingadictionarywiththeplayersbeingthekeysandthebalanceofeachplayerbeingthevaluestored.Thedrawoftheplayers'cardsmusttakeplaceimmediatelybeforetheplayerswillmakethechoiceofthecard.Inthesamefunctionyouwilldrawthecards,theplayerswillchoosethecardsused,andyouwillchoosethewinnerandupdatethebalance.Abovethisfunctionyoumakearoundcountertofinalizethegame.Rememberthatchangestovariableswithinafunctionarenotcarriedout.Youhavetocapturethechangesyourself.

    
22.05.2018 / 14:35