Added functions into class instead and also error handling better
This commit is contained in:
parent
538eb786b9
commit
16b4360b11
99
play.py
99
play.py
@ -1,65 +1,94 @@
|
||||
from random import randint
|
||||
|
||||
# Funktion för att skapa slump till datorn
|
||||
def klunsa():
|
||||
class TheGame:
|
||||
|
||||
def __init__(self):
|
||||
self.val = ["Sten", "Sax", "Påse"]
|
||||
self.computer_wins = 0
|
||||
self.user_wins = 0
|
||||
self.rounds = 0
|
||||
|
||||
def klunsa(self):
|
||||
return randint(1,3)
|
||||
|
||||
# Lista att använda för att skriva ut resultat i text per omgång
|
||||
val = ["Sten", "Sax", "Påse"]
|
||||
def play(self, user):
|
||||
computer = self.klunsa()
|
||||
|
||||
# Initiera antal vinster per user / computer
|
||||
computer_wins = 0
|
||||
user_wins = 0
|
||||
if user not in range(0,4):
|
||||
print("Ej korrekt val! Försök igen!")
|
||||
return None
|
||||
|
||||
print("Sten, Sax, Påse. Först till 3 vinster!")
|
||||
# Avsluta om användaren skriver in 0
|
||||
if user == 0:
|
||||
print("#################################################")
|
||||
print("Användaren avslutade spelet!")
|
||||
return 'exit'
|
||||
|
||||
while True:
|
||||
# Skriva ut omgångens resultat
|
||||
print(f'Resultat användare: {self.val[user-1]}, dator: {self.val[computer-1]}')
|
||||
|
||||
print(f'Ställning användaren: {user_wins}, dator: {computer_wins}')
|
||||
|
||||
# Användarens val samt datorns slumpade val
|
||||
user = int(input("Välj 1=Sten, 2=Sax, 3=Påse, 0 för att avsluta: "))
|
||||
computer = klunsa()
|
||||
|
||||
print(f'Resultat användare: {val[user-1]}, dator: {val[computer-1]}')
|
||||
|
||||
# Oavgjort
|
||||
# Kolla vem som vann omgången
|
||||
if user == computer:
|
||||
print("Oavgjort!")
|
||||
|
||||
# Användaren vinner
|
||||
elif user == 1 and computer == 2:
|
||||
print("Du vann")
|
||||
user_wins += 1
|
||||
self.user_wins += 1
|
||||
elif user == 2 and computer == 3:
|
||||
print("Du vann")
|
||||
user_wins += 1
|
||||
self.user_wins += 1
|
||||
elif user == 3 and computer == 1:
|
||||
print("Du vann")
|
||||
user_wins += 1
|
||||
|
||||
# Datorn vinner
|
||||
self.user_wins += 1
|
||||
elif computer == 1 and user == 2:
|
||||
print("Datorn vann")
|
||||
computer_wins += 1
|
||||
self.computer_wins += 1
|
||||
elif computer == 2 and user == 3:
|
||||
print("Datorn vann")
|
||||
computer_wins += 1
|
||||
self.computer_wins += 1
|
||||
elif computer == 3 and user == 1:
|
||||
print("Datorn vann")
|
||||
computer_wins += 1
|
||||
self.computer_wins += 1
|
||||
|
||||
print("#################################################")
|
||||
self.rounds += 1
|
||||
return self.winner_game()
|
||||
|
||||
def winner_game(self):
|
||||
# När någon kommer till 3 vinster så avslutas spelet
|
||||
if user_wins == 3 or computer_wins == 3:
|
||||
if user_wins == 3:
|
||||
if self.user_wins == 3 or self.computer_wins == 3:
|
||||
if self.user_wins == 3:
|
||||
print(f'Användaren fick 3 vinster först och vann!')
|
||||
elif computer_wins == 3:
|
||||
elif self.computer_wins == 3:
|
||||
print(f'Datorn fick 3 vinster först och vann!')
|
||||
return 'exit'
|
||||
|
||||
def game_score(self):
|
||||
print(f'Ställning användaren: {self.user_wins}, dator: {self.computer_wins}')
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
game = TheGame()
|
||||
|
||||
print("Sten, Sax, Påse. Först till 3 vinster!")
|
||||
print("#################################################")
|
||||
|
||||
while True:
|
||||
|
||||
if game.rounds > 0:
|
||||
game.game_score()
|
||||
|
||||
try:
|
||||
user = int(input("Välj 1=Sten, 2=Sax, 3=Påse, 0 för att avsluta: "))
|
||||
except ValueError:
|
||||
print("Ej korrekt val! Försök igen!")
|
||||
continue
|
||||
|
||||
result = game.play(user)
|
||||
|
||||
if result == 'exit':
|
||||
break
|
||||
|
||||
# Avsluta spelet om användaren väljer 0 istället för sten sax påse.
|
||||
if user == 0:
|
||||
print("Användaren avslutade spelet!")
|
||||
break
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Loading…
Reference in New Issue
Block a user