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