网络游戏开发分为:服务器编程、客户端编程、人工智能、数据库管理、游戏策划、美工设计、音乐特效等。
大型游戏往往需要团队合作开发,因此面向对象的编程思想在网络游戏中得到了广泛应用。
游戏开发基本流程:游戏初始化——游戏实现——游戏结束。
游戏初始化:加载游戏内容的缓存,如游戏人物、背景模型、音乐等素材,并初始化相关参数。
游戏实现:用户操作+游戏逻辑过程+游戏内容渲染。
游戏结束:释放游戏初始化时加载的缓存。
注:如果游戏结束时,不释放动态分配的缓存所用的内存空间,系统会弹出内存泄漏警告对话框。
简单的游戏过程模拟程序:
当按下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(); //渲染 } }
热门工具 换一换