我正在为我的软件开发课做一个乒乓球游戏,我可能应该说这是家庭作业,因此我的理解有限。我在为我的NPC桨创建人工智能时遇到了一些问题。我在用Kivy和Python。
目前,通过这样做,我可以创建不可能击败 AI的:
#ai
self.player2.center_y = self.ball.y 其中,self.player2.center_y是NPC的y坐标(它只在y轴上移动),self.ball.y是球的y坐标。我遵循了基维网站上的教程来创建游戏的基础。
现在我不知道我如何能创造出可以战胜的人工智能。我知道我需要限制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 - 10self.player1.指的是我的桨。
是的..。现在我被困住了。我不知道如何用这个速度来控制桨的移动。有人有什么想法吗?由于我的问题很可能非常模糊,我将提供游戏的来源,以防你需要一个更好的理解。谢谢。
http://pastebin.com/8wTLbH21
附注:我意识到这是一个很大的问题,也有很多问题要问,但我希望有人能回答。谢谢。
发布于 2012-07-29 06:43:24
因为这是一个很大的问题,所以我还没有对它进行测试,但是似乎您希望有某种能够移动AI的函数(我称之为call .player2.move())。如果您在game.update()中调用这个函数,那么您应该能够将AI桨逐渐移动到击球所需的位置。
-译者注:
figure out if ball is above or below paddle
move self.AI_Speed units in the direction of the ball你可能需要调整更多的人工智能速度,以使这一工作,但我认为这应该是正确的总体想法。如果你想一想,无与伦比的人工智能基本上是无限快的。
这能帮你摆脱困境吗?
发布于 2012-07-29 07:40:51
多亏了海怪,我已经写了一些东西,使一个不可战胜的人工智能。
if self.ball.y < self.player2.center_y:
self.player2.center_y = self.player2.center_y - 3
if self.ball.y > self.player2.center_y:
self.player2.center_y = self.player2.center_y + 3我得到球的y位置,如果它小于全国人大的桨的中心,我只需每次向下移动3y,直到它是相同或更大的。如果它不仅仅是全国人大桨的中心,我只会增加它。
这就定义了桨的速度(每1/300秒有3y个位置),这将使我在更困难的模式下增加难度。
谢谢!
https://stackoverflow.com/questions/11706756
复制相似问题