Skip to content

Instantly share code, notes, and snippets.

@horstjens
Last active July 3, 2025 07:37
Show Gist options
  • Save horstjens/e7277154922532f6fbf3bb61f32ac695 to your computer and use it in GitHub Desktop.
Save horstjens/e7277154922532f6fbf3bb61f32ac695 to your computer and use it in GitHub Desktop.
tictactoe
# tic tac toe
# done: maximal 9 spielzüge
# done: besetzes Feld soll nicht mehr spielbar sein
# done: gewinnermittlung
def hat_jemand_gewonnen(spieler):
"""
kontrolliert die liste felder, ob ein das zeichen
namens 'spieler' 3 x nebeneinander (horizontal,
waagrecht oder schräg) vorkommt
"""
for (a,b,c) in ((0,1,2), (3,4,5), (6,7,8), # waagrecht
(0,3,6), (1,4,7), (2,5,8), # senkrecht
(0,4,8), ( 2,4,6)): # schräg
if felder[a] == felder[b] == felder[c] == spieler:
return True
return False
def frage_nach_buchstabe(erlaubt):
while True:
print("Bitte q eingeben zum aufhören")
print("Oder Nummer des Feldes zum spielen:")
antwort = input(f"({erlaubt}) >>>").lower().strip()[0]
if antwort not in erlaubt:
print("ungültige Eingabe")
continue
return antwort
# index: 0 1 2 3 4 5 6 7 8
# nummer: 1 2 3 4 5 6 7 8 9
felder = [".",".",".",".",".",".",".",".","."]
zeichen = ["x", "o"]
spielbrett = """
7 | 8 | 9
--+---+--
4 | 5 | 6
--+---+--
1 | 2 | 3
"""
#spielzug = 1
erlaubt = "q123456789"
#while True:
print(spielbrett)
for spielzug in range(1,10):
wer_ist_dran = spielzug % 2 # 0 oder 1
spieler = zeichen[wer_ist_dran] # x oder o
print(f"spielzug: {spielzug} Spieler: {spieler}")
antwort = frage_nach_buchstabe(erlaubt)
if antwort == "q":
break
spielbrett = spielbrett.replace(antwort, spieler)
#spielzug += 1
# felder updaten
index = int(antwort) - 1
felder[index] = spieler
# erlaubte zeichen reduzieren
erlaubt = erlaubt.replace(antwort, "")
print(spielbrett)
# Gewinnermittlung
if hat_jemand_gewonnen(spieler):
print(f"GEWONNEN")
break
print("Auf Wiedersehen")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment