diff --git a/README.md b/README.md index 1e1fcdd..793fa3c 100644 --- a/README.md +++ b/README.md @@ -1 +1,11 @@ -# BlackJack \ No newline at end of file +# BlackJack + +Python kurs - StenSaxPåse + +Starta spelet med att skriva in 'py play.py' + +Spelet startar och ger användaren samt datorn 2 kort var, där dina kort visas samt datorns första. + +Där får du ange 'hit / stand' för att komma vidare, väljer du 'hit' får du ett kort till, och fortsätter tills du har 21 eller väljer att stanna 'stand'. + +När du kört klart din runda utan att förlora så körs datorns runda igenom tills datorn väljer att stanna. \ No newline at end of file diff --git a/game.py b/game.py new file mode 100644 index 0000000..1f07f9b --- /dev/null +++ b/game.py @@ -0,0 +1,104 @@ +from random import randint +import time + +class BlackJack: + + def __init__(self): + self.user_pts = 0 + self.computer_pts = 0 + + # Funktion för randomkort värde 1-10 + def card(self): + return randint(1, 10) + + # Starta spelet, få 2 kort var + def start(self, player): + card1 = self.card() + card2 = self.card() + val = card1 + card2 + if player == 'user': + self.user_pts += val + print(f'Användare startkort: {card1}+{card2}. totalt: {val}') + elif player == 'computer': + self.computer_pts += val + print(f'Dators ena startkort: {card1}') + + # Fortsätta spelet, få ett kort i taget + def play(self, player): + if player == "user": + val = self.card() + self.user_pts += val + print(f'Du fick {val}, totalt {self.user_pts}') + if self.user_pts > 21: + print("Du fick över 21, game over") + return "end" + elif player == "computer": + while True: + if self.computer_pts < 17: + time.sleep(1) + val = self.card() + self.computer_pts += val + print(f'Datorn fick {val} denna omgång, totalt {self.computer_pts}') + time.sleep(1) + if self.computer_pts > 21: + print("Datorn fick över 21, du vann") + return "win" + else: + print(f'Datorn har {self.computer_pts}, men väljer att stanna.') + time.sleep(1) + return 'stop' + return None + + # När spelet stoppats och ingen förlorat så kollas resultatet för vinnare. + def checkWinner(self): + if self.user_pts == self.computer_pts: + print(f'Du har {self.user_pts} och datorn har {self.computer_pts}, matchen är oavgjord!') + elif self.user_pts > self.computer_pts: + print(f'Du har {self.user_pts} och datorn har {self.computer_pts}, du vann!') + elif self.computer_pts > self.user_pts: + print(f'Du har {self.user_pts} och datorn har {self.computer_pts}, datorn vann!') + + +def main(): + + game = BlackJack() + + while True: + try: + + # Få startkort + if(game.user_pts == 0): + game.start('computer') + game.start('user') + + # Vill användaren fortsätta + user = input("Fortsätta? (hit/stand): ").lower() + + # Ja = fortsätta tills man går över 21 + if user == 'hit': + result = game.play('user') + if result == "end": + break + + # Nej, man stannar och datorns tur + elif user == 'stand': + result = game.play('computer') + if result == "win": + break + elif result == "stop": + game.checkWinner() + break + + # Om varken hit eller stand resultat. + elif user != 'hit' or user != 'stand': + print("Felaktigt svar, försök igen!") + continue + else: + break + + except ValueError: + print('Nu blev det nog lite fel här!') + + +if __name__ == "__main__": + main() \ No newline at end of file