Projekt bei Tigerjython Idee mit Code?
Guten Tag
Ich muss in der Schule ein Projekt mit dem Programm Tigerjython erstellen. Da ich es leider gar nicht kann, wollte ich fragen ob mir jemand einen funktionierenden Code senden könnte (zur Inspiration)? Es kann Alles mögliche sein es gibt keine genauen Vorgaben. Jedoch wäre es gut wenn es nicht allzu kompliziert wäre.
Vielen Dank für jegliche Antworten
1 Antwort
from gamegrid import *
from random import *
class Spielverwaltung(object):
spielstand = [0,0,0,0,0,0,0,0,0]
aktiver_spieler = 1
def naechsterSpieler(self):
if self.aktiver_spieler == 1:
self.aktiver_spieler = 2
else:
self.aktiver_spieler = 1
def zellePruefen(self,x,y):
listenpos = y*3+x
return self.spielstand[listenpos]
def setzen (self,x,y,spielernr):
symbol = Actor("sprites/mark_"+str(spielernr-1)+".gif")
feld.addActor(symbol,Location(x,y))
listenpos = y*3+x
self.spielstand[listenpos] = spielernr
def gewonnen (self,sn):
liste = self.spielstand
g = False
# waagerecht
if (liste[0:3] == [sn,sn,sn]) or (liste[3:6] == [sn,sn,sn]) or (liste[6:9] == [sn,sn,sn]):
g = True
# senkrecht
for x in range(0,3):
if (liste[x]==sn) and (liste[x+3] == sn) and (liste[x+6] == sn):
g = True
# diagonal
if (liste[0]==sn) and (liste[4] == sn) and (liste[8] == sn):
g = True
if (liste[2]==sn) and (liste[4] == sn) and (liste[6] == sn):
g = True
return g
def brettVoll(self):
return not (0 in self.spielstand)
def zufallsZug(self):
leer = []
for x in range(0,9):
if self.spielstand[x] == 0:
leer.append(x)
anzahl = len(leer)
zufall = randint(0,anzahl-1)
zelleNr = leer[zufall]
return zelleNr
def nrSetzen(self,pos,spielerNr):
y = pos // 3
x = pos % 3
self.setzen(x,y,spielerNr)
def computerZug(self):
leer = []
for x in range(0,9):
if self.spielstand[x] == 0:
leer.append(x)
anzahl = len(leer)
backup = self.spielstand[:]
# Gewinnmöglichkeit checken
for x in range(0,anzahl):
self.spielstand = backup[:]
self.spielstand[leer[x]] = 2
if self.gewonnen(2):
self.spielstand = backup[:]
return leer[x]
# Verliermöglichkeit verhindern
for x in range(0,anzahl):
self.spielstand = backup[:]
self.spielstand[leer[x]] = 1
if self.gewonnen(1):
self.spielstand = backup[:]
return leer[x]
# Sonst: Zufallszug
self.spielstand = backup[:]
return self.zufallsZug()
def mausKlick(ereignis):
# geklickte Zelle ermitteln:
zellenPos = feld.toLocationInGrid(ereignis.getX(),ereignis.getY())
zx = zellenPos.getX()
zy = zellenPos.getY()
# Wenn Zelle leer, dann weiter:
if spiel.zellePruefen(zx,zy) == 0:
spiel.setzen(zx,zy,spiel.aktiver_spieler)
if spiel.gewonnen(spiel.aktiver_spieler):
msgDlg("Der Spieler hat gegen den Computer gewonnen!")
elif (spiel.brettVoll()):
msgDlg("Das Spiel ist beendet: Unentschieden!")
else:
spiel.aktiver_spieler = 2
delay(1000)
spiel.nrSetzen(spiel.computerZug(),2)
if spiel.gewonnen(spiel.aktiver_spieler):
msgDlg("Der Computer hat gegen den Spieler gewonnen!")
elif (spiel.brettVoll()):
msgDlg("Das Spiel ist beendet: Unentschieden!")
else:
spiel.aktiver_spieler = 1
feld = GameGrid(3,3,100,Color.BLACK,False,mouseReleased=mausKlick)
feld.setBgColor(Color.WHITE)
feld.setTitle("Tic Tac Toe")
feld.show()
spiel = Spielverwaltung()
Versuchs mal mit diesem Tic Tac Toe. Ich habe das Programm so programmiert, das der Computer "schlau" ist.
Woher ich das weiß:Hobby