游戏人工智能.doc
文本预览下载声明
六、有限状态机
一、有限状态机原理及其模型
原理:1、有限状态机的结构和类
游戏软件AI结构
class AIEntity
{
public:
int type;
int state;
int row;
int column;
int health;
int strength;
int intelligence;
int magic;
};
状态常量
#define kRoam 1
#define kEvade 2
#define kAttack 3
#define kHide 4
2、有限状态机行为及转换函数
游戏软件AI转换函数
class AIEntity
{
Public:
int type;
int state;
int row;
int column;
int health;
int strength;
int intelligence;
int magic;
int armed;
Boolean playerInRange();
int checkHealth();
};
改变状态
if ((checkHealth()kPoorHealth) (playerlnRange()==false))
state =kHide;
else if (checkHealth() kPoorHealth)
state=kEvade;
else if (playerlnRange())
state=kAttack;
else
state=kRoam;
模型:
一般有限状态机图
二、设计包含几种状态的状态机图
鬼怪有限状态机
三、主要实验代码:
#define SPACE 0x20
#define ESC 0x1b
#define ANT_CHAR_EMPTY +
#define ANT_CHAR_FOOD 153
#define HOME_CHAR H
#define FOOD_CHAR F
#define FOOD_CHAR2 f
#define FOOD_HOME_COLOR 12
#define BLOCK_CHAR 177
#define MAX_ANT 50
#define INI_SPEED 3
#define MAXX 80
#define MAXY 23
#define MAX_FOOD 10000
#define TARGET_FOOD 200
#define MAX_SMELL 5000
#define SMELL_DROP_RATE 0.05
#define ANT_ERROR_RATE 0.02
#define ANT_EYESHOT 3
#define SMELL_GONE_SPEED 50
#define SMELL_GONE_RATE 0.05
#define TRACE_REMEMBER 50
#define MAX_BLOCK 100
#define NULL 0
#define UP 1
#define DOWN 2
#define LEFT 3
#define RIGHT 4
#define SMELL_TYPE_FOOD 0
#define SMELL_TYPE_HOME 1
#include stdio.h
#include conio.h
#include dos.h
#include stdlib.h
#include dos.h
#include process.h
#include ctype.h
#include math.h
void WorldInitial(void);
void BlockInitial(void);
void CreatBlock(void);
void SaveBlock(void);
void LoadBlock(void);
void HomeFoodInitial(void);
void AntInitial(void);
void WorldChange(void);
void AntMove(void);
void AntOneStep(void);
void DealKey(char key);
void ClearSmellDisp(void);
void DispSmell(int type);
int AntNextDir(int xxx,int yyy,int ddir);
int GetMaxSmell(int type,int xxx,int yyy,int ddir);
int IsTrace(int xxx,int yyy);
int MaxLocation(int num1,int num2,int num3);
int CanGo(int xxx,int yyy,int ddir);
int Ju
显示全部