<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      七夜狐

      博客園 首頁 新隨筆 聯系 訂閱 管理

        這一節寫客戶端的具體實現方式。

        為了演示,代碼寫的比較粗糙。

        我們用一個EventCenter作為事件ID和事件的路由表,即根據某ID,即可定位到某處理事件的具體類,并根據參數處理這個事件。

         前臺應該有個類似這樣的配置:

         <group id = 0>

            <event id =xx paramint1=xx paramint2=xx  paramstr= xx>

            ....

         </group >

         <group id  = 1>

        </group>

         我簡單處理成了直接賦值,關于數據結構的定義,都較簡單的使用了map,實際工作中,可根據情況做相應處理,這里僅說明一下大體原理

       

      #include<map>
      using namespace std;
      struct Event
      {
      	int eventid;
      	string parastr;
      	int    paraint1;
      	int	   paraint2;
      };
      struct Group
      {
      	enum { MAX_EVENT = 5};
      	int eventnum ;
      	Event events[MAX_EVENT];	
      };
      struct EventCenter;
      class Client
      {
      public:
      	enum EventType {
      		EVENT_NOTICE = 0, //彈提示
      		EVENT_CAMERA_MOVE =1 ,//移鏡頭
      		EVENT_TRANSPORT = 2 //傳送
      
      	};
      public:
      	Client(void);
      	~Client(void);
      public:
      	int loadfile();
      	int run();
      public:
      	void setgroupid(int id ){ groupid = id;};
      	void setcenter(EventCenter* c){ center = c;}
      
      private:
      	typedef map<int,Group> Groups;
      	typedef map<int,Group>::iterator Iterator;
      	Groups config;
      	int	groupid;
      	EventCenter* center;
      };
      //事件類的父類,通過虛特性,EventCenter將調用子類的handle
      class EventHandle
      {
      public:
      	virtual int handle(Event* event)=0;
      };
      //將事件陸由到各個事件處理類
      struct EventCenter
      {
      	enum { MAX = 3};
      public:
      	void registerHandle(int id ,EventHandle* event){
      		eventhandles[id] = event;
      	}
      	void handleEvent(int id,Event* e ){
      		eventhandles[id]->handle(e);;
      	}
      private:
      	EventHandle* eventhandles[MAX];//為了演示方便,這個路由表簡單表述成數組下標為鍵的結構
      };
      ///具體處理事件的類,可無限添加,只要在EventCenter中注冊即可
      //提示類
      class NoticeEvent: public EventHandle
      {
      	int handle(Event* event){
      		printf("新手指導員: %s\n",event->parastr.c_str());
      		return 0;
      	}
      };
      //移鏡頭
      class MoveCameraEvent: public EventHandle
      {
      	int handle(Event* event){
      		printf("鏡頭移動到x=%d   y=%d\n",event->paraint1,event->paraint2);
      		return 0;
      	}
      };
      
      //傳送
      class TransportEvent: public EventHandle
      {
      	int handle(Event* event){
      		printf("將玩家傳送至 場景 %d \n",event->paraint1);
      		return 0;
      	}
      };
      

        

       

       1 #include "StdAfx.h"
       2 #include "Client.h"
       3 #include "luainc.h"
       4 
       5 Client::Client(void)
       6 {
       7 }
       8 
       9 
      10 Client::~Client(void)
      11 {
      12 }
      13 int Client::run()
      14 {
      15     Iterator it = config.find(groupid);
      16 
      17     if( it != config.end() ){
      18         Group g = it->second;
      19         int eventid = -1;
      20         Event ev ;;
      21         for(int i = 0; i < g.eventnum; i++ ){
      22             eventid = g.events[i].eventid;
      23             ev = g.events[i];
      24             center->handleEvent(eventid,&ev);
      25         }
      26     }
      27     return 0;
      28 }
      29 int Client::loadfile()
      30 {
      31     Group group0;
      32     group0.events[0].eventid = EVENT_NOTICE;
      33     group0.events[0].parastr = "少俠,歡迎來到新手村,最近野豬一直在騷擾村子,你去打幾只吧";
      34     
      35     group0.events[1].eventid = EVENT_CAMERA_MOVE;
      36     group0.events[1].paraint1 = 100;
      37     group0.events[1].paraint2 = 200;
      38     group0.eventnum = 2;
      39 
      40     Group group1;
      41     group1.eventnum = 1;
      42     group1.events[0].eventid = EVENT_TRANSPORT;
      43     group1.events[0].paraint1 = 211314;
      44 
      45     config.insert(pair<int,Group>(0,group0));
      46     config.insert(pair<int,Group>(1,group1));
      47 
      48     return 0;
      49 }

       

      posted on 2012-08-17 17:50  七夜狐  閱讀(357)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲日本va午夜在线影院| 亚洲av无码成人精品区一区| 亚洲 欧美 综合 另类 中字| 亚洲AV高清一区二区三区尤物| AV毛片无码中文字幕不卡| 中文字幕有码无码AV| 午夜在线观看成人av| 久久精品国产亚洲av天海翼| 亚洲一区二区av高清| 日本熟妇大乳| 欧美人与动牲交A免费观看| 制服丝袜国产精品| 国产精品一区 在线播放| 又大又黄又粗高潮免费| 天天澡日日澡狠狠欧美老妇| 伊人久久大香线蕉AV网禁呦| 91人妻熟妇在线视频| 中文字幕av一区二区| 国产拍拍拍无码视频免费| 国产蜜臀在线一区二区三区 | 国产精品高清视亚洲乱码| 国产AV无码专区亚洲AV漫画| 日本久久99成人网站| 制服丝袜另类专区制服| 黄色大全免费看国产精品| 日本一高清二区视频久二区| 亚洲国产成熟视频在线多多| 国产乱子伦视频在线播放| 中文字幕久久国产精品| 久久精品视频一二三四区| 会理县| 乱中年女人伦av三区| 最新精品露脸国产在线| 77se77亚洲欧美在线| 伊人久在线观看视频| 亚洲国产精品一区二区第一页| 亚洲 卡通 欧美 制服 中文| 久久国产精品老人性| 青青国产揄拍视频| 亚洲综合成人av在线| 99久久无码私人网站|