青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天行健 君子當自強而不息

創建游戲內核(4)



本篇是的 創建游戲內核(3)續篇,并且以 游戲程序流、狀態處理機、進程管理器、數據包系統的實現中介紹的數據包系統的實現為基礎,加入了兩個函數,分別用于返回數據緩沖區的大小和指向緩沖區的指針。

下面是這個類的定義:
 
//==========================================================================
// Defines for data package.
//==========================================================================
class DATA_PACKAGE
{
protected:
    
void* _buf;
    unsigned 
long _size;

public:
    DATA_PACKAGE();
    ~DATA_PACKAGE();

    
void* Create(unsigned long size);
    
void  Free();

    BOOL Save(
const char* filename);
    
void* Load(const char* filename, unsigned long* size);

    
void* Get_Ptr();
    unsigned 
long Get_Size();
};
 

類的實現:
 
//-----------------------------------------------------------------------------
// Constructor, initialize buffer and size.
//-----------------------------------------------------------------------------
DATA_PACKAGE::DATA_PACKAGE()
{
    _buf  = NULL;
    _size = 0;
}

//-----------------------------------------------------------------------------
// Destructor, free buffer.
//-----------------------------------------------------------------------------
DATA_PACKAGE::~DATA_PACKAGE()
{
    Free();
}

//-----------------------------------------------------------------------------
// Re-allocate new buffer.
//-----------------------------------------------------------------------------
void* DATA_PACKAGE::Create(unsigned long size)
{
    
// free a previously created buffer
    Free();

    
// allocate some memory and return a pointer
    if((_buf = new char[_size = size]) == NULL)
        
return NULL;

    memset(_buf, 0, _size);

    
return _buf;
}

//-----------------------------------------------------------------------------
// Free the allocated memory
//-----------------------------------------------------------------------------
void DATA_PACKAGE::Free()
{
    delete _buf;
    _buf  = NULL;
    _size = 0;
}

//-----------------------------------------------------------------------------
// Write buffer into file.
//-----------------------------------------------------------------------------
BOOL DATA_PACKAGE::Save(const char *filename)
{
    FILE* fp;

    
// make sure there is something to write
    if(_buf == NULL || _size == 0)
        
return FALSE;

    
// open file, write size and data.
    if((fp = fopen(filename, "wb")) == NULL)
        
return FALSE;

    fwrite(&_size, 1, 4, fp);
    fwrite(_buf, 1, _size, fp);
    fclose(fp);

    
return TRUE;
}

//-----------------------------------------------------------------------------
// Load data from file.
//-----------------------------------------------------------------------------
void* DATA_PACKAGE::Load(const char *filename, unsigned long *size)
{
    FILE* fp;

    
// free a prior buffer
    Free();

    
if((fp = fopen(filename, "rb")) == NULL)
        
return NULL;

    
// read in size and data
    
    fread(&_size, 1, 4, fp);

    
if((_buf = new char[_size]) != NULL)
        fread(_buf, 1, _size, fp);

    fclose(fp);

    
// store size to return
    if(size != NULL)
        *size = _size;

    
// return pointer
    return _buf;
}

//-----------------------------------------------------------------------------
// Get buffer pointer.
//-----------------------------------------------------------------------------
void* DATA_PACKAGE::Get_Ptr()
{
    
return _buf;
}

//-----------------------------------------------------------------------------
// Get buffer size.
//-----------------------------------------------------------------------------
unsigned long DATA_PACKAGE::Get_Size()
{
    
return _size;
}

測試代碼:

點擊下載源碼和工程

 
/*****************************************************************************
PURPOSE:
    Test for class DATA_PACKAGE.
*****************************************************************************/


#include "Core_System.h"

#pragma warning(disable : 4996)

class APP : public APPLICATION
{
private:
    DATA_PACKAGE _data_package; 

    
// a structure to contain a name
    struct NAME
    {
        
char name[32];
    };    

public:
    BOOL Init()
    {
        DWORD size;

        
// create the data package (w/64 bytes) and get the pointer, casting it to an NAME structure type.
        NAME* names = (NAME*) _data_package.Create(64);

        
// since there are 64 bytes total, and each name uses 32 bytes, then I can have 2 names stored.
        strcpy(names[0].name, "loved");
        strcpy(names[1].name, "day");

        
const char* filename = "names.data";

        
// save the names to disk
        _data_package.Save(filename);    
        
// load the names from disk, size will equal 64 when the load function returns.
        names = (NAME*) _data_package.Load(filename, &size);

        
// display the names
        MessageBox(NULL, names[0].name, "1st name", MB_OK);
        MessageBox(NULL, names[1].name, "2nd name", MB_OK);

        
return TRUE;
    }
};

int PASCAL WinMain(HINSTANCE inst, HINSTANCE, LPSTR cmd_line, int cmd_show)
{
    APP app;

    
return app.Run();
}

運行截圖:

   

posted on 2007-08-26 16:34 lovedday 閱讀(405) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


公告

導航

統計

常用鏈接

隨筆分類(178)

3D游戲編程相關鏈接

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久999精品| 在线国产精品一区| 欧美一区综合| 欧美一区二区视频观看视频| 亚洲已满18点击进入久久| 中文国产一区| 亚洲欧美国产高清| 欧美亚洲色图校园春色| 久久精品欧美日韩| 欧美成人xxx| 欧美午夜宅男影院| 国语自产精品视频在线看8查询8| 亚洲福利视频一区| 亚洲无人区一区| 欧美黄在线观看| 欧美日韩国产色站一区二区三区| 欧美视频在线观看 亚洲欧| 国产精品视频大全| 91久久久国产精品| 午夜精品婷婷| 亚洲国产精品va在看黑人| 欧美激情一区二区| 亚洲午夜精品久久久久久浪潮| 欧美自拍偷拍| 欧美午夜激情在线| 亚洲激情成人网| 久久国产一区| 亚洲三级视频| 久久久夜色精品亚洲| 国产精品露脸自拍| 一本色道精品久久一区二区三区| 久久久久国产精品一区| 一区二区三区久久| 欧美激情偷拍| 亚洲国产清纯| 久久久久欧美精品| 亚洲夜间福利| 欧美色中文字幕| 亚洲精品乱码视频| 蜜臀久久99精品久久久久久9| 在线一区观看| 欧美国产精品v| 亚洲欧洲日韩综合二区| 久久亚洲综合色| 午夜久久一区| 国产美女诱惑一区二区| 亚洲一区视频| 一本色道久久综合亚洲二区三区| 欧美大片在线观看一区二区| 亚洲电影观看| 欧美成人免费一级人片100| 小黄鸭视频精品导航| 国产精品入口麻豆原神| 亚洲视频一区二区| 亚洲精选一区| 国产精品v一区二区三区| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 99re6这里只有精品视频在线观看| 久久免费视频网站| 久久精品中文字幕免费mv| 国产精品综合| 久久久久久色| 另类激情亚洲| 亚洲狼人综合| 一区二区三区高清不卡| 国产精品视频久久久| 欧美一区二区三区男人的天堂| 亚洲午夜在线观看视频在线| 在线中文字幕不卡| 国产欧美日韩视频一区二区三区| 久久成人亚洲| 久久人91精品久久久久久不卡| 亚洲福利视频一区| 亚洲人成网站影音先锋播放| 欧美日韩一区二区在线观看| 性欧美在线看片a免费观看| 欧美在线欧美在线| 亚洲精品乱码久久久久| 亚洲午夜影视影院在线观看| 国产亚洲一级| 亚洲高清色综合| 国产精品另类一区| 久久一二三四| 欧美人在线观看| 久久高清福利视频| 裸体一区二区| 亚洲一区日韩在线| 久久亚洲影院| 亚洲一区国产精品| 久久免费视频观看| 宅男噜噜噜66一区二区66| 亚洲欧美日韩直播| 亚洲国产成人porn| 亚洲一级片在线看| 亚洲国产你懂的| 中文亚洲免费| 亚洲精品中文字幕在线| 午夜日韩福利| 一区二区三区高清视频在线观看| 亚洲欧美日韩综合aⅴ视频| 亚洲国产人成综合网站| 亚洲午夜一区二区三区| 亚洲品质自拍| 久久国产精品一区二区三区四区| 亚洲美女在线看| 久久九九有精品国产23| 中文欧美日韩| 欧美大片18| 男人插女人欧美| 国产一区二区毛片| 久久久亚洲高清| 亚洲日本成人| 国内不卡一区二区三区| 一本一本久久a久久精品综合麻豆| 精品成人在线观看| 性欧美办公室18xxxxhd| 亚洲女人小视频在线观看| 欧美激情欧美激情在线五月| 蜜桃av噜噜一区| 国产欧美一区二区精品婷婷| 亚洲日本中文字幕免费在线不卡| 尤物yw午夜国产精品视频| 午夜亚洲影视| 欧美伊人久久久久久午夜久久久久| 欧美久久久久免费| 亚洲国产精品一区二区三区| 韩国免费一区| 午夜亚洲性色视频| 久久久久久久久伊人| 国产日韩欧美一区二区| 亚洲欧美日韩国产综合| 午夜精品久久久久久99热| 亚洲一区二区三区高清| 一本久久综合| 国产精品分类| 亚洲先锋成人| 香蕉久久a毛片| 国产日产欧产精品推荐色| 亚洲欧洲99久久| 久久香蕉国产线看观看av| 国产亚洲欧美另类一区二区三区| 亚洲欧美日韩电影| 久久久人成影片一区二区三区| 国产亚洲精品自拍| 久久蜜臀精品av| 亚洲精品视频中文字幕| 亚洲特色特黄| 国产精品中文字幕欧美| 欧美在线免费看| 欧美国产一区二区| 一本色道久久88亚洲综合88| 国产精品久久久久久久久久直播 | 欧美在线3区| 国产麻豆午夜三级精品| 久久国产精品第一页| 欧美激情第4页| 一区二区三区视频观看| 国产精品天美传媒入口| 欧美一二三区在线观看| 免费欧美日韩| 亚洲调教视频在线观看| 国产三级精品在线不卡| 免费成人av资源网| 亚洲神马久久| 麻豆精品在线视频| 一区二区三区www| 国产一区二区三区在线免费观看| 美女亚洲精品| 亚洲一区二区av电影| 午夜精品网站| 欧美日韩精品在线播放| 性欧美精品高清| 欧美激情精品久久久六区热门| 亚洲一区二区三区四区中文| 狠狠色噜噜狠狠色综合久 | 国产亚洲欧美日韩一区二区| 猫咪成人在线观看| 亚洲综合视频网| 亚洲高清三级视频| 久久精品国产免费看久久精品| 亚洲激情偷拍| 国产精品永久在线| 欧美日韩免费看| 久久亚洲精品欧美| 亚洲在线一区二区三区| 亚洲激情黄色| 久久一区二区三区国产精品| 在线一区二区视频| 亚洲高清在线| 国产视频一区在线观看| 欧美视频国产精品| 蜜臀va亚洲va欧美va天堂| 欧美一区二区网站| 亚洲欧美激情视频| 在线亚洲一区二区| 一本久久综合亚洲鲁鲁五月天 | 久久久久久9| 亚洲女人小视频在线观看| 一区二区三区高清视频在线观看 | 亚洲精品视频一区|