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

天行健 君子當自強而不息

創建游戲內核(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 閱讀(407) 評論(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>
            欧美日韩国产影院| 国产精品二区在线观看| 激情小说另类小说亚洲欧美| 欧美一区2区三区4区公司二百| 亚洲精品日韩一| 欧美日韩国产bt| 国产精品99久久99久久久二8| 欧美高清一区| 欧美精品一区在线发布| 日韩视频精品在线观看| 99国产精品99久久久久久| 欧美日韩一级视频| 小辣椒精品导航| 欧美一级片一区| 亚洲第一偷拍| 亚洲精品国产精品久久清纯直播| 免费中文字幕日韩欧美| 日韩视频免费| 亚洲影视在线播放| 狠狠色狠色综合曰曰| 亚洲国产成人精品女人久久久 | 欧美在线视频在线播放完整版免费观看| 国产精品久久久久一区二区三区共| 亚洲欧美中文日韩在线| 久久频这里精品99香蕉| 亚洲乱码精品一二三四区日韩在线 | 亚洲图片欧洲图片av| 亚洲一区欧美| 在线日韩中文| 在线亚洲观看| 在线观看视频一区二区欧美日韩| 欧美国产国产综合| 国产精品一二三视频| 免费短视频成人日韩| 欧美三级在线视频| 久久这里只精品最新地址| 欧美日韩视频专区在线播放| 久久福利资源站| 欧美久久视频| 欧美成在线观看| 国产欧美日韩视频一区二区三区 | 久热精品视频在线观看| 欧美日韩国产一级片| 久久夜精品va视频免费观看| 欧美日韩一区成人| 免费观看国产成人| 国产人成精品一区二区三| 最新精品在线| 亚洲成色www久久网站| 亚洲综合视频1区| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 久久久青草青青国产亚洲免观| 亚洲视频免费观看| 欧美大片在线影院| 久久综合狠狠综合久久综合88 | 久久久久久久一区二区三区| 午夜电影亚洲| 欧美乱大交xxxxx| 欧美不卡视频一区| 狠狠色综合网| 欧美一区二区成人| 亚洲免费视频成人| 欧美人与禽猛交乱配视频| 欧美大片免费| 激情丁香综合| 久久九九精品| 久久五月婷婷丁香社区| 国产亚洲美州欧州综合国| 亚洲欧美福利一区二区| 性色一区二区| 国产婷婷成人久久av免费高清 | 亚洲电影激情视频网站| 亚洲国产精品高清久久久| 久久精品女人| 欧美成人蜜桃| 亚洲欧洲综合另类在线| 欧美黑人在线观看| 亚洲国产精品999| 亚洲日本中文| 欧美精品一区在线观看| 亚洲麻豆一区| 亚洲资源av| 国产精品亚洲аv天堂网| 亚洲欧美视频在线观看视频| 久久久精品午夜少妇| 国内成人精品一区| 玖玖在线精品| 亚洲精品日本| 亚洲欧美日韩中文在线制服| 国产精品色午夜在线观看| 亚洲自拍偷拍视频| 久久免费黄色| 亚洲精品久久久久久久久久久| 欧美成人中文字幕在线| 亚洲六月丁香色婷婷综合久久| 亚洲色图综合久久| 国产精品一区在线观看你懂的| 亚洲男人影院| 男同欧美伦乱| 在线综合亚洲| 国内精品一区二区| 欧美精品在线视频观看| 亚洲一区二区三区在线播放| 久久人人爽人人| 一区二区三区国产精品| 国产日韩专区| 欧美电影在线播放| 亚洲摸下面视频| 欧美激情一区二区久久久| 亚洲深夜福利网站| 精品不卡视频| 欧美日韩精品中文字幕| 欧美伊人久久大香线蕉综合69| 欧美黄色日本| 欧美在线看片| 日韩视频一区二区三区在线播放| 国产精品夜夜夜一区二区三区尤| 久久在线免费观看视频| 中日韩午夜理伦电影免费| 免费日韩视频| 欧美影院视频| 正在播放亚洲一区| 亚洲国产99| 国产一区二区三区在线观看精品 | 欧美伊人久久久久久午夜久久久久 | 99re视频这里只有精品| 国产精品亚洲片夜色在线| 免费观看国产成人| 午夜精品视频网站| 日韩午夜高潮| 欧美激情一区二区三区在线| 欧美在线视频观看免费网站| 99视频精品免费观看| 亚洲大胆美女视频| 国产亚洲一区二区三区在线播放| 欧美日韩亚洲网| 欧美二区在线| 蜜桃av一区| 久久久人成影片一区二区三区观看 | 亚洲在线观看视频| 一个色综合av| 日韩视频免费观看| 亚洲肉体裸体xxxx137| 亚洲第一偷拍| 1024亚洲| 亚洲国产精品尤物yw在线观看| 国产一区二区三区四区三区四| 国产精品入口| 国产精品午夜在线| 国产欧美日韩另类视频免费观看 | 久久久久国色av免费观看性色| 亚洲一级在线观看| 99国产精品久久久久久久成人热| 欧美国产日本高清在线| 欧美sm重口味系列视频在线观看| 久久精品导航| 美脚丝袜一区二区三区在线观看 | 亚洲永久免费观看| 亚洲欧美影音先锋| 欧美在线视频免费| 久久午夜精品| 欧美国产一区二区| 欧美大片在线观看一区| 欧美激情在线播放| 亚洲人午夜精品免费| 亚洲精品一区二区三区樱花| 99精品欧美一区二区三区| 99这里只有久久精品视频| 一区二区三区视频观看| 亚洲一区二区三区国产| 欧美一级淫片播放口| 久久天天躁狠狠躁夜夜av| 欧美国产日韩xxxxx| 欧美三级乱码| 国产九色精品成人porny| 伊甸园精品99久久久久久| 最新日韩中文字幕| 亚洲一区欧美| 狼人天天伊人久久| 亚洲人午夜精品| 欧美一区二区精品| 欧美韩国一区| 国产一区二区视频在线观看| 亚洲人久久久| 欧美综合国产精品久久丁香| 欧美韩国在线| 亚洲欧美中文另类| 欧美成人综合| 国产日韩一区二区三区在线播放| 亚洲激情网址| 久久精品亚洲| 亚洲日本中文| 久久国产欧美| 国产精品xxxav免费视频| 狠狠色伊人亚洲综合网站色| 这里只有精品在线播放| 久久亚洲一区| 亚洲综合色网站| 欧美乱大交xxxxx| 亚洲国产精品99久久久久久久久|