| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 633 人关注过本帖
标题:帮我把下面代码编辑下上传给我谢了
只看楼主 加入收藏
哦是菜鸟
Rank: 2
等 级:论坛游民
帖 子:40
专家分:15
注 册:2011-9-14
结帖率:87.5%
收藏
已结贴  问题点数:14 回复次数:6 
帮我把下面代码编辑下上传给我谢了
http://bbs.
2011-09-20 14:48
laznrbfe
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:482
专家分:1599
注 册:2011-5-22
收藏
得分:0 
程序代码:
#include "ReadGameMap.h"
using namespace NetEase; // 使用NetEase命名空间
ReadGameMap::ReadGameMap(void)
{    //m_MapWidth=0;            // 初始化地图的宽度   
    //m_MapHeight=0;            // 初始化地图的高度   
    m_SubMapWidth=320;        // 初始化子地图宽度   
    m_SubMapHeight=240;        // 初始化子地图高度   
    m_MaskTemp=1;            // 初始化MASK临时变量   
    //m_SubMapRowNum=0;        // 子地图的行数量   
    //m_SubMapColNum=0;        // 子地图的列数量   
    //m_SubMapTotal=0;        // 子地图的总数
}
ReadGameMap::~ReadGameMap(void)
{}// 加载地图文件
bool ReadGameMap::LoadMap(char *filename){   
    FILE *fp;   
    //m_FileName=filename; // 全局变量地图文件名   
    strcpy(m_FileName,filename);   
    // 打开流    
    if( (fp = fopen(m_FileName, "rb" )) == NULL)   
    {       
        printf("打开文件错误。\n");       
        return false;   
    }
    // 读取地图文件头   
    MapHeader header;   
    fread(&header, sizeof(MapHeader), 1, fp); // 读取地图文件头   
    m_MapWidth=header.Width; // 地图的宽度   
    m_MapHeight=header.Height; // 地图的高度   
    m_SubMapRowNum=ceil((float)(m_MapWidth/m_SubMapWidth)); // 计算行中子地图的数量   
    m_SubMapColNum=ceil((float)(m_MapHeight/m_SubMapHeight)); // 计算列中子地图的数量   
    m_SubMapTotal=m_SubMapRowNum*m_SubMapColNum; // 计算地图中总的子地图数量   
    //printf("Flag=0x%X\n",header.Flag);   
    //printf("Width=%d\n",header.Width);   
    //printf("Height=%d\n",header.Height);   
    //printf("m_SubMapTotal=%d\n",m_SubMapTotal);   
    // 判断文件头是否正确(MAPX)  && (M1.0)
    if((header.Flag!=0x4D415058) && (header.Flag!=0x4D312E30))   
    {       
        printf("未支持的地图文件格式。\n");       
        return false;   
    }   
    // 读取子地图偏移值列表   
    m_SubMapOffsetList=new uint32[m_SubMapTotal]; // 自动分配列表空间   
    fread(m_SubMapOffsetList, sizeof(uint32), m_SubMapTotal, fp); // 读取列表   
    fread(&m_MapSize, sizeof(uint32), 1, fp); // 读取文件大小或文件头的大小   
    //printf("m_SubMapOffsetList=0x%X\n",m_SubMapOffsetList[60]);   
    // MAPX   
    if (header.Flag == 0x4D415058)   
    {       
        ReadJPGH(fp); // 读取JPGH的数据       
        m_FileType=1; // 设置地图文件类型   
    }

    // M1.0   
    if (header.Flag == 0x4D312E30)   
    {       
        ReadHEAD(fp); // 读取新地图的数据       
        m_FileType=2; // 设置地图文件类型   
    }   
    fclose(fp); // 关闭流   
    return true;
}
// 读取地图JPGH的数据bool
ReadGameMap::ReadJPGH(FILE *fp)
{       
    UnitHeader JpegHead;   
    fread(&JpegHead,sizeof(JpegHead),1,fp); // 读取单元头的数据   
    // 判断标志是否正确(HGPJ)   
    if (JpegHead.Flag!=0x4A504748)   
    {       
        printf("JPEG HEADER 标志错误。\n");       
        return false;   
    }   
    m_jpgh.Data = new uint8[JpegHead.Size]; // 分配单元数据的内存空间   
    m_jpgh.Size=JpegHead.Size;   
    fread(m_jpgh.Data,JpegHead.Size,1,fp); // 读取单元数据   
    //PrintHex(m_JpegHeadDate,JpegHead.Size);   
    return true;
}
// 读取地图HEAD的数据
bool ReadGameMap::ReadHEAD(FILE *fp)
{       
    uint32 HeaderSize;   
    HeaderSize=m_SubMapOffsetList[0]-m_MapSize; // 计算地图头数据的大小   
    m_head.Size=HeaderSize;    m_head.Data = new uint8[HeaderSize];   
    fread(m_head.Data,sizeof(uint8),HeaderSize,fp); // 读取地图头数据   
    //PrintHex(MapHeadData.Data,MapHeadData.Size);   
    return true;
}
// 读取地图的单元数据
bool ReadGameMap::ReadUnit(uint32 UnitNum)
{   
    FILE *fp;   
    int64 seek;   
    bool Result;   
    bool loop=true;   
    char * filename;   
    m_MaskTemp=1;    // 打开流    
    //printf("m_FileName=%s\n",m_FileName);   
    if( (fp = fopen(m_FileName, "rb" )) == NULL)   
    {       
        printf("打开文件错误。\n");       
        return false;   
    }   
    seek=m_SubMapOffsetList[UnitNum];   
    //printf("Seek=0x%X\n",seek);   
    fseek(fp,seek,SEEK_SET);   
    fread(&m_MaskNum,sizeof(uint32),1,fp); // 读取MASK的数量   
    //printf("m_MaskNum=%d\n",m_MaskNum);    // 新地图使用   
    if ((m_FileType==2) && (m_MaskNum>0))   
    {       
        //printf("New Map!\n");       
        m_MaskList = new uint32[m_MaskNum];       
        fread(m_MaskList,sizeof(uint32),m_MaskNum,fp);   
    }
    UnitHeader unit;   
    while(loop)   
    {       
        fread(&unit,sizeof(UnitHeader),1,fp); // 读取单元的头数据       
        //printf("单元标志=%X\n", unit.Flag);        
        //printf("单元大小=%d\n", unit.Size);       
        switch(unit.Flag)       
        {           
            // GAMI "47 41 4D 49"       
        case 0x494D4147:           
            Result=ReadIMAG(fp,unit.Flag,unit.Size);           
            break;           
            // GEPJ "47 45 50 4A"       
        case 0x4A504547:           
            Result=ReadJPEG(fp,unit.Flag,unit.Size);           
            break;           
            // KSAM "4B 53 41 4D"       
        case 0x4D41534B:           
            Result=ReadMASK(fp,unit.Flag,unit.Size);           
            break;           
            // KOLB "4B 4F 4C 42"       
        case 0x424C4F4B:           
            Result=ReadBLOK(fp,unit.Flag,unit.Size);           
            break;           
            // LLEC "4C 4C 45 43"       
        case 0x43454C4C:           
            Result=ReadCELL(fp,unit.Flag,unit.Size);           
            break;           
            // GIRB "47 49 52 42"       
        case 0x42524947:           
            Result=ReadBRIG(fp,unit.Flag,unit.Size);           
            loop=false;           
            break;           
            // 默认处理       
        default:           
            m_EndUnit.Flag=unit.Flag;           
            m_EndUnit.Size=unit.Size;           
            loop=false;           
            //printf("Flag错误!\n");           
            //printf("Flag=0x%X\n\n",unit.Flag);           
            break;           
            //return false;       
        }   
    }   
    fclose(fp);
}
// 读取地图宽度
uint32 ReadGameMap::ReadMapWidth()
{   
    return m_MapWidth;
}
// 读取地图高度
uint32 ReadGameMap::ReadMapHeight()
{   
    return m_MapHeight;
}
// 读取子地图的宽度
uint32 ReadGameMap::ReadSubMapWidth()
{   
    return m_SubMapWidth;
}
// 读取子地图的高度
uint32 ReadGameMap::ReadSubMapHeight()
{   
    return m_SubMapHeight;
}
// 读取子地图的总数量
uint32 ReadGameMap::ReadSubMapTotal()
{    return m_SubMapTotal;
}
// 读取子地图中Mask的总数
uint32 ReadGameMap::ReadMaskTotal()
{   
    return m_MaskNum;
}
// 读取地图文件大小
uint32 ReadGameMap::ReadMapSize()
{   
    return m_MapSize;
}
// 读取地图IMAG的数据
bool ReadGameMap::ReadIMAG(FILE *fp, uint32 Flag, uint32 Size)
{   
    if (Flag==0x494D4147)   
    {   
        m_imag.Data = new uint8[Size]; // 分配单元数据的内存空间   
        fread(m_imag.Data,Size,1,fp); // 读取单元IMAG的数据   
        m_imag.Size=Size;   
        //printf("IMAG的数据:\n");   
        //PrintHex(m_ImagData,Size);   
    }   
    else   
    {       
        printf("IMAG标志错误!\n");       
        return false;   
    }   
    return true;
}
// 读取地图JPEG的数据
bool ReadGameMap::ReadJPEG(FILE *fp, uint32 Flag, uint32 Size)
{   
    if (Flag==0x4A504547)   
    {   
        fread(&m_SubMapWidth,sizeof(uint16),1,fp); // 子地图的宽度   
        fread(&m_SubMapHeight,sizeof(uint16),1,fp); // 子地图的高度   
        m_jpeg.Data = new uint8[Size-4]; // 分配单元数据的内存空间   
        fread(m_jpeg.Data,Size-4,1,fp); // 读取单元JPEG的数据   
        m_jpeg.Size=Size;   
        //printf("JPEG的数据:\n");   
        //PrintHex(m_JpegData,Size-4);   
    }   
    else   
    {       
        printf("JPEG标志错误!\n");       
        return false;   
    }   
    return true;
}
// 读取地图MASK的数据
bool ReadGameMap::ReadMASK(FILE *fp, uint32 Flag, uint32 Size)
{   
    if (Flag==0x4D41534B)   
    {   
        //printf("m_MaskTemp=%d\n",m_MaskTemp);   
        m_mask[m_MaskTemp].Data = new uint8[Size];
        // 分配单元数据的内存空间   
        m_mask[m_MaskTemp].Size=Size;   
        fread(m_mask[m_MaskTemp].Data,Size,1,fp); // 读取单元MASK的数据   
        //printf("MASK的数据:\n");   
        //PrintHex(mask[m_MaskTemp].m_MaskData,Size);   
        m_MaskTemp++;   
    }   
    else   
    {       
        printf("MASK标志错误!\n");       
        return false;   
    }   
    return true;
    }// 读取地图BLOK的数据
bool ReadGameMap::ReadBLOK(FILE *fp, uint32 Flag, uint32 Size)
{   
    if (Flag==0x424C4F4B)   
    {   
        m_blok.Data = new uint8[Size]; // 分配单元数据的内存空间   
        fread(m_blok.Data,Size,1,fp); // 读取单元BLOK的数据   
        m_blok.Size=Size;    //printf("BLOK的数据:\n");   
        //PrintHex(m_BlokData,Size);   
    }   
    else   
    {       
        printf("BLOK标志错误!\n");       
        return false;   
    }   
    return true;
}
// 读取地图CELL的数据
bool ReadGameMap::ReadCELL(FILE *fp, uint32 Flag, uint32 Size)
{   
    if (Flag==0x43454C4C)   
    {   
        m_cell.Data = new uint8[Size]; // 分配单元数据的内存空间   
        fread(m_cell.Data,Size,1,fp); // 读取单元CELL的数据   
        m_cell.Size=Size;   
        //printf("CELL的数据:\n");   
        //PrintHex(m_CellData,Size);   
    }   
    else   
    {       
        printf("CELL标志错误!\n");       
        return false;   
    }   
    return true;
}
// 读取地图BRIG的数据
bool ReadGameMap::ReadBRIG(FILE *fp, uint32 Flag, uint32 Size)
{   
    if (Flag==0x42524947)   
    {   
        m_brig.Data = new uint8[Size]; // 分配单元数据的内存空间   
        fread(m_brig.Data,Size,1,fp); // 读取单元BRIG的数据   
        m_brig.Size=Size;   
        //printf("BRIG的数据:\n");   
        //PrintHex(m_BirgData,Size);   
    }   
    else   
    {       
        printf("BRIG标志错误!\n");       
        return false;   
    }   
    return true;
}// 读取JPGH的数据
MapData ReadGameMap::ReadJpghData()
{   
    return m_jpgh;
}
// 读取HEAD的数据
MapData ReadGameMap::ReadHeadData()
{   
    return m_head;
}
// 读取IMAG的数据
MapData ReadGameMap::ReadImagData()
{   
    return m_imag;
}
// 读取JPEG的数据
MapData ReadGameMap::ReadJpegData()
{   
    return m_jpeg;
}
// 读取MASK的数据
MapData ReadGameMap::ReadMaskData(uint8 ID)
{   
    return m_mask[ID];
}
// 读取BLOK的数据
MapData ReadGameMap::ReadBlokData()
{   
    return m_blok;
}
// 读取CELL的数据
MapData ReadGameMap::ReadCellData()
{   
    return m_cell;
}
// 读取BRIG的数据
MapData ReadGameMap::ReadBrigData()
{   
    return m_brig;
}
缺少"ReadGameMap.h"文件
2011-09-21 17:03
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
啥意思呀。是那个网址你打不开吗?

还是说你所谓的“编辑一下”有什么特别的要求?
2011-09-22 22:00
哦是菜鸟
Rank: 2
等 级:论坛游民
帖 子:40
专家分:15
注 册:2011-9-14
收藏
得分:0 
回复 2楼 laznrbfe
有办法帮我找到缺少"ReadGameMap.h"文件这个文件?
2011-09-23 12:39
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:1 
谁知道这是哪的头文件,你再去那个网站找找呗,应该能找到。
2011-09-23 18:26
laznrbfe
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:482
专家分:1599
注 册:2011-5-22
收藏
得分:13 
回复 5楼 pangding
我没有办法。
2011-09-24 07:44
哦是菜鸟
Rank: 2
等 级:论坛游民
帖 子:40
专家分:15
注 册:2011-9-14
收藏
得分:0 
能帮我写个读取大话资源文件类?
2011-09-24 11:38
快速回复:帮我把下面代码编辑下上传给我谢了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024002 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved