最近学图形学经常用EasyX图形库去实现一些图形学算法,因为这个函数库使用方便,简化了很多配置,我也用它来做了一些小游戏,怎么储存上一次用户运行的信息就很关键,这里的实现也仅仅就是简单的文件读写操作,但是文件不仅仅可以实现游戏的读档和存档,还可以用来处理用户账户、登录信息、玩家统计、地图信息、关卡设计、游戏配置等持久化数据。
很多时候我们按下“ESC”就会让游戏暂停,这时如果我们不想玩了,可以选择存档,来保存上一次的关键信息;在下一次运行时我们也可以读档来恢复上一次的进度,这在游戏中很关键。
我们可以在游戏中的启动、暂停、结束等位置调用下面的读/存档函数:
注意读存档的(fscanf、fprintf)格式要一一对应
void readRecordFile()
{
FILE * fp;
fp=fopen("储存游戏信息的文件路径","r");
fscanf(fp,"%f/d/c...","&游戏中的关键信息变量...");
fclose(fp);
}
void writeRecordFile()
{
FILE * fp;
fp=fopen("储存游戏信息的文件路径","w");
fprintf(fp,"%f/d/c...","游戏中的关键信息变量...");
fclose(fp);
}
为了省事我用c的文件读取方式,当然也可以用c++的(在这里复习顺便一下):
首先要打开文件(文件读写前的必要准备)为文件流对象和指定的磁盘文件建立关联:
(1)存档:
ofstream outfile;
outfile.open("文件路径",输入输入方式);
//也可以在定义时就设置:
//ofstream outfile("文件路径",输入输入方式);
这里的文件路径可以只写文件名,这时默认为当前目录下的文件。
输入输出方式就不写了,用的时候一查就行了。值得注意的是不要搞反这里的输入输出方式打开文件。
然后我们就向文件中输入:outfile<<......;
(2)读档:
ifstream infile;
infile.open("文件路径",输入输入方式);
//也可以在定义时就设置:
//ifstream infile("文件路径",输入输入方式);
这里的文件路径可以只写文件名,这时默认为当前目录下的文件。
输入输出方式就不写了,用的时候一查就行了。值得注意的是不要搞反这里的输入输出方式打开文件。
然后我们就向文件中输入:infile>>......;
当然c++的这些输入输出流的对象还有很多函数,比如get、put。。。可以操作。