2015-10-18 116 views
0

是否有可能將雪碧放置在我點擊的位置?Pygame-雪碧設置位置與鼠標點擊

class sprite_to_place(pygame.sprite.Sprite): 
    def __init__(self, x_start_position , y_start_position): 
     pygame.sprite.Sprite.__init__(self) 
     self.image = pygame.image.load("a_picture.png") 
     self.rect = self.image.get_rect() 
     self.rect.x = x_start_position # x where I clicked 
     self.rect.y = y_start_position # y where I clicked 

當我初始化sprite_to_place時,我會使用pygame.mouse.get_pos()

,並在主迴路我把它用:

if event.type == pygame.MOUSEBUTTONDOWN: 
    sprite_to_place_group.draw(gameDisplay) 

但我怎麼能得到精靈的位置,如果我想改變其位置def update()? (我用allsprites_group.update()

def update(self, startpos=(x_start_position, y_start_position)): # how can I tell the function where the sprite is on the map? 
     self.pos = [startpos[0], startpos[1]] 
     self.rect.x = round(self.pos[0] - cornerpoint[0], 0) #x 
     self.rect.y = round(self.pos[1] - cornerpoint[1], 0) #y 

如果我想在我的例子不喜歡它,它說,x_start_positiony_start_position沒有定義。

謝謝!

回答

1

您存儲Sprite的當前位置已經在self.rect,因此您不需要x_start_positiony_start_position

如果你想存儲創建Sprite當你用原來的起始位置,你必須創建在初始化的成員:

#TODO: respect naming convention 
class sprite_to_place(pygame.sprite.Sprite): 
    # you can use a single parameter instead of two 
    def __init__(self, pos): 
     pygame.sprite.Sprite.__init__(self) 
     self.image = pygame.image.load("a_picture.png") 
     # you can pass the position directly to get_rect to set it's position 
     self.rect = self.image.get_rect(topleft=pos) 
     # I don't know if you actually need this 
     self.start_pos = pos 

然後在update

def update(self): 
    # current position is self.rect.topleft 
    # starting position is self.start_pos 
    # to move the Sprite/Rect, you can also use the move functions 
    self.rect.move_ip(10, 20) # moves the Sprite 10px vertically and 20px horizontally 
+0

好。但是仍然無法設置精靈的位置,我點擊了它。在我能檢查鼠標在主循環中的位置之前,我必須定義我的Sprite的位置。 – Holla

+0

所以,只需將您的主循環中精靈的位置設置爲鼠標位置即可。問題在哪裏? – sloth

+0

問題是,我想用鼠標點擊鼠標的位置在屏幕上創建精靈。所以如果我正確理解你的解決方案,這個精靈已經放置在地圖'pos'的位置上,並且它會被移動。想象一下,在戰略遊戲中放置一座建築物,那就是我所需要的。但是,非常感謝幫助我:) – Holla