Ich lerne seit einigen Tagen Python und habe mich an einer Übungsaufgabe zu TicTacToe versucht... Da ich mich selbst testen wollte, habe ich keinerlei Hilfe/Tipps verwendet und bin meiner Meinung nach zu einem zufriedenstellenden Ergebnis gekommen. Natürlich war die Musterlösung (wie ich erwartet habe) wesentlich anspruchsvoller und das Problem wurde bspw. mit Klassen gelöst, was soweit ich weiß für einen guten Programmierstil spricht. (Dafür ist mein script immerhin deutlich kürzer)
Dennoch wollte ich mal meine Lösung von etwas Fortgeschrittenen Usern bewerten lassen... Was haltet ihr von meinem Programmierstil? Ist es so, dass man mich dafür auslachen würde oder ist es gar nicht so schlimm wie ich befürchte? Das Ergebnis an sich gefällt mir sehr gut. Man kann das Programm starten/beenden, kann unendlich oft weiterspielen, und auch die Fehlermeldungen bei unzulässigen Zügen funktionieren einwandfrei....
PS: Wie anspruchsvoll wäre es, eine KI für das Programm zu implementieren? Habe gehört das soll gar nich so schwer sein, aber macht es als blutiger Anfänger überhaupt Sinn, sich da schon reinzudenken oder soll ich erst die Basics allesamt lernen?
Hier mein Code (Durch das Forum ist die Formatierung etwas zerstört)... Ich freue mich über jeden Kommentar dazu
(Vllt. könnte ich auch noch einige Funktionen einbauen wie z.B. den Spielstand, aber dafür bin ich aktuell zu faul...)
Code: Alles auswählen
global list1
list1 = [" ", " ", " ", " ", " ", " ", " ", " ", " "]
def spielfeld():
print(" ", list1[0], " | ", list1[1], " | ", list1[2], "\n ", list1[3], " | ", list1[4], " | ", list1[5], "\n ", list1[6], " | ", list1[7], " | ", list1[8], " ")
def zug_x():
x = 0
while x == 0:
z = int(input("Spieler mit X: Auf welchem Feld machst du deinen ersten Zug? [1-9]"))
z -= 1
if list1[z] == " ":
list1[z] = "X"
x = 1
else:
print("\nHier wurde bereits gesetzt!!!")
spielfeld()
def zug_o():
y = 0
while y == 0:
s = int(input("Spieler mit O: Auf welchem Feld machst du deinen ersten Zug? [1-9]"))
s -= 1
if list1[s] == " ":
list1[s] = "O"
y = 1
else:
print("\nHier wurde bereits gesetzt!!!")
spielfeld()
def play():
print("Das Spielfeld sieht wie folgt aus:\n 1 | 2 | 3 \n 4 | 5 | 6 \n 7 | 8 | 9 ")
while 1:
zug_x()
if ((list1[0] != " ") & (list1[0] == list1[3] == list1[6])) | (
(list1[0] != " ") & (list1[0] == list1[1] == list1[2])) | (
(list1[0] != " ") & (list1[0] == list1[4] == list1[8])):
print("\nDer Sieger ist der Spieler mit: ", list1[0])
break
elif ((list1[2] != " ") & (list1[2] == list1[5] == list1[8])) | (
(list1[2] != " ") & (list1[2] == list1[4] == list1[6])):
print("\nDer Sieger ist der Spieler mit: ", list1[2])
break
elif (list1[6] != " ") & (list1[6] == list1[7] == list1[8]):
print("\nDer Sieger ist der Spieler mit: ", list1[6])
break
elif ((list1[4] != " ") & (list1[4] == list1[1] == list1[7])) | (
(list1[4] != " ") & (list1[4] == list1[3] == list1[5])):
print("\nDer Sieger ist der Spieler mit: ", list1[4])
break
elif (list1[0] != " ") & (list1[1] != " ") & (list1[2] != " ") & (list1[3] != " ") & (list1[4] != " ") & (
list1[5] != " ") & (list1[6] != " ") & (list1[7] != " ") & (list1[8] != " "):
print("\nDas Spiel ging unentschieden aus!")
break
zug_o()
if ((list1[0] != " ") & (list1[0] == list1[3] == list1[6])) | (
(list1[0] != " ") & (list1[0] == list1[1] == list1[2])) | (
(list1[0] != " ") & (list1[0] == list1[4] == list1[8])):
print("\nDer Sieger ist der Spieler mit: ", list1[0])
break
elif ((list1[2] != " ") & (list1[2] == list1[5] == list1[8])) | (
(list1[2] != " ") & (list1[2] == list1[4] == list1[6])):
print("\nDer Sieger ist der Spieler mit: ", list1[2])
break
elif (list1[6] != " ") & (list1[6] == list1[7] == list1[8]):
print("\nDer Sieger ist der Spieler mit: ", list1[6])
break
elif ((list1[4] != " ") & (list1[4] == list1[1] == list1[7])) | (
(list1[4] != " ") & (list1[4] == list1[3] == list1[5])):
print("\nDer Sieger ist der Spieler mit: ", list1[4])
break
elif (list1[0] != " ") & (list1[1] != " ") & (list1[2] != " ") & (list1[3] != " ") & (list1[4] != " ") & (
list1[5] != " ") & (list1[6] != " ") & (list1[7] != " ") & (list1[8] != " "):
print("\nDas Spiel ging unentschieden aus!")
break
repeat = input("Gebe 1 ein, wenn ihr anfangen wollt, Tic-Tac-Toe zu spielen! :)")
while repeat == "1":
list1 = [" ", " ", " ", " ", " ", " ", " ", " ", " "]
play()
repeat = input("Gebe 1 ein, wenn ihr nochmal spielen wollt.")
else:
print("Bis zum nächsten Mal! :)")