button.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. # (c) Hochschule Anhalt, veröffentlicht unter MIT-Lizenz
  2. # Button
  3. # Autor: Viktor Lysow
  4. # Letzte Änderung: 30.03.2022
  5. # Zweck: Knöpfe fürs Startmenü
  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. import sys
  17. import sounds
  18. from screen import screen
  19. from screen import font
  20. aktivButton = False
  21. def textObjekt(text, font):
  22. textFlaeche = font.render(text, True, (0, 0, 0))
  23. return textFlaeche, textFlaeche.get_rect()
  24. def button(bx, by, nachricht, breite, hoehe, farbe_normal, farbe_aktiv, randDicke, maus, klick):
  25. global aktivButton
  26. if maus[0] > bx and maus[0] < bx + breite and maus[1] > by and maus[1] < by + hoehe:
  27. pygame.draw.rect(screen, farbe_aktiv, (bx, by, breite, hoehe))
  28. if klick[0] == 1 and aktivButton == False:
  29. aktivButton = True
  30. if nachricht == "Neues Spiel":
  31. sounds.soundTor()
  32. pygame.time.wait(1000)
  33. return True
  34. elif nachricht == "Ende":
  35. pygame.quit()
  36. sys.exit()
  37. if klick[0] == 0:
  38. aktivButton = False
  39. else:
  40. pygame.draw.rect(screen, farbe_normal, (bx, by, breite, hoehe))
  41. pygame.draw.rect(screen, (0, 0, 0), (bx, by, breite, hoehe), randDicke)
  42. textGrund, textKasten = textObjekt(nachricht, font)
  43. textKasten.center = ((bx + (breite / 2)), (by + (hoehe / 2)))
  44. screen.blit(textGrund, textKasten)
  45. return False