def __init__(self, title="Blank Window"): self.root = tkinter.Tk() self.root.title(title) # Spieler figuren self.spielergruen = tkinter.PhotoImage (file="Spieler_Gruen.gif") self.spielergelb = tkinter.PhotoImage (file="Spieler_Gelb.gif") self.Spielerweiß = tkinter.PhotoImage (file="Spieler_Weiß.gif") self.Oberfläche_erzeugen() self.__viergewinnt = viergewinntklasse() self.__Array = [["w" for x in range(7)] for y in range(6)]
def __init__(self, eigenefarbe, fremdefarbe, restzuege, spielfeld=[["w" for x in range(7)] for y in range(6)]): self.__eigeneSpielsteinfarbe = eigenefarbe self.__fremdeSpielsteinfarbe = fremdefarbe self.__Ausgang = "" self.__VierGewinntKlasse = viergewinntklasse(spielfeld, restzuege) self.KI_1 = KI(eigenefarbe, fremdefarbe) self.KI_2 = KI(fremdefarbe, eigenefarbe)
def test_B(self): viergewinnt = viergewinntklasse() Array = [["w" for x in range(7)] for y in range(6)] Array[0][0] = 'ge' Array[1][0] = 'gr' Array[2][0] = 'ge' Array[3][0] = 'ge' Array[4][0] = 'gr' Array[5][0] = 'ge' Array[0][1] = 'gr' Array[1][1] = 'gr' Array[2][1] = 'ge' Array[3][1] = 'gr' Array[4][1] = 'ge' Array[5][1] = 'gr' Array[0][2] = 'ge' Array[1][2] = 'gr' Array[2][2] = 'ge' Array[3][2] = 'gr' Array[4][2] = 'ge' Array[5][2] = 'gr' Array[1][3] = 'ge' Array[2][3] = 'gr' Array[3][3] = 'ge' Array[4][3] = 'gr' Array[5][3] = 'ge' Array[0][4] = 'ge' Array[1][4] = 'ge' Array[2][4] = 'gr' Array[3][4] = 'ge' Array[4][4] = 'gr' Array[5][4] = 'ge' Array[0][5] = 'gr' Array[1][5] = 'gr' Array[2][5] = 'gr' Array[3][5] = 'ge' Array[4][5] = 'gr' Array[5][5] = 'ge' Array[0][6] = 'ge' Array[1][6] = 'gr' Array[2][6] = 'ge' Array[3][6] = 'gr' Array[4][6] = 'ge' Array[5][6] = 'gr' viergewinnt._viergewinntklasse__Array = Array viergewinnt._viergewinntklasse__Spielergebnis() Output = viergewinnt._viergewinntklasse__Ergebnis self.assertEqual("", Output, "Überprüfung ist nicht korrekt")
def SinnvollerZug(self, Zug,zugüberprüfung, Ebene,egal): # überprüfung ob der Stein auch auf der richtigen Ebene landet if Zug == None: return False if Ebene == None or Ebene == 10000: Ebene = 10000 if self.__Spielfeld[int(0)][Zug] != "w": return False if Ebene != 10000 and Ebene < 5: if self.__Spielfeld[int(Ebene)+1][Zug] == "w": return False elif zugüberprüfung == False: return True if zugüberprüfung == True: # um sicherzugehen das man sich mit dem eigenen zug kein Grab schaufelt if self.__eigeneSpielsteinfarbe == "gr": reststeine = 20 else: reststeine = 19 spielfeld = copy.deepcopy(self.__Spielfeld) self.__VierGewinntKlasse = viergewinntklasse(spielfeld,reststeine) self.__VierGewinntKlasse.setSpielzug(Zug) self.__VierGewinntKlasse.ausführen() # Überprüfung ob man mit dem übernächsten zug gewinnen kann testKI = KI(self.__eigeneSpielsteinfarbe,self.__fremdeSpielsteinfarbe) testKI.setSpielfeld(self.__VierGewinntKlasse.getArray()) testKI.ÜberprüfungobdreiSteineineinerReiheliegen(self.__eigeneSpielsteinfarbe,self.__fremdeSpielsteinfarbe,False) testKIZug = testKI.__Spielzug testgegnerZug = Zug if testgegnerZug != None: self.__VierGewinntKlasse.setSpielzug(testgegnerZug) self.__VierGewinntKlasse.ausführen() else: return False # " Kontrolle ob der Gegner mit dem nächsten Zug gewinnen kann if self.__VierGewinntKlasse.getErgebnis() == self.__fremdeSpielsteinfarbe: return False else: # Überprüfung ob man sich selber verbauen kann if testKIZug == "" or egal == True: return True else: return False else: return True
def Spielzuggenerieren(self): steine = 0 for element in self.__Spielfeld: if element == "w": steine += 1 spalte = [0, 0, 0, 0, 0, 0, 0, 0] xy = 0 while xy < 8: self.__VierGewinntKlasse = viergewinntklasse( self.__Spielfeld, steine) self.__VierGewinntKlasse.setSpielzug(0) self.__VierGewinntKlasse.ausführen() Game0 = Game(self.__eigeneSpielsteinfarbe, self.__fremdeSpielsteinfarbe, steine - 1, self.__VierGewinntKlasse.getArray()) if Game0.start() == True: spalte[xy] = Game0.getAusgang() xy += 1 b = max(spalte) return spalte.index(b)
def on_mouse_down(pos): global Vier_Gewinnt global Spielbeginnt global Spieler_Gelb_1_0 global Spieler_Gruen_1_0 global Spieler_Gelb_2_0 global Spieler_Gruen_2_0 # Spalte des Zuges ermitteln xmouse = pos[0] ymouse = pos[1] spalte = 100 if xmouse >= 2.5 and xmouse <= 67.4: spalte = 0 elif xmouse >= 67.5 and xmouse <= 132.4: spalte = 1 elif xmouse >= 132.5 and xmouse <= 197.4: spalte = 2 elif xmouse >= 197.5 and xmouse <= 262.4: spalte = 3 elif xmouse >= 152.5 and xmouse <= 327.4: spalte = 4 elif xmouse >= 217.5 and xmouse <= 392.4: spalte = 5 elif xmouse >= 272.5 and xmouse <= 457.4: spalte = 6 if ymouse <= 4 or ymouse >= 395: spalte = 100 if spalte != 100 and Vier_Gewinnt.getSpielbeendet() == False and Spielbeginnt == True: if Spieler_Gelb_1_0 == True and Vier_Gewinnt.getRestSpielzüge() %2 == 0 and Spieler_Gruen_1_0 == False: Vier_Gewinnt.setSpielzug(spalte) Vier_Gewinnt.ausführen() elif Spieler_Gruen_1_0 == True and Vier_Gewinnt.getRestSpielzüge() %2 == 1 and Spieler_Gelb_1_0 == False: Vier_Gewinnt.setSpielzug(spalte) Vier_Gewinnt.ausführen() # =============================================================================================================================================================================================================================== if Vier_Gewinnt.getRestSpielzüge() %2 == 0 and Vier_Gewinnt.getSpielbeendet() ==False and Spieler_Gruen_1_0 == True and Spieler_Gelb_1_0 == False : KI_Gruen_1_0.setSpielfeld(Array) Vier_Gewinnt.setSpielzug(KI_Gruen_1_0.Spielzuggenerieren()) time.sleep(1) Vier_Gewinnt.ausführen() # ================================================================================================================================================================================================================================ # =============================================================================================================================================================================================================================== if Vier_Gewinnt.getRestSpielzüge() %2 == 1 and Vier_Gewinnt.getSpielbeendet() ==False and Spieler_Gelb_1_0 == True and Spieler_Gruen_1_0 == False: KI_Gelb_1_0.setSpielfeld(Array) Vier_Gewinnt.setSpielzug(KI_Gelb_1_0.Spielzuggenerieren()) time.sleep(1) Vier_Gewinnt.ausführen() # ================================================================================================================================================================================================================================ # Spielfeld erstellen # =============================================================================================================================================================================================================================== if Vier_Gewinnt.getRestSpielzüge() %2 == 0 and Vier_Gewinnt.getSpielbeendet() ==False and Spieler_Gruen_2_0 == True and Spieler_Gelb_1_0 == False and Spieler_Gelb_2_0 == False : KI_Gruen_2_0.setSpielfeld(Array) Vier_Gewinnt.setSpielzug(KI_Gruen_2_0.Spielzuggenerieren()) #time.sleep(1) Vier_Gewinnt.ausführen() # ================================================================================================================================================================================================================================ # =============================================================================================================================================================================================================================== if Vier_Gewinnt.getRestSpielzüge() %2 == 1 and Vier_Gewinnt.getSpielbeendet() ==False and Spieler_Gelb_2_0 == True and Spieler_Gruen_1_0 == False and Spieler_Gruen_2_0 == False: KI_Gelb_2_0.setSpielfeld(Array) Vier_Gewinnt.setSpielzug(KI_Gelb_2_0.Spielzuggenerieren()) #time.sleep(1) Vier_Gewinnt.ausführen() # ================================================================================================================================================================================================================================ __Spielfeldgenerieren() elif Spielbeginnt == False: # Spieler 1 if xmouse >= 500 and xmouse <= 565 and ymouse >=100 and ymouse <=115: Spieler_Gelb_1_0 = False Spieler_Gelb_2_0 = False elif xmouse >= 600 and xmouse <= 615 and ymouse >=100 and ymouse <=115: Spieler_Gelb_1_0 = True Spieler_Gelb_2_0 = False elif xmouse >= 650 and xmouse <= 680 and ymouse >= 100 and ymouse <= 115: Spieler_Gelb_2_0 = True Spieler_Gelb_1_0 = False # Spieler 2 if xmouse >= 500 and xmouse <= 565 and ymouse >=250 and ymouse <=265: Spieler_Gruen_1_0 = False Spieler_Gruen_2_0 = False elif xmouse >= 600 and xmouse <= 615 and ymouse >=250 and ymouse <=265: Spieler_Gruen_1_0 = True Spieler_Gruen_2_0 = False elif xmouse >= 650 and xmouse <= 680 and ymouse >=250 and ymouse <=265: Spieler_Gruen_2_0 = True Spieler_Gruen_1_0 = False if Spieler_Gelb_1_0 == True: labelloeschen("Mensch ") labelloeschen("KI 2 ") elif Spieler_Gelb_2_0 == True: labelloeschen("Mensch ") labelloeschen("KI ") elif Spieler_Gelb_1_0 == False and Spieler_Gelb_2_0 == False: labelloeschen("KI ") labelloeschen("KI 2 ") if Spieler_Gruen_1_0 == True: labelloeschen("Mensch") labelloeschen("KI 2") elif Spieler_Gruen_2_0 == True: labelloeschen("Mensch") labelloeschen("KI") elif Spieler_Gruen_1_0 == False and Spieler_Gruen_2_0 == False: labelloeschen("KI") labelloeschen("KI 2") if Spieler_Gelb_1_0 != None and Spieler_Gruen_1_0 != None : Spielbeginnt = True #================================ if Vier_Gewinnt.getRestSpielzüge() %2 == 1 and Vier_Gewinnt.getSpielbeendet() ==False and Spieler_Gelb_1_0 == True and Spieler_Gruen_1_0 == False and Spieler_Gruen_2_0 == False: KI_Gelb_1_0.setSpielfeld(Array) Vier_Gewinnt.setSpielzug(KI_Gelb_1_0.Spielzuggenerieren()) Vier_Gewinnt.ausführen() #===================== #========================== if Vier_Gewinnt.getRestSpielzüge() %2 == 1 and Vier_Gewinnt.getSpielbeendet() ==False and Spieler_Gelb_2_0 == True and Spieler_Gruen_1_0 == False and Spieler_Gruen_2_0 == False: KI_Gelb_2_0.setSpielfeld(Array) Vier_Gewinnt.setSpielzug(KI_Gelb_2_0.Spielzuggenerieren()) Vier_Gewinnt.ausführen() #================================= __Spielfeldgenerieren() draw() # wenn Spielbeendet ist und ein neues Match starten soll if Vier_Gewinnt.getSpielbeendet() == True: g = False # Neues Match if (xmouse >= 18 and xmouse <= 135 and ymouse >=540 and ymouse <=555): Vier_Gewinnt.neuesMatch() __Spielfeldgenerieren() g = True # Neues Spiel if xmouse >= 148 and xmouse <= 248 and ymouse >=538 and ymouse <=555: Vier_Gewinnt = viergewinntklasse([["w" for x in range(7)] for y in range(6)]) Spieler_Gelb_1_0 = None Spieler_Gelb_2_0 = None Spieler_Gruen_1_0 = None Spieler_Gruen_2_0 = None Spielbeginnt = False LabelListe.clear() labelsetzen("Spielstand",400,450) labelsetzen("Spieler Gelb :",400,500) labelsetzen("Spieler Grün :",400,550) Spielbeginnt = False # Labels zur Auswahl der Spieler labelsetzen("Spieler 1",550 ,50) labelsetzen("Spieler 2",550, 200) # Spieler 1 labelsetzen("Mensch ",500,100) labelsetzen("KI ",600,100) labelsetzen("KI 2 ",650,100) # Spieler 2 labelsetzen("Mensch",500,250) labelsetzen("KI",600,250) labelsetzen("KI 2",650,250) __Spielfeldgenerieren() g = True if g == True: for label in LabelListe: if str(label.gettext()) == "Spieler Gelb hat gewonnen." or str(label.gettext()) == "Spieler Grün hat gewonnen." or str(label.gettext()) == "Unentschieden": label1 = label if str(label.gettext()) == "Neues Match": label2 = label if str(label.gettext()) == "Neues Spiel": label3 = label if len(LabelListe) > 11 or len(LabelListe) == 10: LabelListe.remove(label1) LabelListe.remove(label2) LabelListe.remove(label3) draw()
def __init__(self,text,xposition,yposition): self.__text = text self.__xposition = xposition self.__yposition = yposition def gettext(self): return self.__text def getxposition(self): return self.__xposition def getypsition(self): return self.__yposition Vier_Gewinnt = viergewinntklasse() KI_Gruen_1_0 = KI("gr","ge") KI_Gelb_1_0 = KI("ge","gr") KI_Gruen_2_0 = VierGewinnt_KI_2("gr","ge") KI_Gelb_2_0 = VierGewinnt_KI_2("ge","gr") HEIGHT = 600 WIDTH = 700 sys.setrecursionlimit(10000) Spieler_Gelb_1_0 = None Spieler_Gruen_1_0 = None Spieler_Gelb_2_0 = None Spieler_Gruen_2_0 = None xposition = 30