Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 巨蟒游戏运动_Python_Cocos2d Python - Fatal编程技术网

Python 巨蟒游戏运动

Python 巨蟒游戏运动,python,cocos2d-python,Python,Cocos2d Python,我正在为一个商业问题进行模拟,但我正在尝试构建一个2d游戏来演示模拟的动作 为了做到这一点,我从一个实际的python游戏开始,我在网上找到了一些代码 目标是通过随机整数创建100个模拟动作(上、下、左、右、停)。例如,random=1,然后向左移动 出于某种原因,我可以发送第一个动作,但第二到第100个动作被游戏忽略 有人能告诉我我做错了什么吗 我非常感谢有人的专业知识 GitHub链接:: 正如@Blckknght所指出的,只有在调用cocos.director.director.run(游

我正在为一个商业问题进行模拟,但我正在尝试构建一个2d游戏来演示模拟的动作

为了做到这一点,我从一个实际的python游戏开始,我在网上找到了一些代码

目标是通过随机整数创建100个模拟动作(上、下、左、右、停)。例如,random=1,然后向左移动

出于某种原因,我可以发送第一个动作,但第二到第100个动作被游戏忽略

有人能告诉我我做错了什么吗

我非常感谢有人的专业知识

GitHub链接::


正如@Blckknght所指出的,只有在调用cocos.director.director.run(游戏场景)之后,才能绘制层
Game
并运行其其他预定功能(在您的例子中是
Game.update
)。这就是为什么您看不到速度更新-它们在绘图开始时完成

您应该删除调用
game\u layer.simulate()
,因为它没有预期的效果

然后你可以做:

def simulate(self, dt):
    if self.x > 0:  # set this to 100 in constructor
        rand = random.randint(1,5)
        if rand == 1:
            self.movePlayer("left")
            print("left")
        elif rand == 2:
            self.movePlayer("right")
            print("right")
        elif rand == 3:
            self.movePlayer("up")
            print("up")
        elif rand == 4:
            self.movePlayer("down")
            print("down")

        elif rand == 5:
            self.movePlayer("space")
            print("space")
        x -= 1
请注意,我删除了对
time.sleep
的调用。不确定这些是否会导致问题,但最好在cocos2d中调用专用(或
schedule
)函数

游戏的构造函数中

self.schedule_interval(self.simulate, 0.05)
self.schedule_interval(self.update, 0.05)

要计划
游戏。模拟
您必须更改函数的签名,将
dt
作为其第二个参数,如
Game.update
has.

方向如何?您将其设置为空字符串,这在方法
movePlayer
中没有任何效果,您没有将其重新分配给任何对象,但每次都会打印它。@Reti43 thx用于捕获-我删除了它,但仍然得到相同的结果。我一点也不奇怪,因为它不会对程序产生任何影响。我只是问你是否打算让它产生一些效果。您还可以解释一下self.schedule(self.update)
行吗?这对我来说没有意义。检查每个帧上的碰撞好吧,我看到你所做的只是一个循环,你选择一个方向100次,然后将该参数发送到
movePlayer()
方法,该方法只更新你的速度向量。除非玩家的位置在你改变速度时自动更新,否则我看不到任何“移动”。
self.schedule_interval(self.simulate, 0.05)
self.schedule_interval(self.update, 0.05)