如何用pymunk的冲突处理程序调用函数?

2024-06-01 12:01:59 发布

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

我试图实现一个人工智能来解决一个简单的任务:从a移动到B,同时避开障碍物。在

到目前为止,我使用了pymunk和{}来构建环境,而且效果非常好。但是现在我要面对下一步:为了获得强化学习算法的奖励,我需要检测玩家和墙之间的碰撞。或者只是在遇到墙/障碍物时重启环境。在

设置c_handler.begin函数等于Game.restart函数,这有助于我打印出播放器实际上击中了什么东西。在

但是除了print()之外,我不能访问任何其他关于玩家位置的函数,我真的不知道下一步该怎么做。在

那么如何使用pymunk冲突来重新启动环境呢?或者有没有其他方法来重置甚至是其他库来建立一个合适的环境?在

def restart(self, arbiter, data):
    car.body.position = 50, 50
    return True 

def main(self):
[...]
c_handler = space.add_collision_handler(1,2)
c_handler.begin = Game.restart
[...]  

Tags: 函数self算法game环境def玩家播放器
1条回答
网友
1楼 · 发布于 2024-06-01 12:01:59

总的来说,阅读一些关于类在python中的工作方式,特别是类实例变量是如何工作的,似乎对您很有用。在

无论如何,如果您已经知道要操作car变量,那么可以将其存储在类本身中。那么既然你在重启方法中有了自可用性,你就可以在那里做任何事情。在

或者,另一个选项是从传入回调的仲裁器中找出要更改的主体。在

选项1:

class MyClass:

    def restart(self, space, arbiter, data):
        self.car.body.position = 50,50
        return True

    def main(self):
        [...]
        self.car = car
        c_handler = space.add_collision_handler(1,2)
        c_handler.begin = self.restart
        [...]

选项2:

^{pr2}$

相关问题 更多 >