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

32
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,6 +78,19 @@ 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
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: while True:
try: # Try eingebaut damit auch alle anderen Zeichen und Buchstaben abgefangen werden. 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") sel_field = input("Bitte ein Feld auswählen:\nZum beenden des Spiels q drücken.\n")
@ -87,7 +102,7 @@ def play_now():
continue continue
sel_field = int(sel_field) sel_field = int(sel_field)
if sel_field >= 1 and sel_field <= 9: 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': if field[sel_field] == 'X' or field[sel_field] == 'O':
print("Spielfeld wurde schon ausgewählt!\n") print("Spielfeld wurde schon ausgewählt!\n")
else: else:
return sel_field return sel_field
@ -100,12 +115,11 @@ def play_now():
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: