Maus auf Bild Zentrieren

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Benutzeravatar
__blackjack__
User
Beiträge: 13174
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Giben: Du hast da zwei verschachtelte Ereignisschleifen. Das sollte nur eine sein.
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis
Giben
User
Beiträge: 13
Registriert: Montag 6. April 2020, 08:06

Ich kapiers einfach nicht :cry:
Wie bekomme ich jetzt das Sprite dazu um es mit der maus zu bewegen?? :cry:

Code: Alles auswählen

import pygame
from pygame.locals import *

#from pygame_functions import *
BREITE = 800    
HOEHE  = 600
WEIS =(255,255,255)
FPS = 60
pygame.display.set_caption("Varroa Invaders")
clock = pygame.time.Clock()
fenster = pygame.display.set_mode([BREITE,HOEHE])
hintergrund = pygame.image.load("bilder/wiese.jpg")

class Player (pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = pygame.image.load('Bilder/Daco50x49.png')
        self.rect = self.image.get_rect()
        self.rect.center = (0,0)
    
    def update(self):
            
        event = pygame.event.get() 
        if event.type == pygame.MOUSEMOTION:
            self.rect.top +=1
            
       
def main():
    spielaktiv = True
    spieler = Player()
    spritesall = pygame.sprite.Group(spieler)
   
    pygame.init()
    while spielaktiv:
        for event in pygame.event.get():
            if event.type==QUIT or (event.type==KEYDOWN and event.key==K_ESCAPE):
                spielaktiv = False
            
        fenster.blit(hintergrund,(0,0))
        spritesall.update()
        spritesall.draw(fenster)
        pygame.display.update()

        pygame.display.flip()
        clock.tick(FPS)
    pygame.quit()
if __name__ == "__main__":
    main()          
Benutzeravatar
__blackjack__
User
Beiträge: 13174
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Giben: Das Problem ist nicht das ``for`` sondern das da überhaupt `pygame.event.get()` aufgerufen wird. Das hat in einem `Sprite` nix zu suchen, das gehört ins Hauptprogramm.

`event.type` führt ja auch zu einem `AttributeError` weil das gar kein einzelnes Ereignis ist.
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis
Giben
User
Beiträge: 13
Registriert: Montag 6. April 2020, 08:06

Erstmal danke für deine Geduld :)

Also soweit bin ich auch gekommen.Aber wie bekomme ich jetzt die Mausteuerung hin?Wie schaffe ich es die Mauskoordinaten zur def update(sel)f zu übertragen?
Die koordinaten werden mir mit Print angezeigt, scheint also soweit zu funktionieren...

Code: Alles auswählen

   def update(self):
        self.rect.center 
            
       
def main():
    spielaktiv = True
    spieler = Player()
    spritesall = pygame.sprite.Group(spieler)
    
    pygame.init()
    while spielaktiv:
        for event in pygame.event.get():
            if event.type==QUIT or (event.type==KEYDOWN and event.key==K_ESCAPE):
                spielaktiv = False
            if event.type == pygame.MOUSEMOTION:
                bewegung = event.pos
                print (bewegung)
        spieler.update()
        fenster.blit(hintergrund,(0,0))
        #spritesall.update()
        spritesall.draw(fenster)
        pygame.display.update()
Antworten