play_now add ai to play

This commit is contained in:
Désiré Werner Menrath 2024-07-24 16:16:15 +02:00
parent 58db15fcd3
commit 74f67da9b2

64
main.py
View File

@ -1,5 +1,6 @@
#!/usr/bin/python3 #!/usr/bin/python3
from os import system 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 # 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 # beim Spiel ersetzt
@ -8,8 +9,9 @@ field = ["",
"4", "5", "6", "4", "5", "6",
"7", "8", "9"] "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 # Achtung! O hat eine andere Farbe
player = 'X'
run = True # Variable, die auf Wahr gesetzt ist, damit das Programm sauber beendet wird. run = True # Variable, die auf Wahr gesetzt ist, damit das Programm sauber beendet wird.
@ -57,7 +59,7 @@ def gamers():
continue continue
except ValueError: except ValueError:
print("Bitte nur 1 oder 2 wählen!") print("Bitte nur 1 oder 2 wählen!")
gamers() # Hier steht nachher main() drin! main() # Hier steht nachher main() drin!
one_two = gamers() 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(): def play_now():
global run global run
while True: if player == 'O' and name_player2 == 'Computer':
try: # Try eingebaut damit auch alle anderen Zeichen und Buchstaben abgefangen werden. field_ai = []
sel_field = input("Bitte ein Feld auswählen:\nZum beenden des Spiels q drücken.\n") for i in field:
if sel_field == "q": if i != 'X' and i != 'O' and i != '':
run = False # hier wird geprüft, ob das element dem entspricht, was hier angegeben wurde.
return 1 # ist das momentane element ungleich X und ungleich O und ungleich '' also ein anderes element,
if sel_field == "": # dann wird es in die liste field_ai hinzugefügt. Info! In der Liste field sind nur Strings!
print("Ohne eingabe kein gewinn!!!") field_ai += i
continue sel_field = int(random.choice(field_ai))
sel_field = int(sel_field) # hier wird ein zufälliges element, aus der neu erzeugten liste
if sel_field >= 1 and sel_field <= 9: # ausgewählt dieser wird auch gleich in ein integer gecastet und der Variable sel_field zugewiesen
if field[sel_field] == '\x1b[1;34m' "X" '\x1b[1;0m' or field[sel_field] == '\x1b[1;31m' "O" '\x1b[1;0m': return sel_field
print("Spielfeld wurde schon ausgewählt!\n") 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: else:
return sel_field print("Bitte nur Ziffern von 1 - 9 wählen!\n")
else: except ValueError:
print("Bitte nur Ziffern von 1 - 9 wählen!\n") 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) def change_player(): # Prüfung welcher Spieler dran ist. (Funktion Spielerwechsel)
global player global player
if run: if run:
if player == '\x1b[1;34m' "X" '\x1b[1;0m': if player == 'X':
player = '\x1b[1;31m' "0" '\x1b[1;0m' player = 'O'
print("Spieler " + name_player2 + " ist dran.") print("Spieler " + name_player2 + " ist dran.")
else: else:
player = '\x1b[1;34m' "X" '\x1b[1;0m' player = 'X'
print("Spieler " + name_player1 + " ist dran.") print("Spieler " + name_player1 + " ist dran.")
@ -155,10 +169,10 @@ def main():
field[sel_field] = player field[sel_field] = player
winner = check_win() winner = check_win()
if winner: if winner:
if winner == '\x1b[1;34m' "X" '\x1b[1;0m': if winner == 'X':
print("Spieler " + name_player1 + " hat gewonnen.") print("Spieler " + name_player1 + " hat gewonnen.")
run = False run = False
if winner == '\x1b[1;31m' "0" '\x1b[1;0m': if winner == 'O':
print("Spieler " + name_player2 + " hat gewonnen.") print("Spieler " + name_player2 + " hat gewonnen.")
run = False run = False
else: else: