簡體   English   中英

Pygame在繪制矩形時出現麻煩

[英]Pygame touble when drawing a rectangle

因此,我隨機生成一個“世界”,並使用pygame進行繪制。 在我決定在我已經繪制的內容之上添加一些內容之前,該部分效果非常好。

代碼如下。 每件事都是無關緊要的,但是DISPLAY是我正在處理的表面,y.colour是3號元組,y.coord是(x,y)元組

for x in W_Map:
    for y in x:
        DISPLAY.fill(y.colour, pygame.Rect(y.coord[0]-tile_size, 
                                           y.coord[1]-tile_size, 
                                           y.coord[0]+tile_size, 
                                           y.coord[1]+tile_size))  

DISPLAY.fill(lime, pygame.Rect(300,300,310,310))

根據上面的游戲,這應該創建一個以305x305為中心的10x10正方形的石灰。 但是,結果如下圖所示:

這是結果

如您所見,代碼的第一部分完美地繪制了地形,但是當在已繪制的內容上創建石灰方塊時,它會變得很瘋狂。 整個功能是:

pygame.init()
DISPLAY = pygame.display.set_mode(
    (shape[0]*2*tile_size, shape[1]*2*tile_size))
DISPLAY.fill((0,0,0))
#Make and draw the Rects
for x in W_Map:
    for y in x:
        DISPLAY.fill(y.colour, pygame.Rect(y.coord[0]-tile_size, 
                                           y.coord[1]-tile_size, 
                                           y.coord[0]+tile_size, 
                                           y.coord[1]+tile_size))  

DISPLAY.fill(lime, pygame.Rect(300,300,310,310))

Pygame的Rect接受四個參數:x,y,寬度和高度,其中x和y相對於視口的左上角。 您的石灰矩形是使用pygame.Rect(300,300,310,310)創建的,意味着寬度和高度為310像素,位置為(300, 300) pygame.Rect(300,300,310,310) (300, 300)

要創建以(305, 305) pygame.Rect(300, 300, 10, 10) (305, 305)為中心的10x10矩形(305, 305)您需要使用pygame.Rect(300, 300, 10, 10) 您還可以創建一個輔助函數,將尺寸和中心點轉換為必要的矩形參數:

def center_rect(x, y, width, height):
    return pygame.Rect(x - width / 2, y - height / 2, width, height)

然后,您可以像下面這樣使用此輔助函數:

DISPLAY.fill(lime, center_rect(305, 305, 10, 10))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM