在python pygame中加速AI障碍检测
我正在尝试训练一个整洁的算法来玩一个叫做“curvefever”的简单游戏。 我能够创建curvefever的pygame版本,现在我想训练AI玩它。 因此,人工智能必须学会避开障碍:游戏周围的边界和每个玩家留下的轨迹,就像蛇一样 目前,我正在以以下方式进行:在python pygame中加速AI障碍检测,python,pygame,Python,Pygame,我正在尝试训练一个整洁的算法来玩一个叫做“curvefever”的简单游戏。 我能够创建curvefever的pygame版本,现在我想训练AI玩它。 因此,人工智能必须学会避开障碍:游戏周围的边界和每个玩家留下的轨迹,就像蛇一样 目前,我正在以以下方式进行: 每个玩家都有一组向前延伸的“传感器”,用于检测障碍物是否存在以及距离有多远 每个“传感器”是一条由几个pygame矩形组成的直线 对于每个传感器,它将检测是否与障碍物矩形之一发生碰撞,并计算碰撞到玩家的距离 哪个传感器检测到碰撞以及碰撞
- 每个玩家都有一组向前延伸的“传感器”,用于检测障碍物是否存在以及距离有多远
- 每个“传感器”是一条由几个pygame矩形组成的直线李>
- 对于每个传感器,它将检测是否与障碍物矩形之一发生碰撞,并计算碰撞到玩家的距离李>
- 哪个传感器检测到碰撞以及碰撞的距离是传递给神经网络的信息
class Rect(pygame.sprite.Sprite):
def __init__(self,x,y,width,height,dir,color):
super().__init__()
self.image = pygame.Surface([width, height])
self.image.fill(color)
self.rect = self.image.get_rect()
self.rect.centerx = x
self.rect.centery = y
并保存在精灵组中
我尝试的
我尝试添加一个map命令来摆脱for循环,但这并没有使它加快多少速度
我尝试添加函数名来删除函数查找,我读到这使它更快,但没有
我尝试使用“布雷森汉姆直线算法”检测障碍物,并检查障碍物(x,y)位置是否与视线重叠。虽然这是一种更快的方法,但由于它经常会错过障碍物,因此不起作用。这是因为视线与障碍物中心(rectx,recty)并不完全匹配,尽管它确实与矩形本身重叠
其他人用什么来检测障碍物(可能在pygame中)?任何关于如何使这更快或更有效的提示都是非常受欢迎的
非常感谢你的帮助 那么障碍物就是轨迹,你是如何储存它们的?这是一堆分数吗?或者这更像是一条蛇,它在网格中,你只能上下左右移动?障碍物都是矩形,并保存为一个精灵。组:类矩形(pygame.sprite.sprite):def uu init_uu(self,x,y,width,height,dir,color):super()。uu init_uuu()self.image=pygame.Surface([width,height])self.image.fill(color)self.rect=self.image.get_rect()self.rect.centerx=x self.rect.centery=yan您可以在任何方向上移动悬挂的
,角度?这些角度是否与“传感器”相关?这些角度是否恒定?是的,悬挂和角度与传感器有关。我添加了一张图片,希望能增加一些澄清,两者都是常量
class Rect(pygame.sprite.Sprite):
def __init__(self,x,y,width,height,dir,color):
super().__init__()
self.image = pygame.Surface([width, height])
self.image.fill(color)
self.rect = self.image.get_rect()
self.rect.centerx = x
self.rect.centery = y