【问题标题】:How to move an object to specific coordinates python pygame?如何将对象移动到特定坐标python pygame?
【发布时间】:2021-07-22 21:06:46
【问题描述】:

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

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

例如,我的游戏会生成狗。如果玩家只有一条狗,我希望第一条生成的狗在顶部。如果他们有两个,我希望新的位于第一个之下。以此类推。

我使用 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()

【问题讨论】:

  • 你尝试过OOP吗?
  • 问题解决了吗?

标签: python python-3.x pygame drawing shapes


【解决方案1】:

使用pygame.draw.lines 代替pygame.draw.linespygame.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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-03
    • 1970-01-01
    相关资源
    最近更新 更多