<i id='gGXdg'><tr id='gGXdg'><dt id='gGXdg'><q id='gGXdg'><span id='gGXdg'><b id='gGXdg'><form id='gGXdg'><ins id='gGXdg'></ins><ul id='gGXdg'></ul><sub id='gGXdg'></sub></form><legend id='gGXdg'></legend><bdo id='gGXdg'><pre id='gGXdg'><center id='gGXdg'></center></pre></bdo></b><th id='gGXdg'></th></span></q></dt></tr></i><div id='gGXdg'><tfoot id='gGXdg'></tfoot><dl id='gGXdg'><fieldset id='gGXdg'></fieldset></dl></div>
  1. <small id='gGXdg'></small><noframes id='gGXdg'>

  2. <tfoot id='gGXdg'></tfoot>
  3. <legend id='gGXdg'><style id='gGXdg'><dir id='gGXdg'><q id='gGXdg'></q></dir></style></legend>

        <bdo id='gGXdg'></bdo><ul id='gGXdg'></ul>
    1. 为乒乓球游戏创建AI+对速度算法有基本了解

      时间:2024-08-10

      <small id='cuX3e'></small><noframes id='cuX3e'>

        <tfoot id='cuX3e'></tfoot>
      1. <legend id='cuX3e'><style id='cuX3e'><dir id='cuX3e'><q id='cuX3e'></q></dir></style></legend>
          <tbody id='cuX3e'></tbody>
        <i id='cuX3e'><tr id='cuX3e'><dt id='cuX3e'><q id='cuX3e'><span id='cuX3e'><b id='cuX3e'><form id='cuX3e'><ins id='cuX3e'></ins><ul id='cuX3e'></ul><sub id='cuX3e'></sub></form><legend id='cuX3e'></legend><bdo id='cuX3e'><pre id='cuX3e'><center id='cuX3e'></center></pre></bdo></b><th id='cuX3e'></th></span></q></dt></tr></i><div id='cuX3e'><tfoot id='cuX3e'></tfoot><dl id='cuX3e'><fieldset id='cuX3e'></fieldset></dl></div>

            • <bdo id='cuX3e'></bdo><ul id='cuX3e'></ul>
              • 本文介绍了为乒乓球游戏创建AI+对速度算法有基本了解的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                问题描述

                我正在为我的软件开发班级制作一个乒乓球游戏,我可能应该声明这是家庭作业,因此我的理解有限。我在为我的NPC球拍创建人工智能时遇到了一些问题。我正在使用Kivy和Python。

                目前我可以通过这样做创建无法击败的AI

                #ai
                self.player2.center_y = self.ball.y 
                

                其中self.player2.center_y是NPC的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和0y,每1/300秒?如果我把它改成1/20左右,它的移动速度会慢得多…所以我想是这样的。

                现在我需要创建一个函数来保存AI.也许

                def AI(self):
                    self.AI_Speed = self.ball.velocity - 10
                

                self.player1.指的是我的球拍。

                而且是的..现在我被困住了。我不知道怎样才能用这个速度来控制球拍的移动。有谁有什么主意吗?由于我的问题很可能非常含糊,我将提供游戏的来源,以防您需要更好的理解。谢谢您。

                http://pastebin.com/8wTLbH21

                附注:我知道这是一个很大的问题,也有很多问题要问,但我希望有人能回答。谢谢。

                推荐答案

                由于这是一个很大的问题,我还没有对其进行测试,但是您似乎想要有某种移动AI的函数(我将其称为self.player2.move())。如果在game.update()中调用此函数,则应该能够增量地将AI球拍移动到击球所需的位置。

                self.player2.mobile()的一些基本伪代码:

                figure out if ball is above or below paddle
                move self.AI_Speed units in the direction of the ball
                

                您可能需要更多地调整AI速度才能使其工作,但我认为这应该是正确的总体思路。如果你仔细想想,无与伦比的人工智能基本上就是无限快。

                这能帮助您解困吗?

                这篇关于为乒乓球游戏创建AI+对速度算法有基本了解的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                <tfoot id='WwkR1'></tfoot>

                <legend id='WwkR1'><style id='WwkR1'><dir id='WwkR1'><q id='WwkR1'></q></dir></style></legend>
                  <bdo id='WwkR1'></bdo><ul id='WwkR1'></ul>

                    <tbody id='WwkR1'></tbody>

                  1. <small id='WwkR1'></small><noframes id='WwkR1'>

                      • <i id='WwkR1'><tr id='WwkR1'><dt id='WwkR1'><q id='WwkR1'><span id='WwkR1'><b id='WwkR1'><form id='WwkR1'><ins id='WwkR1'></ins><ul id='WwkR1'></ul><sub id='WwkR1'></sub></form><legend id='WwkR1'></legend><bdo id='WwkR1'><pre id='WwkR1'><center id='WwkR1'></center></pre></bdo></b><th id='WwkR1'></th></span></q></dt></tr></i><div id='WwkR1'><tfoot id='WwkR1'></tfoot><dl id='WwkR1'><fieldset id='WwkR1'></fieldset></dl></div>