gpt4 book ai didi

python - 非常快速地递增 Sprite 位置而不会出现延迟 - Python

转载 作者:太空宇宙 更新时间:2023-11-04 01:33:50 25 4
gpt4 key购买 nike

我正在使用 Python 中的 Kivy 为学校项目制作 PONG 游戏。到目前为止,感谢这个论坛,我已经为 NPC 桨制作了一些 AI。这是代码:

    if self.ball.y < self.player2.center_y:
self.player2.center_y = self.player2.center_y - 4
if self.ball.y > self.player2.center_y:
self.player2.center_y = self.player2.center_y + 4

这是在 PongGame() 类的一个名为 ArtificialIntelligence() 的方法中。

我用这个来调用它:

Clock.schedule_interval(game.ArtificialIntelligence, 1/300)     

这允许我每 1/300 秒调用一次。但是,任何超过1/300的东西,我似乎都没有区别。 IE。 1/9001 不会每 1/9001 秒调用一次。

它的工作方式是相对于球的位置将 y 坐标增加 4 个像素,并且每 1/300 秒执行一次,因此它不会以这种速率“滞后”。这基本上是玩家的“简单”模式。如果我想做一个“困难”模式,我需要让 NPC 更准确。我可以这样做

self.player2.center_y = self.player2.center_y + 20

是这样的。这将是非常准确的。但是,它看起来并不“流畅”,而是“滞后”。我假设我可以通过更频繁地调用该方法而不是通过改变像素移动来改变它移动的量来获得相同的移动量。然而,我不知道如何做到这一点,因为正如我所说,从 1/300 以上的任何地方改变它似乎没有什么区别。

这是我使用桨的方式:

if touch.x < self.width/3:
self.player1.center_y = touch.y

我可以随心所欲地移动它,因为它会随着我移动鼠标而更新。它看起来很流畅,因为它会根据需要更新。我不知道如何用我的 AI 做到这一点。

有谁知道我如何才能基本上使 NPC 桨更准确,让我可以做简单-普通-困难等,同时保持流动性和无滞后?我只看到一种方法可以做到:增加调用方法的数量。

不过我敢打赌有更好的方法,但我不知道该怎么做。有谁知道我该怎么做?谢谢。

编辑:看起来我可以这样做:

Clock.schedule_interval(game.ArtificialIntelligence, 1/300)     
Clock.schedule_interval(game.ArtificialIntelligence, 1/300)
Clock.schedule_interval(game.ArtificialIntelligence, 1/300)
Clock.schedule_interval(game.ArtificialIntelligence, 1/300)
Clock.schedule_interval(game.ArtificialIntelligence, 1/300)

但这看起来非常丑陋且效率低下......我更喜欢更简洁的方式。

最佳答案

每秒 300 帧时,问题不在于更新速率,因为您超出了人眼感知运动的能力 50 倍或更多。

出现抖动是因为球沿着直线轨迹运动,而您的桨只是跳到球现在所在的位置。理想情况下,您的计算机播放器可以计算出球击中计算机 Racket 平面时的位置,然后以每秒 30 帧或更少的速度非常平稳地到达该位置。当然,预测数学需要少量的三角函数,但它是“正确”的方法,因为这是一个好的玩家通过预测来玩的方式。

只增加计算机桨的大小会容易得多,这也会向人类玩家提供视觉指示,让他们知道游戏有多难。当电脑的 Racket 变成一堵墙时,玩家就会看到没有赢的余地。较大的桨会产生不那么生涩的副作用,但这是否是“好”方式由您决定。

关于python - 非常快速地递增 Sprite 位置而不会出现延迟 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11718743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com