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
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: