ich auf einem RPG-Spiel arbeite, und ich möchte, dass meine playbutton so schnell verschwinden, wie sie gedrückt wurde. Gibt es eine Methode, von der ich das kann? Ich habe verschiedene Spielzustände sind sie: GAME, MENU, START Die playbutton auf dem START-Spielzustand angezeigt und ich möchte es verschwinden, wenn sie gedrückt wird oder wenn das Spiel Zustand ändert. Vielen Dank für Ihren Beitragmachen pygame Sprites verschwinden in Python
0
A
Antwort
0
Wenn die Taste wirklich ein Sprite ist, können Sie:
- das Sprite zu einer Gruppe hinzufügen Buttons genannt.
- Rendern Sie die Schaltflächen auf dem Bildschirm.
- Verwenden Sie die Methode kill(), um das Sprite aus der Gruppe Buttons zu entfernen.
- Rendern Sie den Bildschirm in der nächsten Runde neu.
http://pygame.org/docs/ref/sprite.html#pygame.sprite.Sprite.kill
0
Um etwas vom Bildschirm Sie etwas anderes über sie ziehen müssen zu entfernen. Die einfachste Antwort wäre also, den Button nicht mehr zu rendern und andere Sachen darüber rendern zu lassen.
Ein guter Weg, um es zu tun ist, dass alle sichtbaren Objekte erben pygame.sprite.Sprite und setzen Sie sie in sprite groups. Von hier aus können Sie einfach Sprites zeichnen, aktualisieren und entfernen.
Hier ist ein funktionierendes Beispiel. Drücken Sie die Tasten 1, 2 oder 3 machen die "Buttons" wieder erscheinen wieder:
import pygame
pygame.init()
screen = pygame.display.set_mode((200, 200))
clock = pygame.time.Clock()
class Button(pygame.sprite.Sprite):
def __init__(self, pos, size=(32, 32), image=None):
super(Button, self).__init__()
if image is None:
self.rect = pygame.Rect(pos, size)
self.image = pygame.Surface(size)
else:
self.image = image
self.rect = image.get_rect(topleft=pos)
self.pressed = False
def update(self):
mouse_pos = pygame.mouse.get_pos()
mouse_clicked = pygame.mouse.get_pressed()[0]
if self.rect.collidepoint(*mouse_pos) and mouse_clicked:
print("BUTTON PRESSED!")
self.kill() # Will remove itself from all pygame groups.
image = pygame.Surface((100, 40))
image.fill((255, 0, 0))
buttons = pygame.sprite.Group()
buttons.add(
Button(pos=(50, 25), image=image),
Button(pos=(50, 75), image=image),
Button(pos=(50, 125), image=image)
)
while True:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
quit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_1:
buttons.add(Button(pos=(50, 25), image=image))
elif event.key == pygame.K_2:
buttons.add(Button(pos=(50, 75), image=image))
elif event.key == pygame.K_3:
buttons.add(Button(pos=(50, 125), image=image))
buttons.update() # Calls the update method on every sprite in the group.
screen.fill((0, 0, 0))
buttons.draw(screen) # Draws all sprites to the given Surface.
pygame.display.update()
Verwandte Themen
- 1. Pygame Sprites Dissapearing
- 2. pygame erstellt mehrere Sprites
- 3. Pygame Sprites Fehler?
- 4. Kollisionserkennung mit Sprites in Pygame
- 5. Pygame-Sprites werden nicht gezeichnet
- 6. PyGame Sprites Gelegentlich nicht Zeichnung
- 7. Pygame ist wegen Sprites zurückgeblieben?
- 8. So erstellen Sie transluzente Sprites in Pygame
- 9. pygame Sprites bewegen sich in konstanter Linie
- 10. Pygame Collision mit wechselnden Sprites
- 11. Keine entfernten Sprites anzeigen, Pygame
- 12. Pygame - Pygame hält mehr Sprites Zeichnung nach ihnen
- 13. Machen Rechtecksprung in Pygame
- 14. Python Display Sprites
- 15. Wie kann man in Pygame ohne Sprites springen?
- 16. Ich kann keine Kollision in Pygame ohne Sprites erkennen
- 17. Wie reagiere ich auf Mausklicks auf Sprites in PyGame?
- 18. Kann nicht mehr als 1 Sprites angezeigt werden - PyGame
- 19. Pygame Sprites wird nicht zerstört, wenn eine Kollision auftritt
- 20. Pygame Enquiry - Wie verschiedene Sprites aus verschiedenen Klassen zusammenstoßen
- 21. machen Buttons erscheinen und verschwinden
- 22. Python Fehler Python 3.5 pygame
- 23. Python (pygame) unter Verwendung der Sprites und Klassen Klonen von Bildern
- 24. Sprites verschwinden, nachdem die Kamera den Player einholt Unity2D
- 25. Will Pygame blit Sprites mit einem Rect außerhalb des Displays
- 26. Python pygame IndentationError
- 27. Python-Zeitzähler in Pygame-Mausereignisse
- 28. Python Pygame Kräfte
- 29. Installieren pygame python Spiele
- 30. Python/Pygame Titel Rendering
In tkinter, würde ich start.unxyz() in der Start-Click-Handler setzen, wobei xyz Unabhängig davon, welche der Ort ist, Packung oder Raster verwendet, um es erscheinen zu lassen. pygame muss eine ähnliche Methode zum Verschwinden von Sprites haben. Durchsuchen Sie die Dokumente erneut. –
@TerryJanReedy Es gibt nichts Entsprechendes in Pygame. Sobald etwas auf den Bildschirm gezeichnet ist, wird es für den Rest des Programms da sein, wenn es nicht mit etwas anderem überstrichen wird. –
@TedKleinBergman Die tk-Geometrie-Methoden fügen ein Widget in eine Widget-Liste ein und die un-Methoden entfernen es aus der Liste. Dies scheint den Methoden pygame group.add und sprite.kill zu entsprechen. Das physische Neuzeichnen * ist jedoch * anders, und hier haben Sie Recht. Tk arbeitet mit dem OS-Fenstermanager zusammen, und Benutzercode ist nicht direkt beteiligt. 'Überstreichen' geschieht automatisch. Pygame erfordert eine explizite Bildschirmzeichnung vom Benutzer: mehr Flexibilität, mehr Verantwortung. –