Added functions into class instead and also error handling better

This commit is contained in:
jwradhe 2024-09-26 22:59:17 +02:00
parent 538eb786b9
commit 16b4360b11

127
play.py
View File

@ -1,65 +1,94 @@
from random import randint from random import randint
# Funktion för att skapa slump till datorn class TheGame:
def klunsa():
return randint(1,3)
# Lista att använda för att skriva ut resultat i text per omgång def __init__(self):
val = ["Sten", "Sax", "Påse"] self.val = ["Sten", "Sax", "Påse"]
self.computer_wins = 0
self.user_wins = 0
self.rounds = 0
# Initiera antal vinster per user / computer def klunsa(self):
computer_wins = 0 return randint(1,3)
user_wins = 0
print("Sten, Sax, Påse. Först till 3 vinster!") def play(self, user):
computer = self.klunsa()
while True: if user not in range(0,4):
print("Ej korrekt val! Försök igen!")
return None
print(f'Ställning användaren: {user_wins}, dator: {computer_wins}') # Avsluta om användaren skriver in 0
if user == 0:
print("#################################################")
print("Användaren avslutade spelet!")
return 'exit'
# Användarens val samt datorns slumpade val # Skriva ut omgångens resultat
user = int(input("Välj 1=Sten, 2=Sax, 3=Påse, 0 för att avsluta: ")) print(f'Resultat användare: {self.val[user-1]}, dator: {self.val[computer-1]}')
computer = klunsa()
print(f'Resultat användare: {val[user-1]}, dator: {val[computer-1]}') # Kolla vem som vann omgången
if user == computer:
print("Oavgjort!")
elif user == 1 and computer == 2:
print("Du vann")
self.user_wins += 1
elif user == 2 and computer == 3:
print("Du vann")
self.user_wins += 1
elif user == 3 and computer == 1:
print("Du vann")
self.user_wins += 1
elif computer == 1 and user == 2:
print("Datorn vann")
self.computer_wins += 1
elif computer == 2 and user == 3:
print("Datorn vann")
self.computer_wins += 1
elif computer == 3 and user == 1:
print("Datorn vann")
self.computer_wins += 1
# Oavgjort print("#################################################")
if user == computer: self.rounds += 1
print("Oavgjort!") return self.winner_game()
# Användaren vinner def winner_game(self):
elif user == 1 and computer == 2: # När någon kommer till 3 vinster så avslutas spelet
print("Du vann") if self.user_wins == 3 or self.computer_wins == 3:
user_wins += 1 if self.user_wins == 3:
elif user == 2 and computer == 3: print(f'Användaren fick 3 vinster först och vann!')
print("Du vann") elif self.computer_wins == 3:
user_wins += 1 print(f'Datorn fick 3 vinster först och vann!')
elif user == 3 and computer == 1: return 'exit'
print("Du vann")
user_wins += 1
# Datorn vinner def game_score(self):
elif computer == 1 and user == 2: print(f'Ställning användaren: {self.user_wins}, dator: {self.computer_wins}')
print("Datorn vann")
computer_wins += 1
elif computer == 2 and user == 3:
print("Datorn vann")
computer_wins += 1
elif computer == 3 and user == 1:
print("Datorn vann")
computer_wins += 1
def main():
game = TheGame()
print("Sten, Sax, Påse. Först till 3 vinster!")
print("#################################################") print("#################################################")
# När någon kommer till 3 vinster så avslutas spelet while True:
if user_wins == 3 or computer_wins == 3:
if user_wins == 3: if game.rounds > 0:
print(f'Användaren fick 3 vinster först och vann!') game.game_score()
elif computer_wins == 3:
print(f'Datorn fick 3 vinster först och vann!') try:
break 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 __name__ == "__main__":
if user == 0: main()
print("Användaren avslutade spelet!")
break