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

天行健 君子當自強而不息

創(chuàng)建游戲內(nèi)核(4)



本篇是的 創(chuàng)建游戲內(nèi)核(3)續(xù)篇,并且以 游戲程序流、狀態(tài)處理機、進程管理器、數(shù)據(jù)包系統(tǒng)的實現(xiàn)中介紹的數(shù)據(jù)包系統(tǒng)的實現(xiàn)為基礎(chǔ),加入了兩個函數(shù),分別用于返回數(shù)據(jù)緩沖區(qū)的大小和指向緩沖區(qū)的指針。

下面是這個類的定義:
 
//==========================================================================
// 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();
};
 

類的實現(xiàn):
 
//-----------------------------------------------------------------------------
// 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 閱讀(407) 評論(0)  編輯 收藏 引用


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


公告

導航

統(tǒng)計

常用鏈接

隨筆分類(178)

3D游戲編程相關(guān)鏈接

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美午夜一区二区福利视频| 国产美女高潮久久白浆| 1204国产成人精品视频| 麻豆91精品91久久久的内涵| 亚洲欧美日韩久久精品| 韩国成人福利片在线播放| 久热精品视频在线免费观看 | 亚洲国产高清自拍| 欧美激情久久久久| 欧美日本高清视频| 亚洲一区二区三区成人在线视频精品| 日韩视频免费大全中文字幕| 国产精品第一区| 欧美一区二区三区免费观看视频| 午夜精品久久久久久99热| 怡红院精品视频| 亚洲国产午夜| 国产精品亚洲综合| 免费亚洲一区二区| 欧美日韩亚洲高清| 久久久久国色av免费看影院| 久久夜色精品| 亚洲一区不卡| 久久久久久一区二区| 亚洲色诱最新| 久久三级福利| 亚洲欧美激情视频在线观看一区二区三区| 亚洲综合日韩中文字幕v在线| 精品av久久707| 亚洲视频第一页| 在线观看成人一级片| 亚洲视屏在线播放| 亚洲高清久久久| 亚洲欧美激情视频| 99精品热视频| 久久亚洲精品欧美| 久久精品观看| 国产精品va在线播放我和闺蜜| 麻豆精品视频在线| 国产精品久久久久久久久免费| 欧美高清视频一区二区| 国产亚洲激情| 在线视频日韩精品| 一区二区三区回区在观看免费视频| 欧美在线视频观看免费网站| 亚洲一区二区三区免费观看 | 99精品99| 91久久精品日日躁夜夜躁国产| 午夜精品成人在线视频| 亚洲视频1区| 欧美不卡在线| 欧美成人精品在线观看| 国产一区二区黄色| 香蕉成人伊视频在线观看 | av不卡在线| 久久综合一区二区| 免费在线一区二区| 狠狠色丁香久久婷婷综合丁香| 亚洲在线中文字幕| 亚洲欧美日韩精品久久亚洲区| 欧美日韩黄色大片| 亚洲伦理自拍| 中日韩视频在线观看| 欧美激情精品久久久久久蜜臀| 欧美不卡视频| 亚洲欧洲一区二区天堂久久| 美女脱光内衣内裤视频久久影院 | 亚洲男人影院| 欧美日韩国产bt| 日韩午夜剧场| 午夜精品久久久| 国产毛片一区二区| 性欧美大战久久久久久久久| 欧美一区二区私人影院日本| 国产精品日日摸夜夜摸av| 亚洲图片欧美日产| 久久精品国产综合精品| 国产亚洲一级高清| 久久精品在线视频| 美腿丝袜亚洲色图| 亚洲乱码一区二区| 欧美四级在线观看| 欧美一级播放| 欧美成人69av| 亚洲免费观看高清在线观看| 欧美日韩一区在线观看| 亚洲女人av| 快射av在线播放一区| 亚洲精品欧美极品| 国产精品美女久久久久久免费| 欧美亚洲在线观看| 亚洲国产成人av好男人在线观看| 一区二区三区国产在线观看| 国产精品卡一卡二| 久久久久久9999| 亚洲人成绝费网站色www| 亚洲免费一在线| 在线不卡亚洲| 欧美午夜精品久久久久免费视| 午夜视频一区在线观看| 亚洲第一黄色| 欧美一区二区三区免费视| 亚洲福利在线视频| 国产精品成人免费视频| 久久久国产91| 一本色道久久综合狠狠躁的推荐| 久久久久国色av免费观看性色| 日韩亚洲国产欧美| 国产一区欧美| 国产精品红桃| 欧美福利网址| 久久九九热免费视频| 亚洲色在线视频| 欧美国产一区二区在线观看| 午夜精品区一区二区三| 亚洲黄网站黄| 国产综合香蕉五月婷在线| 欧美国产日韩精品| 久久久午夜电影| 亚洲天堂免费在线观看视频| 亚洲国产精品精华液2区45| 久久精品亚洲精品| 亚洲免费在线视频一区 二区| 亚洲国产日韩欧美在线99| 国产一区二区三区日韩欧美| 国产精品成av人在线视午夜片| 欧美高清视频在线观看| 久久午夜电影| 久久精品一区| 久久超碰97中文字幕| 亚洲图片欧洲图片日韩av| 亚洲精品网站在线播放gif| 欧美福利视频| 欧美成人午夜激情在线| 麻豆国产精品一区二区三区| 久久精品人人做人人爽电影蜜月 | 红桃视频欧美| 国产视频在线一区二区| 国产日韩欧美一区在线| 国产精品日韩欧美大师| 国产精品毛片a∨一区二区三区|国 | 欧美成人一区二区三区在线观看 | 亚洲人成久久| 亚洲三级电影在线观看 | 国产欧美高清| 国产午夜精品久久久久久久| 国产欧美一区二区三区另类精品| 国产精品乱子久久久久| 国产精品露脸自拍| 国产精品一区二区三区成人| 国产乱肥老妇国产一区二| 国产伦精品一区二区三区高清| 国产精品久久中文| 国产日本欧美视频| 狠狠色狠狠色综合| 亚洲高清不卡在线| 日韩亚洲欧美成人一区| 亚洲视频在线观看三级| 亚洲欧美一区二区视频| 欧美专区日韩专区| 麻豆精品视频在线观看视频| 免费一区二区三区| 亚洲国产一区在线观看| 9i看片成人免费高清| 亚洲永久免费精品| 久久五月天婷婷| 欧美日韩国产高清视频| 国产精品久久久久久av下载红粉| 国产亚洲女人久久久久毛片| 尤物99国产成人精品视频| 亚洲欧洲一区二区三区在线观看| 中文高清一区| 久久久久综合一区二区三区| 亚洲第一中文字幕| 亚洲性线免费观看视频成熟| 久久精品2019中文字幕| 欧美韩国在线| 国产欧美一区二区精品性色| 一区免费观看视频| 一本到高清视频免费精品| 欧美影片第一页| 亚洲国产岛国毛片在线| 亚洲欧美日韩精品| 欧美激情aaaa| 国产一区二区视频在线观看| 夜夜精品视频| 久久中文字幕一区| 99国产精品国产精品毛片| 久久久亚洲一区| 国产精品v片在线观看不卡| 亚洲第一黄网| 久久国产精品一区二区三区| 亚洲黄一区二区| 久久精品成人| 国产精品久久久久久久一区探花| 亚洲国产清纯| 久久亚洲高清| 欧美一级视频一区二区| 欧美午夜在线| 在线一区观看|