author:expter
date 2010/06/30
介绍: 世界杯现在如此的备受瞩目和关注,本文介绍如何实现一个基于足球AI的实现,而作为程序员我们关注的不是目标用其赢得世界杯,而是创造一个把球踢好的智能体,加上最近上班轻松,晚上较闲,加上去年实现的一个AI模型与平时写的游戏智能算法,想组织起来完成一个足球模拟玩玩。
本文会首先介绍一种基于AI仿真机的实现流程图,后面我将会用大量的篇幅详细介绍各个实现细节,与具体足球战术,此足球AI主要是主动攻击性AI,所以还需要具体完善加强防御性的AI,所以具体代码现在将不会现在放出。以后实现完整过后会完整公开,现在主要设计描述如下。
足球的游戏规则不是很复杂,就是2个球队,然后每个球队一个守门员与几名球员,目的就是踢进对方的球门。简单的足球是没有傻子的,也就没有犯规,越位,头球,点球以及乌龙球。以后可能会增加上面几种。
一个简单的游戏的具体环境如下:
1.一个足球场(FootBallPitch)
2.一个足球 FootBall
3.二个球门 Goal
4.二个球队 FootBallTeam
5.场上12名足球队员(每队6名,期中5名为球员2名后卫3名前锋,还有1名守门员)
6.球员 FootBaller 守门员 GoalKeeper
然后只要理清上面的描述然后把具体的实现封装到每个类中,就实现了1个简单的足球仿真模拟,实现上面的功能代码还是简单,但是如何组织强大攻击性强大,防御性强的AI还是挺复杂的。
下面将给出具体UML实现类图:
由于是基于智能体的足球AI所以还是借鉴了FSM模型,我们可以把每个Player处于不同的状态进行不同的操作,具体把操作类型和事件处理都放在具体的状态中。
基于球场上运球的FootBaller有下列状态ChaseBall 追球状态,Dribble运球 Gohome 归位 KickBall 踢球 ReceviveBall传球
基于守门员GoalKeeper有InterceptBall 拦截 PutBallBackInPlay发球.
这里为了区分队员是前锋还是后卫,我们给队员增加一个行为Behaviors,让其根据自己的行为做相应的事情.。
其中所有的图像处理都是用的GDI的绘制,程序采用的Win32编写方式。
上面的设计基本是现在程序的设计方案和流程图。
后期完善部分:
1.引入基于事件响应,FootBaller 可以通知同队FootBaller 的接收响应的消息处理,比如A发现B的位置很好,A可以通知B我要传球到一个坐标点。
2.加强防御和攻击AI。
3.完成具体方案后,公布所有的方案设计和具体算法,后期引入脚本机制,通过外部编写脚本实现不同队伍AI模拟。