【游戏开发】C 游戏编程实例
生活随笔
收集整理的這篇文章主要介紹了
【游戏开发】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?????//運用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
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的【游戏开发】C 游戏编程实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iPhone8Plus重量有多少克
- 下一篇: 电脑qq怎么发短视频可以直接看(qq怎么