Ich habe ein einfaches TicTacToe programmiert.
Es funktioniert zwar grundsätzlich,ist aber natürlich nicht ganz perfekt und ich hab noch eine Frage und will natürlich auch eure Kritik am Stil hören.
Frage: Die ewig langen if-Bedingungen wirken sehr unschön auf mich, hab aber keine Idee wie ich das verbessern könnte. Weiß jemand von euch wie das schöner gehen würde?
Code: Alles auswählen
import random
class TicTacToe():
def __init__(self):
self.feld = [1, 2, 3, 4, 5, 6, 7, 8, 9]
self.spielergewonnen = False
self.computergewonnen = False
print "Das ist TicTacToe.\nDu bist Spieler x, der Computer Spieler o.\nUm zu gewinnen musst du 3 x \nin eine Reihe bekommen. \nUm ein x in ein Feld zu zeichnen, \ngib die entsprechende Nummer an."
def Spielfeld(self):
print "_______"
print self.feld[0], "|", self.feld[1],"|", self.feld[2]
print "_______"
print self.feld[3], "|", self.feld[4],"|", self.feld[5]
print "_______"
print self.feld[6], "|", self.feld[7],"|", self.feld[8]
print "_______"
def Spieler(self):
wahl = input("Welches Feld waehlst du?")
if wahl not in self.feld:
print "Ungueltige Eingabe"
else:
self.feld[wahl-1] = "x"
def Computer(self):
self.moeglich = False
while self.moeglich == False:
self.pcwahl = random.choice(self.feld)
if self.pcwahl == "x" or self.pcwahl == "o":
continue
else:
self.feld[self.pcwahl-1] = "o"
self.moeglich = True
def Ueberpruefung(self):
if self.feld[0] == "x" and self.feld[1] == "x" and self.feld[2] == "x" or self.feld[3] == "x" and self.feld[4] == "x" and self.feld[5] == "x" or self.feld[6] == "x" and self.feld[7] == "x" and self.feld[8] == "x" or self.feld[0] == "x" and self.feld[3] == "x" and self.feld[6] == "x" or self.feld[1] == "x" and self.feld[4] == "x" and self.feld[7] == "x" or self.feld[2] == "x" and self.feld[5] == "x" and self.feld[8] == "x" or self.feld[0] == "x" and self.feld[3] == "x" and self.feld[6] == "x" or self.feld[1] == "x" and self.feld[4] == "x" and self.feld[7] == "x" or self.feld[2] == "x" and self.feld[5] == "x" and self.feld[8] == "x" or self.feld[2] == "x" and self.feld[4] == "x" and self.feld[6] == "x" or self.feld[0] == "x" and self.feld[4] == "x" and self.feld[8] == "x" :
self.spielergewonnen = True
print "Du hast gewonnen!"
elif self.feld[0] == "o" and self.feld[1] == "o" and self.feld[2] == "o" or self.feld[3] == "o" and self.feld[4] == "o" and self.feld[5] == "o" or self.feld[6] == "o" and self.feld[7] == "o" and self.feld[8] == "o" or self.feld[0] == "o" and self.feld[3] == "o" and self.feld[6] == "o" or self.feld[1] == "o" and self.feld[4] == "o" and self.feld[7] == "o" or self.feld[2] == "o" and self.feld[5] == "o" and self.feld[8] == "o" or self.feld[0] == "o" and self.feld[3] == "o" and self.feld[6] == "o" or self.feld[1] == "o" and self.feld[4] == "o" and self.feld[7] == "o" or self.feld[2] == "o" and self.feld[5] == "o" and self.feld[8] == "o" or self.feld[2] == "o" and self.feld[4] == "o" and self.feld[6] == "o" or self.feld[0] == "o" and self.feld[4] == "o" and self.feld[8] == "o" :
self.computergewonnen = True
print "Du hast verloren."
elif 1 not in self.feld and 2 not in self.feld and 3 not in self.feld and 4 not in self.feld and 5 not in self.feld and 6 not in self.feld and 7 not in self.feld and 8 not in self.feld and 9 not in self.feld:
print "Unentschieden."
self.computergewonnen = True
self.spielergewonnen = True
spiel = TicTacToe()
while spiel.spielergewonnen == False and spiel.computergewonnen == False:
spiel.Spielfeld()
spiel.Spieler()
spiel.Computer()
spiel.Ueberpruefung()
spiel.Spielfeld()