Guest User

Untitled

a guest
Apr 23rd, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.81 KB | None | 0 0
  1. from cs1graphics import *
  2. from time import sleep
  3. class Quadrat:
  4. def __init__(self, spalte, zeile, farbe):
  5. # Konstruktordefinition
  6. #pass # statt ..., nichts passiert
  7. self.xlogisch = spalte
  8. self.ylogisch = zeile
  9. self.farbe = farbe
  10. self.darstellung = Square(20, Point(spalte*22 + 12, zeile*22 + 12))
  11. self.darstellung.setFillColor(farbe)
  12.  
  13. def verschwinden(self):
  14. self.fenster.remove(self.darstellung)
  15.  
  16. def anzeigenIn(self, fenster):
  17. self.fenster = fenster
  18. self.fenster.add(self.darstellung)
  19.  
  20. def bewegenZu(self, x, y):
  21. # x/y sind logische Koordinaten
  22. self.xlogisch = x
  23. self.ylogisch = y
  24. # bewege die Darstellung angemessen
  25. self.darstellung.moveTo(x*22+12, y*22+12)
  26.  
  27. def bewegenUm(self, dx, dy):
  28. self.bewegenZu(self.xlogisch + dx, self.ylogisch + dy)
  29.  
  30. class Ostein:
  31. def __init__(self, spalte, zeile, spiel):
  32. self.spalte = spalte
  33. self.zeile = zeile
  34. self.spiel = spiel
  35. self.teil1 = Quadrat(self.spalte, self.zeile, "blue")
  36. self.teil2 = Quadrat(self.spalte + 1, self.zeile, "blue")
  37. self.teil3 = Quadrat(self.spalte, self.zeile + 1 , "blue")
  38. self.teil4 = Quadrat(self.spalte + 1, self.zeile + 1, "blue")
  39.  
  40.  
  41.  
  42. def anzeigenIn(self, fenster):
  43. self.teil1.anzeigenIn(fenster)
  44. self.teil2.anzeigenIn(fenster)
  45. self.teil3.anzeigenIn(fenster)
  46. self.teil4.anzeigenIn(fenster)
  47.  
  48. def rechts(self):
  49. if self.istPlatzierbar(self.spalte+2,self.zeile):
  50. self.spalte=self.spalte+1
  51. self.teil1.bewegenUm(1, 0)
  52. self.teil2.bewegenUm(1, 0)
  53. self.teil3.bewegenUm(1, 0)
  54. self.teil4.bewegenUm(1, 0)
  55.  
  56.  
  57. def links(self):
  58. if self.istPlatzierbar(self.spalte-1,self.zeile):
  59. self.spalte=self.spalte-1
  60. self.teil1.bewegenUm(-1, 0)
  61. self.teil2.bewegenUm(-1, 0)
  62. self.teil3.bewegenUm(-1, 0)
  63. self.teil4.bewegenUm(-1, 0)
  64.  
  65.  
  66.  
  67.  
  68. def sinken(self):
  69. if self.istPlatzierbar(self.spalte,self.zeile+1):
  70. self.zeile=self.zeile+1
  71. self.teil1.bewegenUm(0, 1)
  72. self.teil2.bewegenUm(0, 1)
  73. self.teil3.bewegenUm(0, 1)
  74. self.teil4.bewegenUm(0, 1)
  75.  
  76.  
  77. def istPlatzierbar(self,x,y):
  78. return(self.spiel.istPositionFrei(x,y) and self.spiel.istPositionFrei(x+1,y) and
  79. self.spiel.istPositionFrei(x,y+1) and self.spiel.istPositionFrei(x+1,y+1))
  80.  
  81.  
  82. class Spiel(EventHandler):
  83. def __init__(self, breite, hoehe):
  84. self.hoehe = hoehe
  85. self.breite = breite
  86. self.fenster = Canvas(breite*22-1,hoehe*22-1)
  87. self.stein = Ostein(breite/2-1,0,self)
  88. #magic
  89. EventHandler()
  90. self.fenster.addHandler(self)
  91. self.fenster.setAutoRefresh(False)
  92.  
  93. def handle(self,Event):
  94. #diese methode wird aufgerufen sobald die maus oder Tastatur betätigt wird
  95. if Event.getKey() == "s":
  96. self.stein.sinken()
  97. self.fenster.refresh()
  98. if Event.getKey() == "a":
  99. self.stein.links()
  100. self.fenster.refresh()
  101. if Event.getKey() == "d":
  102. self.stein.rechts()
  103. self.fenster.refresh()
  104. if Event.getKey() == "0":
  105. #drehen
  106. pass
  107.  
  108.  
  109. def spielen(self):
  110. self.stein.anzeigenIn(self.fenster)
  111. self.fenster.refresh()
  112.  
  113.  
  114. def istPositionFrei(self,x,y):
  115. return(x>=0 and x<=self.breite-1 and y>=0 and y<=self.hoehe-1)
  116.  
  117. s=Spiel(4,4)
  118. s.spielen()
Add Comment
Please, Sign In to add comment