From 74f67da9b2c072ac3ac023c32e9dd4bbf69e12c4 Mon Sep 17 00:00:00 2001 From: punix Date: Wed, 24 Jul 2024 16:16:15 +0200 Subject: [PATCH] play_now add ai to play --- main.py | 64 +++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 39 insertions(+), 25 deletions(-) diff --git a/main.py b/main.py index 1a5b3f9..a68472e 100755 --- a/main.py +++ b/main.py @@ -1,5 +1,6 @@ #!/usr/bin/python3 from os import system +import random # Das ist die Liste in der die Felder für die ausgabe auf der Konsole. Die einzelnen Felder werden durch X oder O # beim Spiel ersetzt @@ -8,8 +9,9 @@ field = ["", "4", "5", "6", "7", "8", "9"] -player = '\x1b[1;34m' "X" '\x1b[1;0m' # Die Zeichen X und O werden so farbig ausgegeben. +#player = '\x1b[1;34m' "X" '\x1b[1;0m' # Die Zeichen X und O werden so farbig ausgegeben. # Achtung! O hat eine andere Farbe +player = 'X' run = True # Variable, die auf Wahr gesetzt ist, damit das Programm sauber beendet wird. @@ -57,7 +59,7 @@ def gamers(): continue except ValueError: print("Bitte nur 1 oder 2 wählen!") - gamers() # Hier steht nachher main() drin! + main() # Hier steht nachher main() drin! one_two = gamers() @@ -76,36 +78,48 @@ def p_field(): # p_ = print. Damit wird das Spielfeld aus der Liste field auf d def play_now(): global run - while True: - try: # Try eingebaut damit auch alle anderen Zeichen und Buchstaben abgefangen werden. - sel_field = input("Bitte ein Feld auswählen:\nZum beenden des Spiels q drücken.\n") - if sel_field == "q": - run = False - return 1 - if sel_field == "": - print("Ohne eingabe kein gewinn!!!") - continue - sel_field = int(sel_field) - if sel_field >= 1 and sel_field <= 9: - if field[sel_field] == '\x1b[1;34m' "X" '\x1b[1;0m' or field[sel_field] == '\x1b[1;31m' "O" '\x1b[1;0m': - print("Spielfeld wurde schon ausgewählt!\n") + if player == 'O' and name_player2 == 'Computer': + field_ai = [] + for i in field: + if i != 'X' and i != 'O' and i != '': + # hier wird geprüft, ob das element dem entspricht, was hier angegeben wurde. + # ist das momentane element ungleich X und ungleich O und ungleich '' also ein anderes element, + # dann wird es in die liste field_ai hinzugefügt. Info! In der Liste field sind nur Strings! + field_ai += i + sel_field = int(random.choice(field_ai)) + # hier wird ein zufälliges element, aus der neu erzeugten liste + # ausgewählt dieser wird auch gleich in ein integer gecastet und der Variable sel_field zugewiesen + return sel_field + else: + while True: + try: # Try eingebaut damit auch alle anderen Zeichen und Buchstaben abgefangen werden. + sel_field = input("Bitte ein Feld auswählen:\nZum beenden des Spiels q drücken.\n") + if sel_field == "q": + run = False + return 1 + if sel_field == "": + print("Ohne eingabe kein gewinn!!!") + continue + sel_field = int(sel_field) + if sel_field >= 1 and sel_field <= 9: + if field[sel_field] == 'X' or field[sel_field] == 'O': + print("Spielfeld wurde schon ausgewählt!\n") + else: + return sel_field else: - return sel_field - else: + print("Bitte nur Ziffern von 1 - 9 wählen!\n") + except ValueError: print("Bitte nur Ziffern von 1 - 9 wählen!\n") - except ValueError: - print("Bitte nur Ziffern von 1 - 9 wählen!\n") def change_player(): # Prüfung welcher Spieler dran ist. (Funktion Spielerwechsel) global player if run: - if player == '\x1b[1;34m' "X" '\x1b[1;0m': - player = '\x1b[1;31m' "0" '\x1b[1;0m' + if player == 'X': + player = 'O' print("Spieler " + name_player2 + " ist dran.") - else: - player = '\x1b[1;34m' "X" '\x1b[1;0m' + player = 'X' print("Spieler " + name_player1 + " ist dran.") @@ -155,10 +169,10 @@ def main(): field[sel_field] = player winner = check_win() if winner: - if winner == '\x1b[1;34m' "X" '\x1b[1;0m': + if winner == 'X': print("Spieler " + name_player1 + " hat gewonnen.") run = False - if winner == '\x1b[1;31m' "0" '\x1b[1;0m': + if winner == 'O': print("Spieler " + name_player2 + " hat gewonnen.") run = False else: