[英]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.