Hilfe beim programmieren von Tic Tag toe
Verfasst: Freitag 24. Februar 2023, 16:25
Hallo,
ich programmiere im Moment ein Tic Tac Toe Spiel und leider fehlt mir noch eine Funktion, die ich nicht hinbekomme. Ich möchte, dass der Computer nur Felder besetzt, die frei sind, das heißt, wo kein X oder O gesetzt wurde.
Ich bin mir sicher, dass es einfach ist, jedoch bin ich ein kompletter Anfänger und mag programmieren auch nicht besonders gern.
Wenn mir jemand helfen könnte und vielleicht auch Tipps zum verbessern des Programmes geben könnte, wäre ich sehr dankbar.
Hier ist der Code:
spiel_aktiv = True
aktiver = "X"
aktiver1= "O"
durchgang=0
spielfeld = [" ",
"1", "2", "3",
"4", "5", "6",
"7", "8", "9"]
def spielfeld_ausgeben():
print(spielfeld[1] + " " + spielfeld[2] + " " + spielfeld[3])
print(spielfeld[4] + " " + spielfeld[5] + " " + spielfeld[6])
print(spielfeld[7] + " " + spielfeld[8] + " " + spielfeld[9])
P="Partner"
C="Computer"
PC= input("Möchtest du gegen einen Partner oder gegen den Computer spielen?")
if (PC==P):
print("Der erste Spieler ist X. Der zweite ist O")
def spieler_wechsel(aktiver):
if aktiver == "X":
aktiver = "O"
else:
aktiver = "X"
return aktiver
def spieler_eingabe(aktiver):
spieler = int(input(f"Spieler {aktiver}: Welches Feld möchtest du besetzen?"))
if spielfeld[spieler] == "X" or spielfeld[spieler] == "O":
print("Dieses Feld ist besetzt, probiere ein anderes!")
spieler_eingabe(aktiver)
else:
spielfeld[spieler]=aktiver
def Gewinner(spiel_aktiv):
if spielfeld[1] == spielfeld[2] == spielfeld[3]:
print(f"Spieler {spielfeld[1]} hat gewonnen")
spiel_aktiv = False
if spielfeld[4] == spielfeld[5] == spielfeld[6]:
print(f"Spieler {spielfeld[4]} hat gewonnen")
spiel_aktiv = False
if spielfeld[7] == spielfeld[8] == spielfeld[9]:
print(f"Spieler {spielfeld[7]} hat gewonnen")
spiel_aktiv = False
if spielfeld[1] == spielfeld[4] == spielfeld[7]:
print(f"Spieler {spielfeld[1]} hat gewonnen")
spiel_aktiv = False
if spielfeld[2] == spielfeld[5] == spielfeld[8]:
print(f"Spieler {spielfeld[2]} hat gewonnen")
spiel_aktiv = False
if spielfeld[3] == spielfeld[6] == spielfeld[9]:
print(f"Spieler {spielfeld[3]} hat gewonnen")
spiel_aktiv = False
if spielfeld[1] == spielfeld[5] == spielfeld[9]:
print(f"Spieler {spielfeld[1]} hat gewonnen")
spiel_aktiv = False
if spielfeld[3] == spielfeld[5] == spielfeld[7]:
print(f"Spieler {spielfeld[3]} hat gewonnen")
spiel_aktiv = False
spiel_aktiv = unentschieden(spiel_aktiv)
return spiel_aktiv
def unentschieden(spiel_aktiv):
if (spielfeld[1] == "X" or spielfeld[1] == "O") \
and (spielfeld[2] == "X" or spielfeld[2] == "O") \
and (spielfeld[3] == "X" or spielfeld[3] == "O") \
and (spielfeld[4] == "X" or spielfeld[4] == "O") \
and (spielfeld[5] == "X" or spielfeld[5] == "O") \
and (spielfeld[6] == "X" or spielfeld[6] == "O") \
and (spielfeld[7] == "X" or spielfeld[7] == "O") \
and (spielfeld[8] == "X" or spielfeld[8] == "O") \
and (spielfeld[9] == "X" or spielfeld[9] == "O"):
print("Das Spiel ist unentschieden ausgefallen")
spiel_aktiv = False
return spiel_aktiv
spielfeld_ausgeben()
while spiel_aktiv:
spieler_eingabe(aktiver)
aktiver = spieler_wechsel(aktiver)
spiel_aktiv = Gewinner(spiel_aktiv)
spielfeld_ausgeben()
durchgang = durchgang + 1
if not spiel_aktiv:
print("Sie haben" ,durchgang, "durchgänge gebraucht, um zu gewinnen")
if (PC==C):
import random
z=random.randint(1,9)
def spieler_wechsel(aktiver):
if aktiver== "X":
aktiver= "O"
else:
aktiver = "X"
spielfeld[z]=aktiver1
return aktiver
def spieler_eingabe(aktiver):
spieler = int(input(f"Spieler {aktiver}: Welches Feld möchtest du besetzen?"))
if spielfeld[spieler] == "X" or spielfeld[spieler] == "O":
print("Dieses Feld ist besetzt, probiere ein anderes!")
spieler_eingabe(aktiver)
else:
spielfeld[spieler]=aktiver
def Gewinner(spiel_aktiv):
if spielfeld[1] == spielfeld[2] == spielfeld[3]:
print(f"Spieler {spielfeld[1]} hat gewonnen")
spiel_aktiv = False
if spielfeld[4] == spielfeld[5] == spielfeld[6]:
print(f"Spieler {spielfeld[4]} hat gewonnen")
spiel_aktiv = False
if spielfeld[7] == spielfeld[8] == spielfeld[9]:
print(f"Spieler {spielfeld[7]} hat gewonnen")
spiel_aktiv = False
if spielfeld[1] == spielfeld[4] == spielfeld[7]:
print(f"Spieler {spielfeld[1]} hat gewonnen")
spiel_aktiv = False
if spielfeld[2] == spielfeld[5] == spielfeld[8]:
print(f"Spieler {spielfeld[2]} hat gewonnen")
spiel_aktiv = False
if spielfeld[3] == spielfeld[6] == spielfeld[9]:
print(f"Spieler {spielfeld[3]} hat gewonnen")
spiel_aktiv = False
if spielfeld[1] == spielfeld[5] == spielfeld[9]:
print(f"Spieler {spielfeld[1]} hat gewonnen")
spiel_aktiv = False
if spielfeld[3] == spielfeld[5] == spielfeld[7]:
print(f"Spieler {spielfeld[3]} hat gewonnen")
spiel_aktiv = False
spiel_aktiv = unentschieden(spiel_aktiv)
return spiel_aktiv
def unentschieden(spiel_aktiv):
if (spielfeld[1] == "X" or spielfeld[1] == "O") \
and (spielfeld[2] == "X" or spielfeld[2] == "O") \
and (spielfeld[3] == "X" or spielfeld[3] == "O") \
and (spielfeld[4] == "X" or spielfeld[4] == "O") \
and (spielfeld[5] == "X" or spielfeld[5] == "O") \
and (spielfeld[6] == "X" or spielfeld[6] == "O") \
and (spielfeld[7] == "X" or spielfeld[7] == "O") \
and (spielfeld[8] == "X" or spielfeld[8] == "O") \
and (spielfeld[9] == "X" or spielfeld[9] == "O"):
print("Das Spiel ist unentschieden ausgefallen")
spiel_aktiv = False
return spiel_aktiv
spielfeld_ausgeben()
while spiel_aktiv:
spieler_eingabe(aktiver)
z=random.randint(1,9)
aktiver = spieler_wechsel(z)
spiel_aktiv = Gewinner(spiel_aktiv)
spiel_aktiv = unentschieden(spiel_aktiv)
spielfeld_ausgeben()
durchgang = durchgang + 1
ich programmiere im Moment ein Tic Tac Toe Spiel und leider fehlt mir noch eine Funktion, die ich nicht hinbekomme. Ich möchte, dass der Computer nur Felder besetzt, die frei sind, das heißt, wo kein X oder O gesetzt wurde.
Ich bin mir sicher, dass es einfach ist, jedoch bin ich ein kompletter Anfänger und mag programmieren auch nicht besonders gern.
Wenn mir jemand helfen könnte und vielleicht auch Tipps zum verbessern des Programmes geben könnte, wäre ich sehr dankbar.
Hier ist der Code:
spiel_aktiv = True
aktiver = "X"
aktiver1= "O"
durchgang=0
spielfeld = [" ",
"1", "2", "3",
"4", "5", "6",
"7", "8", "9"]
def spielfeld_ausgeben():
print(spielfeld[1] + " " + spielfeld[2] + " " + spielfeld[3])
print(spielfeld[4] + " " + spielfeld[5] + " " + spielfeld[6])
print(spielfeld[7] + " " + spielfeld[8] + " " + spielfeld[9])
P="Partner"
C="Computer"
PC= input("Möchtest du gegen einen Partner oder gegen den Computer spielen?")
if (PC==P):
print("Der erste Spieler ist X. Der zweite ist O")
def spieler_wechsel(aktiver):
if aktiver == "X":
aktiver = "O"
else:
aktiver = "X"
return aktiver
def spieler_eingabe(aktiver):
spieler = int(input(f"Spieler {aktiver}: Welches Feld möchtest du besetzen?"))
if spielfeld[spieler] == "X" or spielfeld[spieler] == "O":
print("Dieses Feld ist besetzt, probiere ein anderes!")
spieler_eingabe(aktiver)
else:
spielfeld[spieler]=aktiver
def Gewinner(spiel_aktiv):
if spielfeld[1] == spielfeld[2] == spielfeld[3]:
print(f"Spieler {spielfeld[1]} hat gewonnen")
spiel_aktiv = False
if spielfeld[4] == spielfeld[5] == spielfeld[6]:
print(f"Spieler {spielfeld[4]} hat gewonnen")
spiel_aktiv = False
if spielfeld[7] == spielfeld[8] == spielfeld[9]:
print(f"Spieler {spielfeld[7]} hat gewonnen")
spiel_aktiv = False
if spielfeld[1] == spielfeld[4] == spielfeld[7]:
print(f"Spieler {spielfeld[1]} hat gewonnen")
spiel_aktiv = False
if spielfeld[2] == spielfeld[5] == spielfeld[8]:
print(f"Spieler {spielfeld[2]} hat gewonnen")
spiel_aktiv = False
if spielfeld[3] == spielfeld[6] == spielfeld[9]:
print(f"Spieler {spielfeld[3]} hat gewonnen")
spiel_aktiv = False
if spielfeld[1] == spielfeld[5] == spielfeld[9]:
print(f"Spieler {spielfeld[1]} hat gewonnen")
spiel_aktiv = False
if spielfeld[3] == spielfeld[5] == spielfeld[7]:
print(f"Spieler {spielfeld[3]} hat gewonnen")
spiel_aktiv = False
spiel_aktiv = unentschieden(spiel_aktiv)
return spiel_aktiv
def unentschieden(spiel_aktiv):
if (spielfeld[1] == "X" or spielfeld[1] == "O") \
and (spielfeld[2] == "X" or spielfeld[2] == "O") \
and (spielfeld[3] == "X" or spielfeld[3] == "O") \
and (spielfeld[4] == "X" or spielfeld[4] == "O") \
and (spielfeld[5] == "X" or spielfeld[5] == "O") \
and (spielfeld[6] == "X" or spielfeld[6] == "O") \
and (spielfeld[7] == "X" or spielfeld[7] == "O") \
and (spielfeld[8] == "X" or spielfeld[8] == "O") \
and (spielfeld[9] == "X" or spielfeld[9] == "O"):
print("Das Spiel ist unentschieden ausgefallen")
spiel_aktiv = False
return spiel_aktiv
spielfeld_ausgeben()
while spiel_aktiv:
spieler_eingabe(aktiver)
aktiver = spieler_wechsel(aktiver)
spiel_aktiv = Gewinner(spiel_aktiv)
spielfeld_ausgeben()
durchgang = durchgang + 1
if not spiel_aktiv:
print("Sie haben" ,durchgang, "durchgänge gebraucht, um zu gewinnen")
if (PC==C):
import random
z=random.randint(1,9)
def spieler_wechsel(aktiver):
if aktiver== "X":
aktiver= "O"
else:
aktiver = "X"
spielfeld[z]=aktiver1
return aktiver
def spieler_eingabe(aktiver):
spieler = int(input(f"Spieler {aktiver}: Welches Feld möchtest du besetzen?"))
if spielfeld[spieler] == "X" or spielfeld[spieler] == "O":
print("Dieses Feld ist besetzt, probiere ein anderes!")
spieler_eingabe(aktiver)
else:
spielfeld[spieler]=aktiver
def Gewinner(spiel_aktiv):
if spielfeld[1] == spielfeld[2] == spielfeld[3]:
print(f"Spieler {spielfeld[1]} hat gewonnen")
spiel_aktiv = False
if spielfeld[4] == spielfeld[5] == spielfeld[6]:
print(f"Spieler {spielfeld[4]} hat gewonnen")
spiel_aktiv = False
if spielfeld[7] == spielfeld[8] == spielfeld[9]:
print(f"Spieler {spielfeld[7]} hat gewonnen")
spiel_aktiv = False
if spielfeld[1] == spielfeld[4] == spielfeld[7]:
print(f"Spieler {spielfeld[1]} hat gewonnen")
spiel_aktiv = False
if spielfeld[2] == spielfeld[5] == spielfeld[8]:
print(f"Spieler {spielfeld[2]} hat gewonnen")
spiel_aktiv = False
if spielfeld[3] == spielfeld[6] == spielfeld[9]:
print(f"Spieler {spielfeld[3]} hat gewonnen")
spiel_aktiv = False
if spielfeld[1] == spielfeld[5] == spielfeld[9]:
print(f"Spieler {spielfeld[1]} hat gewonnen")
spiel_aktiv = False
if spielfeld[3] == spielfeld[5] == spielfeld[7]:
print(f"Spieler {spielfeld[3]} hat gewonnen")
spiel_aktiv = False
spiel_aktiv = unentschieden(spiel_aktiv)
return spiel_aktiv
def unentschieden(spiel_aktiv):
if (spielfeld[1] == "X" or spielfeld[1] == "O") \
and (spielfeld[2] == "X" or spielfeld[2] == "O") \
and (spielfeld[3] == "X" or spielfeld[3] == "O") \
and (spielfeld[4] == "X" or spielfeld[4] == "O") \
and (spielfeld[5] == "X" or spielfeld[5] == "O") \
and (spielfeld[6] == "X" or spielfeld[6] == "O") \
and (spielfeld[7] == "X" or spielfeld[7] == "O") \
and (spielfeld[8] == "X" or spielfeld[8] == "O") \
and (spielfeld[9] == "X" or spielfeld[9] == "O"):
print("Das Spiel ist unentschieden ausgefallen")
spiel_aktiv = False
return spiel_aktiv
spielfeld_ausgeben()
while spiel_aktiv:
spieler_eingabe(aktiver)
z=random.randint(1,9)
aktiver = spieler_wechsel(z)
spiel_aktiv = Gewinner(spiel_aktiv)
spiel_aktiv = unentschieden(spiel_aktiv)
spielfeld_ausgeben()
durchgang = durchgang + 1