KlasseMagie.py 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. # (c) Hochschule Anhalt, veröffentlicht unter MIT-Lizenz
  2. # Magie-Klasse
  3. # Autor: Viktor Lysow
  4. # Letzte Änderung: 18.04.2022
  5. # Zweck: Magie ist das, mit dem der Held schießt (blau) oder der Boss schießt (rosa). Magie fliegt herum.
  6. # Der Nachfolgende Codeblock "BLOCK1" sorgt dafür, dass man aus jeder Datei heraus das Hauptprogramm starten kann.
  7. # Dadurch kann man in jeder Datei auf "play" drücken und es wird automatisch main.py gestartet.
  8. if __name__=="__main__":
  9. import subprocess
  10. # Auf Linux oder Mac aktivieren Sie die folgende Zeile und deaktivieren Sie die Zeile danach:
  11. #subprocess.call("python3 main.py", shell=True) # die richtige Main-Datei aufrufen (unser eigentliches Hauptprogramm)
  12. subprocess.call("main.py", shell=True) # die richtige Main-Datei aufrufen (unser eigentliches Hauptprogramm)
  13. exit(0) # nun das Programm hier beenden .. wir wollen ja nur das Hauptprogramm starten und nicht *diese* Datei.
  14. # Ende "BLOCK1"
  15. import pygame
  16. from screen import screen
  17. from time import time
  18. from KlasseLevelmanagement import LevelManagement
  19. import sounds
  20. class Magie:
  21. def __init__(self, x, y, richtung, farbe, geschw):
  22. sounds.soundMagie() #Sound beim Erschaffen von Magie
  23. self.x = x
  24. self.y = y
  25. self.farbe = farbe
  26. self.richtung = richtung
  27. self.zeit = time()
  28. self.geschw = geschw
  29. # falls das Spiel bei Ihnen zu langsam / zu schnell läuft, ändern Sie die nachfolgende Zeile:
  30. self.geschw_FPS_trick = self.geschw * (30 / LevelManagement.fpsTarget) # hier mit der "30" experimentieren, falls nötig
  31. self.kugelRec = pygame.Rect(self.x + 12 , self.y +12, 24, 24)
  32. self.bildbewegung = 2
  33. self.bildMagie = [pygame.image.load(f"Bilder/Magie/{farbe}1.png"),
  34. pygame.image.load(f"Bilder/Magie/{farbe}2.png"),
  35. pygame.image.load(f"Bilder/Magie/{farbe}3.png"),
  36. pygame.image.load(f"Bilder/Magie/{farbe}2.png")]
  37. if self.richtung == 0: #oben
  38. self.y -= self.geschw_FPS_trick
  39. elif self.richtung == 1: #unten
  40. self.y += self.geschw_FPS_trick
  41. elif self.richtung == 2: #rechts
  42. self.x += self.geschw_FPS_trick
  43. elif self.richtung == 3: #links
  44. self.x -= self.geschw_FPS_trick
  45. elif self.richtung == 4: #oben links Bonus!!!!
  46. self.y -= self.geschw_FPS_trick
  47. self.x -= self.geschw_FPS_trick
  48. elif self.richtung == 5: #oben rechts Bonus!!!!
  49. self.y -= self.geschw_FPS_trick
  50. self.x += self.geschw_FPS_trick
  51. elif self.richtung == 6: # unten links Bonus!!!!
  52. self.y += self.geschw_FPS_trick
  53. self.x -= self.geschw_FPS_trick
  54. elif self.richtung == 7: #unten rechts Bonus!!!!
  55. self.y += self.geschw_FPS_trick
  56. self.x += self.geschw_FPS_trick
  57. def bewegung(self):
  58. if self.richtung == 0: #oben
  59. self.y -= self.geschw_FPS_trick
  60. elif self.richtung == 1: #unten
  61. self.y += self.geschw_FPS_trick
  62. elif self.richtung == 2: #rechts
  63. self.x += self.geschw_FPS_trick
  64. elif self.richtung == 3: #links
  65. self.x -= self.geschw_FPS_trick
  66. elif self.richtung == 4: #oben links Bonus!!!!
  67. self.y -= self.geschw_FPS_trick
  68. self.x -= self.geschw_FPS_trick
  69. elif self.richtung == 5: #oben rechts Bonus!!!!
  70. self.y -= self.geschw_FPS_trick
  71. self.x += self.geschw_FPS_trick
  72. elif self.richtung == 6: #unten links Bonus!!!!
  73. self.y += self.geschw_FPS_trick
  74. self.x -= self.geschw_FPS_trick
  75. elif self.richtung == 7: #unten rechts Bonus!!!!
  76. self.y += self.geschw_FPS_trick
  77. self.x += self.geschw_FPS_trick
  78. self.zeichnen()
  79. def zeichnen(self): # Bilder werden alle 0.1 Sekunden ausgetauscht
  80. if time() - self.zeit >= 0.1:
  81. self.zeit = time()
  82. self.bildbewegung += 1
  83. if self.bildbewegung >= 3:
  84. self.bildbewegung = 0
  85. screen.blit(self.bildMagie[self.bildbewegung], (self.x, self.y))
  86. self.kugelRec = pygame.Rect(self.x + 12, self.y + 12, 24, 24) #Kugel ist halb so groß wie das Bild