求大神帮忙 我要读取地图.

wsbcyy 2013-11-16 08:40:52
这里不能上传文件,只能传代码,我的又是整个项目只能加QQ,54739330
#include "StdAfx.h"
#include "GameMap.h"

enum{
MAP_NONE,
MAP_WALL,
};
CGameMap::CGameMap(void)
{
m_pZoneMap=NULL;
}

CGameMap::~CGameMap(void)
{
NAVTEQ *pData =NULL;
map<int,NAVTEQ*>::iterator iter = m_pMapList.begin();
for (;iter != m_pMapList.end();iter++)
{
pData =(*iter).second;
delete pData;pData=NULL;
}
m_pMapList.clear();
}
void CGameMap::initMap(char *pFileName)
{
ifstream infile(pFileName);
if (infile.good())
{
int iNumber=100;
NAVTEQ *pData=NULL;
while(true)
{
pData= new NAVTEQ;
for (int i=0;i< MAX_ROW;i++)
{
for(int j=0;j< MAX_COL;j++)
{
infile>>pData->iData[i][j];

pData->iMapID=iNumber;


}
}
m_pMapList[iNumber]=pData;
iNumber++;
}
}
infile.close();
}
void CGameMap::upData()
{

}

void CGameMap::pictuer()
{
for (int i=0;i<MAX_ROW;i++)
{
for (int j=0;j<MAX_COL;i++)
{
if (m_pZoneMap->iData[i][j]!=MAP_NONE)
{
cout<<"";
}
else
{
cout<<" ";
}
}
}
}
void CGameMap::setMapID(int iMapID)
{
map<int,NAVTEQ*>::iterator iter = m_pMapList.find(iMapID);
if (iter != m_pMapList.end())
{
m_pZoneMap =(*iter).second;
}

}
这是MAP.CPP的代码 不知道错在哪里
...全文
95 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
浮世修 2013-11-16
  • 打赏
  • 举报
回复
断点调试会么?看看是什么函数报的错呀。。。改好了InitMap,在函数结尾打个断点,看看这个函数过去了没。。。过去了看看下一个。。。
wsbcyy 2013-11-16
  • 打赏
  • 举报
回复
大神可以加你QQ请教你吗?
wsbcyy 2013-11-16
  • 打赏
  • 举报
回复
我把if(infile.good())去掉改到while循环里.只接错误: 游戏.exe 中的 0x004139f2 处未处理的异常: 0xC0000005: 读取位置 0x003cc024 时发生访问冲突
浮世修 2013-11-16
  • 打赏
  • 举报
回复
单步跟踪调试了么,看你的那个initMap函数压根过不去啊?
wsbcyy 2013-11-16
  • 打赏
  • 举报
回复
我调试了没报错.但也没显示出地图来连之前的菜单也没显示出来
wsbcyy 2013-11-16
  • 打赏
  • 举报
回复
CGameManager.h的代码: #pragma once #include "GameMenu.h" #include "GameMap.h" class CGameManager { public: CGameManager(void); ~CGameManager(void); void iniGame(); void upData(); void pictuer(); private: CGameMenu *m_pMenu; CGameMap *m_pMap; }; CGameManager.cpp的代码: #include "StdAfx.h" #include "GameManager.h" CGameManager::CGameManager(void) { m_pMenu= new CGameMenu(); m_pMap= new CGameMap(); } CGameManager::~CGameManager(void) { delete m_pMenu;m_pMenu=NULL; delete m_pMap;m_pMap=NULL; } void CGameManager::iniGame() { m_pMenu->initMenu(); m_pMap->initMap("map//map.txt"); m_pMap->setMapID(100); } void CGameManager::upData() { m_pMenu->upData(); m_pMap->upData(); } void CGameManager::pictuer() { m_pMenu->pictuer(); m_pMap->pictuer(); } CGameMenu.h的代码: #pragma once enum{ MENU_START, MENU_PRO, MENU_EXIT, }; class CGameMenu { public: CGameMenu(void); ~CGameMenu(void); void initMenu(); void upData(); void pictuer(); int m_Menuitem; }; CGameMenu.cpp的代码: #include "StdAfx.h" #include "GameMenu.h" int g_iGameStart=GAME_START; CGameMenu::CGameMenu(void) { m_Menuitem=MENU_START; } CGameMenu::~CGameMenu(void) { } void CGameMenu::initMenu() { } void CGameMenu::upData() { if (KEYDOWN(VK_UP)) { m_Menuitem--; if (m_Menuitem<MENU_START) { m_Menuitem=MENU_EXIT; } } else if(KEYDOWN(VK_DOWN)) { m_Menuitem++; if(m_Menuitem>MENU_EXIT) { m_Menuitem=MENU_START; } } else if(KEYDOWN(VK_RETURN)) { if (m_Menuitem==GAME_START) { g_iGameStart=GAME_START; } else if(m_Menuitem==GAME_EXIT) { g_iGameStart=GAME_EXIT; } } } void CGameMenu::pictuer() { cout<<"▁▔▁▔▁▔▁▔㊣▁▔▁▔▁▔▁▔▁▔▁▔▁▔"<<endl; cout<<"▁ ▔"<<endl; cout<<"▁ 《我是特种兵》 ▔"<<endl; cout<<"▁ ▔"<<endl; if (m_Menuitem==MENU_START) { cout<<"▁ -> 游戏开始 ▔"<<endl; cout<<"▁ ▔"<<endl; cout<<"▁ 游戏设置 ▔"<<endl; cout<<"▁ ▔"<<endl; cout<<"▁ 退出游戏 ▔"<<endl; } else if(m_Menuitem==MENU_PRO) { cout<<"▁ 游戏开始 ▔"<<endl; cout<<"▁ ▔"<<endl; cout<<"▁ -> 游戏设置 ▔"<<endl; cout<<"▁ ▔"<<endl; cout<<"▁ 退出游戏 ▔"<<endl; } else { cout<<"▁ 游戏开始 ▔"<<endl; cout<<"▁ ▔"<<endl; cout<<"▁ 游戏设置 ▔"<<endl; cout<<"▁ ▔"<<endl; cout<<"▁ -> 退出游戏 ▔"<<endl; } cout<<"▁ ▔"<<endl; cout<<"▁ ▔"<<endl; cout<<"▁ ▔"<<endl; cout<<"▁▔▁▔▁▔▁▔㊣▁▔▁▔▁▔▁▔▁▔▁▔▁▔"<<endl; } CGameMap.h的代码: #pragma once #include <map> const int MAX_ROW= 15; const int MAX_COL =15; typedef struct NAVTEQ { int iData[MAX_ROW][MAX_COL]; int iMapID; }*LPMap; class CGameMap { public: CGameMap(void); ~CGameMap(void); void initMap(char *pFileName); void upData(); void pictuer(); void setMapID(int iMapID); protected: map<int,NAVTEQ*> m_pMapList; LPMap m_pZoneMap; }; CGameMap.cpp代码: void CGameMap::initMap(char *pFileName) { ifstream infile(pFileName); if (infile.good()) { int iNumber=100; NAVTEQ *pData=NULL; while(true) { pData= new NAVTEQ; for (int i=0;i< MAX_ROW;i++) { for(int j=0;j< MAX_COL;j++) { infile>>pData->iData[i][j]; pData->iMapID=iNumber; } } m_pMapList[iNumber]=pData; iNumber++; } } infile.close(); } void CGameMap::upData() { } void CGameMap::pictuer() { for (int i=0;i<MAX_ROW;i++) { for (int j=0;j<MAX_COL;i++) { if (m_pZoneMap->iData[i][j]!=MAP_NONE) { cout<<"";//这里有图标代表墙.论坛不让输出.我删除掉了 } else { cout<<" "; } } } } void CGameMap::setMapID(int iMapID) { map<int,NAVTEQ*>::iterator iter = m_pMapList.find(iMapID); if (iter != m_pMapList.end()) { m_pZoneMap =(*iter).second; } } 控制台的代码: // 游戏.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "GameManager.h" int _tmain(int argc, _TCHAR* argv[]) { CGameManager *pGame= new CGameManager(); while(true) { system("cls"); pGame->iniGame(); pGame->upData(); pGame->pictuer(); if (g_iGameStart==GAME_EXIT) { break; } Sleep(100); } delete pGame;pGame=NULL; return 0; } 我以读文件的形式读取MAP文件下MAP.TXT的文档的地图.求大神帮忙!!
浮世修 2013-11-16
  • 打赏
  • 举报
回复
错误也不说啥现象,看了下,貌似initMap函数里那个while(true)没有退出条件,看上去你外层的if 判断条件应该才是while循环的退出条件吧? 把外面的if去掉while条件改成while(infile.good()) 另外发代码也有模版的呀。。。这么看多不舒服
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧