PacMan开发-敌人的行为

在“吃豆子”游戏中,计划将有3种不同类型的敌人。

· 松散型:在碰到墙壁后才会回头

· 守卫型:当敌人和主人公“大嘴”处在同一行或者是同一列后才会引起警觉接近大嘴。

· 扰乱性:不断的接近大嘴。

这三种敌人分别用以下的函数实现:

//AI人工智能处理
void RedOne::MakeDecision(bool b)
{
	int i = rand();
	if (b)//碰到墙壁,改变方向
	{
		//逆时针
		if (i % 4 == 0)
		{
			tw = UP ? twCommand = LEFT : twCommand = UP;
		}
		else if (i % 3 == 0)
		{
			tw = DOWN ? twCommand = RIGHT: twCommand = DOWN;
		}
		else if (i % 2 == 0)
		{
			tw = RIGHT ? twCommand = UP : twCommand = RIGHT;
		}
		else
		{
			tw = LEFT ? twCommand = DOWN : twCommand = LEFT;
		}
		return;
	}
}
void BlueOne::MakeDecision(bool b)
{
	const int DR = this->dRow - player->GetRow();
	const int DA = this->dArray - player->GetArray();
	if (!b&&DR == 0)
	{
		if (DA <= BLUE_ALERT&&DA > 0)
		{
			twCommand = LEFT;
			return;
		}
		if (DA < 0 && DA >= -BLUE_ALERT)
		{
			twCommand = RIGHT;
			return;
		}
	}
	if (!b&&DA == 0)
	{
		if (DR <= BLUE_ALERT&&DR > 0)
		{
			twCommand = UP;
			return;
		}
		if (DR < 0 && DR >= -BLUE_ALERT)
		{
			twCommand = DOWN;
			return;
		}
	}
	RedOne::MakeDecision(b);
}
void YellowOne::MakeDecision(bool b)
{
	const int DR = this->dRow - player->GetRow();
	const int DA = this->dArray - player->GetArray();
	if (!b)
	{
		if (DR*DR > DA*DA)
		{
			if (DA > 0)
			{
				twCommand = LEFT;
				return;
			}
			else if (DA < 0)
			{
				twCommand = RIGHT;
				return;
			}
		}
		else
		{
			if (DR>0)
			{
				twCommand = UP;
				return;
			}
			if (DR < 0)
			{
				twCommand = DOWN;
				return;
			}
		}
	}
	RedOne::MakeDecision(b);
}

在Enermy类中,用一个函数来实现人工智能的方式:

void virtual MakeDecision(bool b) = 0; //AI实现

@ Mayuko

时间: 2024-11-01 01:34:01

PacMan开发-敌人的行为的相关文章

PacMan开发-初步计划

吃豆子游戏是游戏界比较经典的一款游戏,我们计划将吃豆子作为第一款游戏. 开发工具为Visual Stdio 2013. 该游戏计划有: 文件名 文件类型 说明 GMap.h 头文件 地图类声明文件 GMap.cpp 源文件 地图类实现文件 GObject.h 头文件 物体类声明文件 GObject.cpp 源文件 物体类实现文件 PacMan.cpp 源文件 创建主窗口,客户端 @ Mayuko

PacMan开发-地图类的设计

作为一个游戏,地图是少不了的,并且地图的数量一定不止一张. 我们可以创建一个存放地图的矩形容器(数组,链表和STL模板库容器) 下面用列表的方式来初始化二维数组: #define A true; #define B false; bool Stage_1::initData[MAPLENTH][MAPLENTH] = { B, B, B, B, B, B, B, B, B, A, B, B, B, B, B, B, B, B, B, B, A, A, A, A, A, A, A, A, A, A

PacMan开发-Win32的&quot;HelloWorld&quot;&amp;WinMain()函数

VS2013写出的第一个win32程序-Hello World. 通过这个程序: · 熟悉如何在MFC下创建一个窗口 · 了解windows程序的运行机制. 咳咳,说的严肃了,最近我们宿舍正在进行用Visual C++编写一个小游戏. 我们使用的运行平台是Visual Stdio 2013. 本以为写一个Hello World会像C++那样简单,可是,在初步了解了windows程序的运行机制后,如何创建一个窗体就成了我们之间的难题. // Demo.cpp : 定义应用程序的入口点. // #i

PacMan开发-Win32的&quot;HelloWorld&quot;&amp;MyRegisterClass()函数

#include "stdafx.h" #include "resource.h" #define MAX_LOADSTRING 100 // 全局变量: HINSTANCE hInst; // 当前实例 TCHAR szTitle[MAX_LOADSTRING]; // 标题栏文本 TCHAR szWindowClass[MAX_LOADSTRING]; // 主窗口类名 char *ShowText; // 此代码模块中包含的函数的前向声明: ATOM MyRe

unity3d泰斗破坏神2----课程列表

免费 课时1:泰斗破坏神第一支预告视频 01:32免费 课时2:泰斗破坏神第二支预告视频 01:58第 1 章 : 游戏开始 用户登录 服务器选择课时3:游戏开始 用户登录 服务器选择课时4:素材介绍,导入素材,开始界面的制作 29:58课时5:制作登录界面 21:39课时6:制作注册界面 08:47课时7:控制用户登录和注册界面的跳转 33:22课时8:制作服务器选择界面 18:32课时9:处理服务器列表的初始化 25:57课时10:处理服务器的选择 15:24课时11:给场景添加云和动画效果

MSYS2开发环境搭建(无幻的博客,编译OpenSSL,可使用pacman升级)

MSYS2开发环境搭建 软件安装 下载msys2-x86_64软件包,双击安装到某根目录下,比如D:\msys64. pacman是MSYS2自带的软件管理工具: 可通过修改msys64\etc\pacman.d下的三个文件修改软件源,可供选择的有:中国科学技术开源软件镜像.北京理工大学镜像.日本北陆先端科学技术大学院大学SourceForge镜像.The UK Mirror Service Sorceforge mirror等. 下载后的软件包默认存放目录msys64\var\cache\pa

用Quick3.3开发微信打飞机 (二) -------------------- 子弹和敌人的配置和创建

用Quick3.3简单开发微信打飞机02 [plain] view plaincopyprint? 这次将实现子弹的配置文件,敌人的配置文件,子弹的精灵和敌人的精灵.以及子弹的发射和敌人的产生. 子弹的分析: 游戏中不可能只有一种子弹,这样子弹就需要一个配置文件,配置文件中有子弹的类型,子弹的贴图,子弹的生命以及子弹的移动速度. 敌人的分析: 同样,游戏中会出现多种敌人,所以,也需要一个敌人的配置文件,其中包括敌人的类型,贴图,速度,生命等属性. 在这里新建了一个目录(data)来存放配置文件.

Unity3D ARPG游戏开发《最初的幻想》之强化敌人AI,折腾的GUI

 昨天搞了死亡的完善与提示栏的工作.今天的话,首先再升级一下敌人的Ai吧.毕竟在玩家在敌人身后使劲攻击的话,这敌人也都不会有反应的,太不合理了. 打开Enemy脚本,在最前面"变量"标签中,先定义一个计数器,因为必须考虑到被同类"误伤"的情况: private int m_attackMeCount=0;//被一个同类对象攻击的次数 然后再在最下面的WaitForAttack函数中将自己的对象传入自己的攻击对象,以作判断: m_damageTarget.m_ch

不免费的PacMan

课程内容介绍: 本套课程适合以下人士: 网盘里有几十G的免费资料还没教会你游戏开发的 学了Unity基础不知道怎么用在游戏项目里的 想快速开发一款好玩的游戏的 想学游戏不知道如何入门的 对游戏AI(人工智能)感兴趣的 课程大纲: 01-游戏效果预览 02-游戏场景导入 03-PacMan角色动画 04-PacMan的移动 05-游戏主角的移动控制 06-完成吃豆子功能 07-添加敌人和敌人状态机 08-实现路点状态 09-实现巡逻状态 10-状态机的分析和总结 11-寻路功能分析和初始化 12-