author:expter
date 2010/06/30
介紹: 世界杯現(xiàn)在如此的備受矚目和關(guān)注,本文介紹如何實現(xiàn)一個基于足球AI的實現(xiàn),而作為程序員我們關(guān)注的不是目標(biāo)用其贏得世界杯,而是創(chuàng)造一個把球踢好的智能體,加上最近上班輕松,晚上較閑,加上去年實現(xiàn)的一個AI模型與平時寫的游戲智能算法,想組織起來完成一個足球模擬玩玩。
本文會首先介紹一種基于AI仿真機的實現(xiàn)流程圖,后面我將會用大量的篇幅詳細介紹各個實現(xiàn)細節(jié),與具體足球戰(zhàn)術(shù),此足球AI主要是主動攻擊性AI,所以還需要具體完善加強防御性的AI,所以具體代碼現(xiàn)在將不會現(xiàn)在放出。以后實現(xiàn)完整過后會完整公開,現(xiàn)在主要設(shè)計描述如下。
足球的游戲規(guī)則不是很復(fù)雜,就是2個球隊,然后每個球隊一個守門員與幾名球員,目的就是踢進對方的球門。簡單的足球是沒有傻子的,也就沒有犯規(guī),越位,頭球,點球以及烏龍球。以后可能會增加上面幾種。
一個簡單的游戲的具體環(huán)境如下:
1.一個足球場(FootBallPitch)
2.一個足球 FootBall
3.二個球門 Goal
4.二個球隊 FootBallTeam
5.場上12名足球隊員(每隊6名,期中5名為球員2名后衛(wèi)3名前鋒,還有1名守門員)
6.球員 FootBaller 守門員 GoalKeeper
然后只要理清上面的描述然后把具體的實現(xiàn)封裝到每個類中,就實現(xiàn)了1個簡單的足球仿真模擬,實現(xiàn)上面的功能代碼還是簡單,但是如何組織強大攻擊性強大,防御性強的AI還是挺復(fù)雜的。
下面將給出具體UML實現(xiàn)類圖:

由于是基于智能體的足球AI所以還是借鑒了FSM模型,我們可以把每個Player處于不同的狀態(tài)進行不同的操作,具體把操作類型和事件處理都放在具體的狀態(tài)中。
基于球場上運球的FootBaller有下列狀態(tài)ChaseBall 追球狀態(tài),Dribble運球 Gohome 歸位 KickBall 踢球 ReceviveBall傳球
基于守門員GoalKeeper有InterceptBall 攔截 PutBallBackInPlay發(fā)球.
這里為了區(qū)分隊員是前鋒還是后衛(wèi),我們給隊員增加一個行為Behaviors,讓其根據(jù)自己的行為做相應(yīng)的事情.。
其中所有的圖像處理都是用的GDI的繪制,程序采用的Win32編寫方式。
上面的設(shè)計基本是現(xiàn)在程序的設(shè)計方案和流程圖。
后期完善部分:
1.引入基于事件響應(yīng),F(xiàn)ootBaller 可以通知同隊FootBaller 的接收響應(yīng)的消息處理,比如A發(fā)現(xiàn)B的位置很好,A可以通知B我要傳球到一個坐標(biāo)點。
2.加強防御和攻擊AI。
3.完成具體方案后,公布所有的方案設(shè)計和具體算法,后期引入腳本機制,通過外部編寫腳本實現(xiàn)不同隊伍AI模擬。