請問高手,何謂用戶數據文件?
熱心網友
數據文件是由 grabber 工具創建的, 它的后綴名為 。dat。 它們可以包含位圖, 調色板, 字體, 采樣聲音, MIDI 音樂, FLI/FLC 動畫, 和任何你輸入的其它 2 進制數據。 當用戶裝載了一個數據文件后將獲得一個指向 DATAFILE 結構數組的指針: typedef struct DATAFILE{ void *dat; - 指向實際數據的指針 int type; - 數據的類型 long size; - 數據所占的字節數 void *prop; - 對象的屬性列表} DATAFILE;type 域可以為以下的值: DAT_FILE - dat 域指向一個嵌套的數據文件 DAT_DATA - dat 域指向一塊二進制數據 DAT_FONT - dat 域指向指向一個字體對象 DAT_SAMPLE - dat 域指向指向一個樣例結構 DAT_MIDI - dat 域指向指向 MIDI 文件 DAT_PATCH - dat 域指向指向 GUS 補丁文件 DAT_FLI - dat 域指向 FLI/FLC 動畫 DAT_BITMAP - dat 域指向一個BITMAP結構 DAT_RLE_SPRITE - dat 域指向一個 RLE_SPRITE 結構 DAT_C_SPRITE - dat 域指向一個線性編譯精靈 DAT_XC_SPRITE - dat 域指向一個 mode-X 編譯精靈 DAT_PALETTE - dat 域指向一個有 256 項 RGB 結構的數組 DAT_END - 用來表示數據列表結尾的特殊標記grabber 程序可以產生一個將文件中每個對象目錄定義成一系列 #define 常量, 常量名為用戶在 grabber 中輸入的對象名。 舉例來說, 如果用戶建立了一個數據文件 foo。dat, 其包含一個位圖叫作 THE_IMAGE, 用戶可以通過下面的代碼片段來顯式它: #include "foo。h" DATAFILE *data = load_datafile("foo。dat"); draw_sprite(screen, data[THE_IMAGE]。dat, x, y);如過用戶使用的是 C++ 則將得到一個錯誤。 這是因為 dat 域是一個 void 類型指針, 而 draw_sprite() 需要一個 BITMAP 類型的指針。 用戶可通過強制類型轉換來解決, eg: draw_sprite(screen, (BITMAP *)data[THE_IMAGE]。dat, x, y);。