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