我正在做一個乒乓球比賽我的軟件開發課,我也許應該指出,這是家庭作業,因此我有限的瞭解基本的瞭解創建AI。我在爲NPC槳製作AI時遇到了一些問題。我正在使用Kivy和Python。對乒乓球比賽+速算法
目前,我可以創造不可能通過這樣做是爲了擊敗 AI:
#ai
self.player2.center_y = self.ball.y
其中self.player2.center_y
是y座標NPC(只移動在y軸)和self.ball.y
是y座標球。我遵循Kivy網站上的教程來創建遊戲的基礎。
現在我不知道我怎麼可以創建AI,這將是不可戰勝的想法。我知道我需要限制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像素×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.
指的是我的槳。
是啊..現在我卡住了。我不知道如何使用這個速度來控制移動槳。有人有主意嗎?由於我的問題很可能非常模糊,因此我會提供遊戲的來源,以便您需要更好的理解。謝謝。
p.s.我意識到這是一個很大的問題,需要問很多,但我希望有人能夠回答。謝謝。
謝謝,這有助於很多...我已經標記你的答案是最好的,我真的覺得有點愚蠢,因爲解決方案非常簡單! > _ <我會發布我的答案。 – Anteara 2012-07-29 07:37:28
謝謝!我很高興它幫助!回想起來,這些事情總是顯得更加明顯:) – seaotternerd 2012-07-29 20:14:14
這正是我在將我的Pong版本展示給CS類時所使用的過程。我確定這是許多版本使用的,因爲它是一個易於實現的算法。 – 2012-08-06 11:31:52