我正在为我的软件开发课程制作一个乒乓球游戏,我可能应该说这是家庭作业,因此我的理解有限。我在为我的 NPC 桨创建 AI 时遇到了一些问题。我正在使用 Kivy 和 Python。
目前我可以通过这样做来创造不可能击败人工智能:
#ai
self.player2.center_y = self.ball.y
NPC 的 y 坐标在哪里self.player2.center_y
(它只在 y 轴上移动)并且self.ball.y
是球的 y 坐标。我按照 Kivy 网站上的教程来创建游戏的基础。
现在我不知道如何创建可以击败的人工智能。我知道我需要限制 AI 的速度,所以当球变得如此之快时,它就无法抓住它。但问题是,我实际上没有速度功能。
我遵循的教程的问题是它没有解释一切。我相信我可以通过说
"Every x seconds, the paddle will move x pixels in the y axis."
这是根据 kivy 教程提供球的方式:
def serve_ball(self, vel=(10,0)):
self.ball.center = self.center
self.ball.velocity = vel
好吧,现在我将尝试理解这一点...vel=(10,0)):
可能意味着,移动 10 个像素 X 和 0 个像素 Y,将其分配给ball.velocity
,并且显然控制速度...
class PongApp(App):
def build(self):
game = PongGame()
game.serve_ball()
Clock.schedule_interval(game.update, 1.0/300.0)
return game
Clock.schedule_interval(game.update, 1.0/300.0)
关于这一点,是否可以假设……这就是球的移动速度?即 10 像素 x 和 0 y,每 1/300 秒?如果我将其更改为 1/20 之类的东西,它的移动速度会慢得多……所以我会这么认为。
现在我需要创建一个函数来保存 AI……也许
def AI(self):
self.AI_Speed = self.ball.velocity - 10
self.player1.
指我的桨。
是的..现在我被困住了。我不知道如何使用这个速度来控制桨的移动。有人有想法么?而且由于我的问题很可能非常模棱两可,因此我将提供游戏的来源,以防您需要更好的理解。谢谢你。
ps 我意识到这是一个很大的问题,有很多问题要问,但我希望有人能回答。谢谢。