2017-09-02 229 views
1

我試圖得出同樣的精靈類的兩個不同實例之間的線,精靈類,如下所示被編碼的(這只是__init__功能):如何使用pygame中的精靈矩形的邊?

class Atom(pygame.sprite.Sprite): 
"""Creates an atom of an element. 
The element can be specified using the element parameter. 
This will take a dict argument, contained in a constants file of some sort.""" 
def __init__(self, element, centre_loc): 
    pygame.sprite.Sprite.__init__(self) 

    self.image = pygame.Surface((30, 30), pygame.SRCALPHA) 
    pygame.gfxdraw.aacircle(self.image, 15, 15, 14, (0, 255, 0)) 
    pygame.gfxdraw.filled_circle(self.image, 15, 15, 14, (0, 255, 0)) 


    self.rect = self.image.get_rect() 
    self.rect.center = centre_loc 
    self.element = element 
    self.show_text(element) 
    self.print_properties(self.element) 

我試圖做到這一點使用代碼在這裏:

pygame.draw.line(screen, color, sprite.rect.right. sprite.rect.left) 

我簡化了上面的代碼,以突出我實際上做了什麼。 上面的實際代碼找到here,它在第25行被註釋掉了。其餘的代碼也可以在該存儲庫中找到以供參考。

我希望這將工作,但我得到這個錯誤,而不是:

TypeError: Invalid start point argument

所以我在做什麼錯在這裏?提前致謝。

回答

2

sprite.rect.leftsprite.rect.right而不是有效點,因爲它們都是單個整數。你可能想要的是sprite.rect.topleftsprite.rect.topright,或底部或中間等值。

+0

所以'sprite.rect.midleft'或'sprite.rect.midright'也能工作,還是有另一種獲得中間等價物的方法? – ModoUnreal

+0

是的,絕對。 [This](https://www.pygame.org/docs/ref/rect.html)頁面提供了可用於rect對象的方法和屬性的完整列表。 –

+0

我剛剛測試了'midleft'和'midright',它的工作原理!非常感謝! – ModoUnreal