【游戏开发】C++游戏编程实例

网络游戏开发分为:服务器编程、客户端编程、人工智能、数据库管理、游戏策划、美工设计、音乐特效等。

大型游戏往往需要团队合作开发,因此面向对象的编程思想在网络游戏中得到了广泛应用。

游戏开发基本流程:游戏初始化——游戏实现——游戏结束。

游戏初始化:加载游戏内容的缓存,如游戏人物、背景模型、音乐等素材,并初始化相关参数。

游戏实现:用户操作+游戏逻辑过程+游戏内容渲染。

游戏结束:释放游戏初始化时加载的缓存。

注:如果游戏结束时,不释放动态分配的缓存所用的内存空间,系统会弹出内存泄漏警告对话框。

 

简单的游戏过程模拟程序:

当按下A、D键,人物分别向左向右移动。

enum CHARACTER_STATE{STATE_LIVE=0,STATE_DEAD};//枚举状态生/死
enum CHARACTER_ACTION{ACTION_IDLE=0,ACTION_MOVE};//枚举动作静/动
enum CHARACTER_EVENT{EVENT_EMPTY=0,EVENT_ATTACKED,EVENT_RESTART};//枚举事件空/被攻击/复活
#include <conio.h>    //运用getch()
#include <stdio.h>    //运用输出函数
void main()
{
	int _pos=0;    //初始化位置
	int _state=STATE_LIVE;    //初始化状态
	int _action=ACTION_IDLE;  //初始化动作
	int _event=EVENT_EMPTY;   //初始化事件

	int _key;    //声明按键
	while(1)
	{
		printf("Idel at position:%d\n",_pos);
		_action=ACTION_IDLE;
		//fflush(stdin);
		_key=getch();
		//scanf("%c",&_key);

		if(_key=='E')    //按E键退出
		{
			break;
		}
		if(_key=='A')    //A键左移
		{
			_action=ACTION_MOVE;
			_pos--;
		}
		if(_key=='D')    //D键右移
		{
			_action=ACTION_MOVE;
			_pos++;
		}

		switch(_action)
		{
		case ACTION_IDLE:
			printf("Idel at position:%d\n",_pos);
			break;
		case ACTION_MOVE:
			printf("Walk at position:%d\n",_pos);
			break;
		}

		switch(_state)
		{
		case STATE_LIVE:    //存活状态
			switch(_event)    //事件
			{
			case EVENT_ATTACKED:    //被攻击
				_state=STATE_DEAD;
				break;
			case EVENT_RESTART:    //复活
				break;
			}
			break;

		case STATE_DEAD:    //死亡状态
			switch(_event)
			{
			case EVENT_ATTACKED:    //被攻击
				break;
			case EVENT_RESTART:
				_state=STATE_LIVE;    //复活
				break;
			}
			break;
		}
	}
}

 

 

以上程序可以拆分为3个文件:

1.Character.h【声明人物类】、Character.cpp【封装成员函数】、GameMain.cpp【整体游戏逻辑】

class Character
{
public:
	Character();
	~Character();
	void Move(int _step);
	void Idle();
	void AI_Planning();
	void Render();

protected:
	int _pos;
	int _state;
	int _action;
	int _event;
}

2.Character.cpp

#include "Character.h"
Character::Character()//构造函数
{
	int _pos=0;    //初始化位置
	int _state=STATE_LIVE;    //初始化状态
	int _action=ACTION_IDLE;  //初始化动作
	int _event=EVENT_EMPTY;   //初始化事件
}

Character::~Character()//析构函数
{
}

void Character::Move(int _step)	//移动步数
{
	_action=ACTION_MOVE;
	_pos+=_step;
}

void Character::Idle()		//静止
{
	_action=ACTION_IDLE;
}

void Character::AI_Planning()	//行为计划
{	
	switch(_state)
	{
		case STATE_LIVE:    //存活状态
			switch(_event)    //事件
			{
			case EVENT_ATTACKED:    //被攻击
				_state=STATE_DEAD;
				break;
			case EVENT_RESTART:    //复活
				break;
			}
			break;

		case STATE_DEAD:    //死亡状态
			switch(_event)
			{
			case EVENT_ATTACKED:    //被攻击
				break;
			case EVENT_RESTART:
				_state=STATE_LIVE;    //复活
				break;
			}
			break;
	}
}

void Character::Render()	//渲染
{
	switch(_action)			//动作
		{
		case ACTION_IDLE:	//静止
			printf("Idel at position:%d\n",_pos);
			break;
		case ACTION_MOVE:	//移动
			printf("Walk at position:%d\n",_pos);
			break;
		}
}

3.GameMain.cpp

#include "Character.h"
void main()
{
	Character player;	//定义玩家类
	int _key;
	while(1)
	{
		_key=getch();	//获取按键

		if(_key=='E')    //按E键退出
		{
			break;
		}
		player.Idle();	//静止
		if(_key=='A')    //A键左移
		{
			player.Move(-1);
		}
		if(_key=='D')    //D键右移
		{
			player.Move(1);
		}
		player.AI_Planning();	//行为计划
		player.Render();	//渲染
	}
}

 

阅读更多

没有更多推荐了,返回首页