如何将对象移动到游戏中的特定坐标?

2024-05-14 23:01:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一堆独立的线条,它们组成了一个“狗”的“形状”

我希望能够把这个形状放在屏幕上的任何地方

例如,我的游戏将生成狗。如果玩家只有一条狗,我希望生成的第一条狗位于顶部。如果他们有两个,我希望新的在第一个下面。等等

我正在使用Python和PyGame,但我可以导入不同的模块

这是我到目前为止的游戏代码:

#initialise 
import pygame
pygame.init()

#colours
black = (0, 0, 0)
white = (255, 255, 255)


gameDisplay = pygame.display.set_mode((800, 600))
gameDisplay.fill(white)

#lines (dog)
pygame.draw.line(gameDisplay, black, (195, 250), (500, 250), 5) #back
pygame.draw.line(gameDisplay, black, (500, 250), (580, 450), 5) #tail
pygame.draw.line(gameDisplay, black, (580, 450), (480, 330), 5) #tail
pygame.draw.line(gameDisplay, black, (480, 330), (480, 500), 5) #back leg
pygame.draw.line(gameDisplay, black, (480, 500), (450, 500), 5) #back paw
pygame.draw.line(gameDisplay, black, (450, 500), (450, 350), 5) #back leg
pygame.draw.line(gameDisplay, black, (450, 350), (200, 350), 5) #belly
pygame.draw.line(gameDisplay, black, (200, 350), (200, 500), 5) #front leg
pygame.draw.line(gameDisplay, black, (200, 500), (170, 500), 5) #front paw
pygame.draw.line(gameDisplay, black, (170, 500), (170, 300), 5) #front leg
pygame.draw.circle(gameDisplay, black, (150, 260), 50, 5) #head

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()

    pygame.display.update()

Tags: event游戏displaylinebackpygametailblack
1条回答
网友
1楼 · 发布于 2024-05-14 23:01:38

使用^{}代替^{}pygame.draw.lines绘制多条连续直线段

例如:

points = [(195, 250), (500, 250), (580, 450), (480, 330)]
pygame.draw.lines(gameDisplay, black, False, points, 5) 

使用List comprehensions生成带有转换坐标的新列表:

def draw_lines(surf, color, trans_x, trans_y, points, width=0):
    trans_points = [(trans_x + p[0], trans_y + p[1]) for p in points]
    pygame.draw.lines(surf, color, False, trans_points, width) 
draw_lines(gameDisplay, black, False, 100, 100, points, 5)

相关问题 更多 >

    热门问题