📄 filehandle.cpp
字号:
// FileHandle.cpp: implementation of the CFileHandle class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "EludeObstacle.h"
#include "FileHandle.h"
#include "Aerocraft.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
extern int g_NumObstacle;
extern CObstacle ObstacleMap[10];
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CFileHandle::CFileHandle()
{
m_fileName = "ObstacleMap.txt";
}
CFileHandle::~CFileHandle()
{
}
void CFileHandle::init()
{
if(m_IndexFile.Open(m_fileName,CFile::modeRead))
{}
else
{
m_numMap = 0;
//AfxMessageBox("文件不能被打开!!!");
return;
}
m_IndexFile.SeekToBegin();
char character[1];
character[1] = NULL;
m_IndexFile.SeekToBegin();
m_numMap = 0;
CMenu *mainmenu;
mainmenu=AfxGetMainWnd()->GetMenu(); //得到主菜单
while (m_IndexFile.Read(character,1))
{
if(character[0] == 'O')
{
m_numMap++;
CString name;
CString temp2(m_numMap + 48);
name = "自定关卡" + temp2;
(mainmenu->GetSubMenu (5))->AppendMenu(MF_STRING,IDM_SaveMap1 + m_numMap - 1,_T(name)); //添加新的菜单项
}
}
m_IndexFile.Close();
/*
Seek(11, CFile::current);
while(character[0] != ' ' || character[0] != 'O')
{
for(int j = 0;j < 3;j++)
{
ObstacleMap[sequence]
}
sequence++;
}
break;
*/
}
void CFileHandle::SaveCurrentMap()
{
if(m_numMap >= 5)
{
AfxMessageBox("在一个文本文件中最多可以保存5幅地图,请把同一目录下的ObstacleMap.txt文件删除或改名,以保存更多的地图!");
return;
}
if(m_IndexFile.Open(m_fileName,CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite,NULL))
{}
else
{
AfxMessageBox("打开文件出错!!!");
return;
}
m_IndexFile.SeekToEnd();
/*
CString pbuf = "abcde";
m_IndexFile.Write(pbuf, 6);
*/
//(m_numMap + 1)
//char pbuf[100];
//m_numMap = 0;
m_numMap++;
CString pbuf = "";
char temp[2];
sprintf(temp,"%d",m_numMap);
//pbuf += "\r\n";
pbuf += "Obstacle";
pbuf += temp;
pbuf += "\r\n";
for(int i = 0;i < g_NumObstacle;i++)
{
pbuf += transform(ObstacleMap[i].center.x);
pbuf += ",";
pbuf += transform(ObstacleMap[i].center.y);
pbuf += ",";
pbuf += transform((int)ObstacleMap[i].radius);
pbuf += ",\r\n";
}
AfxMessageBox(pbuf);
m_IndexFile.Write(pbuf, pbuf.GetLength());
m_IndexFile.Close();
CMenu *mainmenu;
mainmenu=AfxGetMainWnd()->GetMenu(); //得到主菜单
//(mainmenu->GetSubMenu (6))->AppendMenu (MF_SEPARATOR);//添加分隔符
CString name;
CString temp2(m_numMap + 48);
name = "自定关卡" + temp2;
(mainmenu->GetSubMenu (5))->AppendMenu(MF_STRING,IDM_SaveMap1 + m_numMap - 1,_T(name)); //添加新的菜单项
//DrawMenuBar(); //重画菜单
AfxMessageBox("地图已经保存!");
}
CString CFileHandle::transform(int value)
{
char temp[6];
sprintf(temp,"%d",value);
return temp;
}
int CFileHandle::ReadMap(int sequence)
{
if(m_IndexFile.Open(m_fileName,CFile::modeRead))
{}
else
{
m_numMap = 0;
//AfxMessageBox("文件不能被打开!!!");
return 0;
}
char character[1];
character[1] = NULL;
m_IndexFile.SeekToBegin();
for(int i = 0;i < sequence;i++)
{
while (m_IndexFile.Read(character,1))
{
if(character[0] == 'O')
{
break;
}
}
}
sequence = 0;
char temp[6];
m_IndexFile.Seek(10, CFile::current);
//CString temp ="";
character[0] = NULL;
while(character[0] != 'O')
{
char tempChar[1];
int n = 0;
while(m_IndexFile.Read(tempChar,1))
{
if(tempChar[0] == ','){temp[n] = '\0'; break;}
temp[n] = tempChar[0];
n++;
}
ObstacleMap[sequence].center.x = atoi(temp);
n = 0;
while(m_IndexFile.Read(tempChar,1))
{
if(tempChar[0] == ','){temp[n] = '\0'; break;}
temp[n] = tempChar[0];
n++;
}
ObstacleMap[sequence].center.y = atoi(temp);
n = 0;
while(m_IndexFile.Read(tempChar,1))
{
if(tempChar[0] == ','){temp[n] = '\0'; break;}
temp[n] = tempChar[0];
n++;
}
ObstacleMap[sequence].radius = atoi(temp);
sequence++;
if(m_IndexFile.GetLength() == m_IndexFile.Seek(2, CFile::current))
{break;}
m_IndexFile.Read(character,1);
/*
char b[2];
b[0] = character[0];
b[1] = '\0';
//AfxMessageBox(b);
*/
m_IndexFile.Seek(-1, CFile::current);
}
g_NumObstacle = sequence;
m_IndexFile.Close();
return sequence;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -