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

天行健 君子當自強而不息

創建游戲內核(4)【OO改良版】

 

本篇是創建游戲內核(3)【OO改良版】的續篇,關于該內核的細節說明請參閱創建游戲內核(4)


接口:

/*************************************************************************
PURPOSE:
    Interface for data read and write from file.
*************************************************************************/


#ifndef _CORE_DATA_H_
#define _CORE_DATA_H_

typedef 
int BOOL;
typedef unsigned 
long ulong;

void* data_create(ulong size);
void data_destroy(void* data);
BOOL data_save(
const char* filename, const void* data, ulong size);
BOOL data_load(
const char* filename, void** data, ulong* size);

#endif
 

實現:

/*************************************************************************
PURPOSE:
    Implenents for data read and write from file.
*************************************************************************/


#include <stdio.h>
#include <malloc.h>
#include <memory.h>
#include "core_data.h"

#pragma warning(disable : 4996)

#define NULL    0

#define TRUE    1
#define FALSE   0

//-----------------------------------------------------------------------------
// Create data object.
//-----------------------------------------------------------------------------
void* data_create(ulong size)
{
    
void* _data = malloc(size);
    
    
if(_data)
        memset(_data, 0, size);

    
return _data;
}

//-----------------------------------------------------------------------------
// Destroy data object
//-----------------------------------------------------------------------------
void data_destroy(void* data)
{
    
if(data)
    {
        free(data);
        data = NULL;
    }    
}

//-----------------------------------------------------------------------------
// Write data into file.
//-----------------------------------------------------------------------------
BOOL data_save(const char* filename, const void* data, ulong size)
{
    FILE* _fp;

    
if(data == 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(data, 1, size, _fp);
    fclose(_fp);

    
return TRUE;
}

//-----------------------------------------------------------------------------
// Load data from file.
//-----------------------------------------------------------------------------
BOOL data_load(const char* filename, void** data, ulong* size)
{
    FILE* _fp;

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

    
// read in size and data

    
ulong _size;
    
char* _data;

    fread(&_size, 1, 4, _fp);

    
if((_data = (char*) malloc(_size)) == NULL)
        
return FALSE;

    memset(_data, 0, 
sizeof(_size));

    fread(_data, 1, _size, _fp);
    fclose(_fp);

    *data = _data;

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

    
return TRUE;
}

測試代碼:

/*****************************************************************************
PURPOSE:
    Test for data save and load.
*****************************************************************************/


#include "core_common.h"
#include "core_framework.h"
#include "core_data.h"

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

class APP : public FRAMEWORK
{
public:       
    BOOL init()
    {
        
const int _data_size = 64;

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

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

        
const char* _filename = "names.data";

        
// save the names to disk
        data_save(_filename, m_names, _data_size);

        
// destroy data
        data_destroy(m_names);
        
        DWORD _load_size;

        
// load the names from disk, size will equal 64 when the load function returns.
        data_load(_filename, (void**) &m_names, &_load_size);    

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

        
return TRUE;
    }
    
private:
    NAME* m_names;
};

//--------------------------------------------------------------------------------
// Main function, routine entry.
//--------------------------------------------------------------------------------
int WINAPI WinMain(HINSTANCE inst, HINSTANCE pre_inst, LPSTR cmd_line, int cmd_show)
{
    APP app;

    
if(! build_window(inst, "MainClass", "MainWindow", WS_OVERLAPPEDWINDOW, 0, 0, 640, 480))
        
return -1;
    
    app.run();

    
return 0;
}

posted on 2007-10-06 17:16 lovedday 閱讀(289) 評論(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>
            欧美专区在线观看一区| 欧美大片一区二区| 亚洲一级在线观看| 国产精品视屏| 久久综合久久88| 久久综合色一综合色88| 亚洲国产精品一区二区三区| 欧美高清视频一区二区| 欧美精品综合| 亚洲欧美在线播放| 久久精品免费电影| 日韩视频免费观看高清完整版| 亚洲精品黄色| 国产精品麻豆va在线播放| 久久精品视频在线看| 久久夜色精品国产噜噜av| 99国产精品久久久久老师| 亚洲新中文字幕| 伊人久久大香线蕉av超碰演员| 亚洲国产三级| 国产一区二区三区不卡在线观看| 嫩草影视亚洲| 国产精品视频免费在线观看| 六月婷婷一区| 欧美日韩国产成人在线| 久久久久久久一区| 欧美美女喷水视频| 久色成人在线| 国产精品久久久久久五月尺| 久久婷婷国产麻豆91天堂| 欧美激情一区二区三区不卡| 欧美在线视频播放| 欧美日韩精品一区视频| 久久久久久久波多野高潮日日| 欧美高清自拍一区| 久久久久久久综合日本| 欧美国产日韩一区二区在线观看 | 国产精品日韩欧美一区| 欧美不卡一卡二卡免费版| 欧美午夜寂寞影院| 亚洲国产高清视频| 国产字幕视频一区二区| 99国产精品国产精品久久| 激情丁香综合| 午夜国产精品视频免费体验区| 亚洲三级免费观看| 久久久综合激的五月天| 欧美一区二区三区在线播放| 欧美日韩直播| 亚洲黄色影片| 亚洲国产成人一区| 久久天堂av综合合色| 久久九九国产精品怡红院| 欧美亚洲成人网| 99re8这里有精品热视频免费| 亚洲国产日韩欧美在线99| 久久精品视频在线| 久久久欧美精品sm网站| 国产精品视频| 亚洲神马久久| 午夜精品福利一区二区蜜股av| 欧美日韩高清不卡| 99re6这里只有精品| 中文精品一区二区三区 | 欧美亚洲一区二区三区| 欧美在线日韩精品| 国产日韩欧美a| 欧美一级淫片aaaaaaa视频| 先锋影音国产精品| 国产日产欧产精品推荐色| 亚洲欧美日韩一区二区在线| 欧美在线高清| 国产一区二区三区不卡在线观看| 久久www成人_看片免费不卡| 久久躁日日躁aaaaxxxx| 亚洲国产成人在线| 欧美精品九九| 亚洲尤物在线| 久久亚洲色图| 亚洲精品系列| 国产精品久久久久一区二区三区 | 欧美高清视频www夜色资源网| 亚洲国产精品一区二区久| 欧美劲爆第一页| 亚洲视频每日更新| 久久久精品性| 亚洲经典三级| 欧美三级乱人伦电影| 亚洲欧美综合v| 免播放器亚洲一区| 99国产一区| 国产日韩在线看| 蜜臀久久99精品久久久久久9| 亚洲全部视频| 久久国产精彩视频| 亚洲人成7777| 国产精品热久久久久夜色精品三区 | 欧美jizz19性欧美| 中文一区二区| 伊人婷婷欧美激情| 国产精品xxxxx| 久久精品国产一区二区电影| 亚洲高清一二三区| 欧美伊人久久久久久午夜久久久久 | 海角社区69精品视频| 欧美精品导航| 久久国产一区二区三区| 亚洲毛片视频| 免费国产自线拍一欧美视频| 在线视频中文亚洲| 在线观看一区二区精品视频| 国产精品成人一区二区| 老司机凹凸av亚洲导航| 亚洲免费视频观看| 91久久精品美女| 久久九九免费视频| 亚洲男人的天堂在线| 亚洲成色777777女色窝| 国产精品一页| 欧美三级在线| 欧美高清不卡| 榴莲视频成人在线观看| 欧美亚洲在线| 午夜精品久久久久久久| 一区二区三区精品视频| 亚洲二区免费| 欧美第一黄色网| 久久视频国产精品免费视频在线| 亚洲伊人久久综合| 一区二区三区精品视频| 亚洲福利视频在线| 国内一区二区三区| 国产一区二区你懂的| 国产精品日韩久久久久| 欧美午夜免费| 欧美视频在线看| 欧美日韩中文字幕在线视频| 欧美精品福利视频| 欧美gay视频| 欧美成人午夜激情视频| 欧美刺激性大交免费视频| 欧美大尺度在线| 欧美精品观看| 欧美日韩亚洲91| 欧美午夜精品理论片a级按摩| 欧美日韩一区二区精品| 欧美色欧美亚洲另类二区| 欧美激情综合五月色丁香| 欧美激情综合亚洲一二区| 欧美人体xx| 国产精品九九久久久久久久| 国产精品久久久久久av下载红粉| 国产精品久久久久久久久久尿| 国产精品久久久久久超碰| 国产精品网红福利| 韩国三级在线一区| 亚洲精品日韩一| 国产精品99久久久久久久久| 亚洲亚洲精品在线观看| 亚洲欧美视频一区二区三区| 欧美一区二区三区的| 久久成人资源| 欧美高潮视频| 夜夜嗨av色综合久久久综合网| 亚洲一区视频| 久久久久久自在自线| 欧美国产亚洲另类动漫| 欧美特黄a级高清免费大片a级| 国产精品一区二区久激情瑜伽| 激情91久久| 在线中文字幕不卡| 久久久av毛片精品| 国产精品v日韩精品| 国产一区二区三区免费在线观看 | 国产精品伦理| 韩曰欧美视频免费观看| 亚洲精品免费网站| 国产精品亚洲成人| 韩国亚洲精品| 久久男女视频| 久久精品99久久香蕉国产色戒 | 亚洲第一伊人| 久久婷婷国产综合精品青草| 欧美亚洲视频一区二区| 国产日韩一区| 欧美自拍偷拍午夜视频| 午夜一区不卡| 国产午夜精品美女毛片视频| 香蕉乱码成人久久天堂爱免费 | 亚洲视频国产视频| 国产精品久久久久久av福利软件| 亚洲一区免费视频| 亚洲在线成人| 国产精品久久久久久久久久久久| 亚洲五月婷婷| 亚洲一区二区三区在线看| 国产麻豆综合| 噜噜噜躁狠狠躁狠狠精品视频| 久久久91精品国产一区二区三区 | 欧美午夜宅男影院|