Sto realizzando un gioco di scissor con carta di roccia e ho riscontrato un problema con lo decisioncycle()
. Quello che sto cercando di fare è chiedere all'utente di inserire una scelta in usercycle()
, fare in modo che il computer generi una scelta casuale in gamecycle()
, quindi determinare chi ha vinto il round e tenere traccia di ogni risultato con un conteggio di vincite e perdite. Sembra che stia decidendo quando lavorare a caso.python function random cycle if statements
import random
class rpsgame:
rps= ["rock", "paper","scissors"]
wincount=0
losecount=0
def usercycle(self):
userchoice = input("rock, paper, scissor.....")
print("SHOOT")
return userchoice
def gamecycle(self):
computerchoice = random.choice(rpsgame.rps)
return computerchoice
def decisioncycle(self):
if rpsgame.usercycle(self) == rpsgame.rps[0] and rpsgame.gamecycle(self) == rpsgame.rps[1]:
print("paper beats rock, you lose!")
rpsgame.losecount +=1
elif rpsgame.usercycle(self) == rpsgame.rps[1] and rpsgame.gamecycle(self) == rpsgame.rps[0]:
print("paper beats rock, you win!")
rpsgame.wincount+=1
elif rpsgame.usercycle(self) == rpsgame.rps[0] and rpsgame.gamecycle(self) == rpsgame.rps[2]:
print("rock beats scissors, you win!")
rpsgame.wincount+=1
elif rpsgame.usercycle(self) == rpsgame.rps[2] and rpsgame.gamecycle(self) == rpsgame.rps[0]:
print("rock beats scissors, you lose!")
rpsgame.losecount+=1
elif rpsgame.usercycle(self) == rpsgame.rps[1] and rpsgame.gamecycle(self) == rpsgame.rps[2]:
print("scissors beats paper, you lose!")
rpsgame.losecount+=1
elif rpsgame.usercycle(self) == rpsgame.rps[2] and rpsgame.gamecycle(self) == rpsgame.rps[1]:
print("scissors beats paper, you win!")
rpsgame.wincount+=1
elif rpsgame.usercycle(self) == rpsgame.gamecycle(self):
print("it's a tie!!!")
print("wins {}, losses {}".format(rpsgame.wincount, rpsgame.losecount))
while True:
rg = rpsgame()
rg.usercycle()
rg.gamecycle()
rg.decisioncycle()
Penso che il mio problema sia nel decisioncycle(). questo è il mio primo tentativo in classe perché il gioco funzionava con variabili globali, ma leggo qui che è una cattiva pratica da portare avanti per il futuro.
Nel ciclo decisionale, ogni istruzione if/elif è come un round separato del gioco, che non penso sia ciò che si vuole veramente. –
Esattamente, quando l'ho scritto in questo modo senza una classe che utilizza variabili globali ha funzionato come previsto. Cosa mi manca esattamente? – Rayfd3s
In qualunque funzione determini l'esito del gioco, dovresti chiamare solo il ciclo di vita e il ciclo del gioco _solo_, e assegnare i risultati a 2 variabili. Quindi usa quelle variabili per fare confronti. –