微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python - 如何将对象移动到特定坐标python pygame?

如何解决python - 如何将对象移动到特定坐标python pygame?

我有一堆单独的线,它们构成了一个“狗”的“形状”。

我希望能够将此形状放在屏幕上的任何位置。

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

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

这是我目前的游戏代码

#initialise 
import pygame
pygame.init()

#colours
black = (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,5) #back
pygame.draw.line(gamedisplay,(580,450),5) #tail
pygame.draw.line(gamedisplay,(480,330),500),5) #back leg
pygame.draw.line(gamedisplay,(450,5) #back paw
pygame.draw.line(gamedisplay,350),(200,5) #belly
pygame.draw.line(gamedisplay,5) #front leg
pygame.draw.line(gamedisplay,(170,5) #front paw
pygame.draw.line(gamedisplay,300),5) #front leg
pygame.draw.circle(gamedisplay,(150,260),50,5) #head

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

    pygame.display.update()

解决方法

使用 pygame.draw.lines 而不是 pygame.draw.linespygame.draw.lines 绘制多个连续的直线段。

例如:

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。