Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from cs1graphics import *
- from time import sleep
- class Quadrat:
- def __init__(self, spalte, zeile, farbe):
- # Konstruktordefinition
- #pass # statt ..., nichts passiert
- self.xlogisch = spalte
- self.ylogisch = zeile
- self.farbe = farbe
- self.darstellung = Square(20, Point(spalte*22 + 12, zeile*22 + 12))
- self.darstellung.setFillColor(farbe)
- def verschwinden(self):
- self.fenster.remove(self.darstellung)
- def anzeigenIn(self, fenster):
- self.fenster = fenster
- self.fenster.add(self.darstellung)
- def bewegenZu(self, x, y):
- # x/y sind logische Koordinaten
- self.xlogisch = x
- self.ylogisch = y
- # bewege die Darstellung angemessen
- self.darstellung.moveTo(x*22+12, y*22+12)
- def bewegenUm(self, dx, dy):
- self.bewegenZu(self.xlogisch + dx, self.ylogisch + dy)
- class Ostein:
- def __init__(self, spalte, zeile, spiel):
- self.spalte = spalte
- self.zeile = zeile
- self.spiel = spiel
- self.teil1 = Quadrat(self.spalte, self.zeile, "blue")
- self.teil2 = Quadrat(self.spalte + 1, self.zeile, "blue")
- self.teil3 = Quadrat(self.spalte, self.zeile + 1 , "blue")
- self.teil4 = Quadrat(self.spalte + 1, self.zeile + 1, "blue")
- def anzeigenIn(self, fenster):
- self.teil1.anzeigenIn(fenster)
- self.teil2.anzeigenIn(fenster)
- self.teil3.anzeigenIn(fenster)
- self.teil4.anzeigenIn(fenster)
- def rechts(self):
- if self.istPlatzierbar(self.spalte+2,self.zeile):
- self.spalte=self.spalte+1
- self.teil1.bewegenUm(1, 0)
- self.teil2.bewegenUm(1, 0)
- self.teil3.bewegenUm(1, 0)
- self.teil4.bewegenUm(1, 0)
- def links(self):
- if self.istPlatzierbar(self.spalte-1,self.zeile):
- self.spalte=self.spalte-1
- self.teil1.bewegenUm(-1, 0)
- self.teil2.bewegenUm(-1, 0)
- self.teil3.bewegenUm(-1, 0)
- self.teil4.bewegenUm(-1, 0)
- def sinken(self):
- if self.istPlatzierbar(self.spalte,self.zeile+1):
- self.zeile=self.zeile+1
- self.teil1.bewegenUm(0, 1)
- self.teil2.bewegenUm(0, 1)
- self.teil3.bewegenUm(0, 1)
- self.teil4.bewegenUm(0, 1)
- def istPlatzierbar(self,x,y):
- return(self.spiel.istPositionFrei(x,y) and self.spiel.istPositionFrei(x+1,y) and
- self.spiel.istPositionFrei(x,y+1) and self.spiel.istPositionFrei(x+1,y+1))
- class Spiel(EventHandler):
- def __init__(self, breite, hoehe):
- self.hoehe = hoehe
- self.breite = breite
- self.fenster = Canvas(breite*22-1,hoehe*22-1)
- self.stein = Ostein(breite/2-1,0,self)
- #magic
- EventHandler()
- self.fenster.addHandler(self)
- self.fenster.setAutoRefresh(False)
- def handle(self,Event):
- #diese methode wird aufgerufen sobald die maus oder Tastatur betätigt wird
- if Event.getKey() == "s":
- self.stein.sinken()
- self.fenster.refresh()
- if Event.getKey() == "a":
- self.stein.links()
- self.fenster.refresh()
- if Event.getKey() == "d":
- self.stein.rechts()
- self.fenster.refresh()
- if Event.getKey() == "0":
- #drehen
- pass
- def spielen(self):
- self.stein.anzeigenIn(self.fenster)
- self.fenster.refresh()
- def istPositionFrei(self,x,y):
- return(x>=0 and x<=self.breite-1 and y>=0 and y<=self.hoehe-1)
- s=Spiel(4,4)
- s.spielen()
Add Comment
Please, Sign In to add comment