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

本文介绍了网络游戏开发的主要组成部分,包括服务器编程、客户端编程、人工智能、数据库管理和游戏策划等。并提供了一个简单的游戏开发流程,从游戏初始化、游戏实现到游戏结束。通过一个模拟程序展示了如何使用枚举状态和动作来控制游戏人物的移动。最后,将程序拆分为三个文件,即人物类声明、人物类实现和游戏主逻辑,展示了面向对象编程在游戏开发中的应用。
摘要由CSDN通过智能技术生成

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

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

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

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

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

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

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

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

当按下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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值