2017-06-15 5 views
-1

Je travaille sur un clone de space shooter et j'ai besoin d'utiliser la souris pour déplacer le lecteur, maintenant le joueur se déplace vers la gauche et la droite en appuyant sur les touches fléchées.implémenter le mouvement de la souris sur pygame

Voici un fragment de mon code.

class Player(pygame.sprite.Sprite): 
def __init__(self): 
    pygame.sprite.Sprite.__init__(self) 
    ## scale the player img down 
    self.image = pygame.transform.scale(player_img, (50, 38)) 
    self.image.set_colorkey(BLACK) 
    self.rect = self.image.get_rect() 
    self.radius = 20 
    self.rect.centerx = WIDTH/2 
    self.rect.bottom = HEIGHT - 10 
    self.speedx = 0 


    ## unhide 
    if self.hidden and pygame.time.get_ticks() - self.hide_timer > 1000: 
     self.hidden = False 
     self.rect.centerx = WIDTH/2 
     self.rect.bottom = HEIGHT - 30 

    self.speedx = 0  ## makes the player static in the screen by default. 
    # then we have to check whether there is an event hanlding being done for the arrow keys being 
    ## pressed 

    ## will give back a list of the keys which happen to be pressed down at that moment 
    keystate = pygame.key.get_pressed()  
    if keystate[pygame.K_LEFT]: 
     self.speedx = -5 
    elif keystate[pygame.K_RIGHT]: 
     self.speedx = 5 

    #Fire weapons by holding spacebar 
    if keystate[pygame.K_SPACE]: 
     self.shoot() 

    ## check for the borders at the left and right 
    if self.rect.right > WIDTH: 
     self.rect.right = WIDTH 
    if self.rect.left < 0: 
     self.rect.left = 0 
+0

Vous voulez que le joueur suive la souris à une vitesse fixe ou soit toujours à la même coordonnée X que la souris? –

+0

oui voulez le joueur à suivre la souris à la coordonnée X et Y – orlandb

Répondre

1

vous pouvez utiliser

self.rect.center (or assign as you wish) = pygame.mouse.get_pos() 

Cela vous donne (x, y) de la souris, puis mettre le lecteur coords à cette valeur

Utilisez cette option pour rendre la souris invisible la fenêtre pygame ou bien vous verrez le pointeur ainsi que le joueur

pygame.mouse.set_visible(False) 
+0

comment je l'utilise dans mon code? – orlandb

+0

Pourquoi n'y a-t-il pas une fonction update() dans votre classe de lecteur si vous utilisez des sprites? Plus vous vérifiez l'entrée d'utilisateur dans la classe elle-même? Comment puis-je vous dire où vous devez mettre ce code sans regarder le code entier? Tout ce que je peux dire, c'est de définir la position du joueur à la position actuelle de la souris (de préférence dans la fonction update() de la classe player car c'est un sprite). – GLaDOS

1

utiliser le code suivant pour m Déplacer le mouvement ou cliquer

if pygame.event.get() == MOUSEMOTION: 
    x,y=mousex,mousey=event.pos 
elif event.type == MOUSEBUTTONUP: 
    mousex,mousey=event.pos 
    mouseClicked = True  
1

Je résous mon problème en utilisant ceci.

if event.type == pygame.MOUSEMOTION: 
     player.rect.topleft = pygame.mouse.get_pos()