Python Pygame从A到B的最短路线

Python Pygame从A到B的最短路线,python,pygame,Python,Pygame,我想创建一个程序,其中有一个像素选择表面上的一个随机点,然后沿着直线走到它。完成后,他选择另一个随机点。永远都是这样。问题是,我该怎么做 将其转换为x+=1或y+=1或x-=1或y-=1类指令 到目前为止,我得到了: class pixel: def __init__(self, x, y): self.x = x self.y = y self.walking = False def update(self): if self.walking == False:

我想创建一个程序,其中有一个像素选择表面上的一个随机点,然后沿着直线走到它。完成后,他选择另一个随机点。永远都是这样。问题是,我该怎么做 将其转换为
x+=1
y+=1
x-=1
y-=1
类指令

到目前为止,我得到了:

class pixel:
def __init__(self, x, y):
    self.x = x
    self.y = y
    self.walking = False
def update(self):
    if self.walking == False:
        self.walking = True
        self.destx = random.randint(0, width)
        self.desty = random.randint(0, height)
     #Some form of script to walk to that position
     if self.x == self.destx and self.y == self.desty:
         self.walking = False
生成直线上所有点的坐标,这似乎就是您要查找的。下面是它在Python中的一个实现:

生成直线上所有点的坐标,这似乎就是您要查找的。下面是它在Python中的一个实现:


这是计算机图形学中一个非常经典的问题(每个低级图形API必须在像素网格上绘制直线)。1962年,Bresenham(比我老得多)提出了这个问题的最佳解决方案

基本上,这个想法是找到要绘制的线段所覆盖的三角圆的八分之一,然后在x或y上循环。所有详细信息可在相应的维基百科页面上找到:

以及一个基于Pygame的实现:


这是计算机图形学中一个非常经典的问题(每个低级图形API必须在像素网格上绘制直线)。1962年,Bresenham(比我老得多)提出了这个问题的最佳解决方案

基本上,这个想法是找到要绘制的线段所覆盖的三角圆的八分之一,然后在x或y上循环。所有详细信息可在相应的维基百科页面上找到:

以及一个基于Pygame的实现:


除非pygame能帮你处理,否则你需要一些三角函数。你是说直接走到终点吗?我觉得你在创作某种动画。您可以计算距离,并使用数学模块中的sin()和cos()函数来获得x和y的增量。然后你可以将距离分割成许多部分,让它在很多时间内走一小段距离,使动画看起来流畅。除非pygame能帮你处理,否则你需要一些三角函数。你是说直接走到点吗?我觉得你在创作某种动画。您可以计算距离,并使用数学模块中的sin()和cos()函数来获得x和y的增量。然后可以将距离分割为多个片段,并使其多次在一小段距离内行走,以使动画看起来流畅。