我在此次大作业的任务中负责的是绘制模块,任务是根据玩家输入的参数绘制生成对应的地图,以及每走一步生成一张新的状态图保存下来。
由于我的二位队友很早就写完了他们的部分,而我由于各方面繁多事务与学业压力迟迟未能动手,感到十分愧疚。
从今日开始,逐日记录进度以及一些写的时候的问题以及心得。
----------------------------------------------2022.12.2----------------------------------------------------------------------
今日-初始日-心得(易错点自提醒+more things to be done)
复习(写bmp)文件相关的基础知识:
一,大纲引入
1.文件的目的:数据持久化---记得包含头文件 fstream
2. 文件类型:文本文件(ASCII形式存储)/二进制文件(原有的样貌)
3.三大操作:ofstream,ifstream,fstream
二,写文件
1.大体流程:创建流对象->打开文件->写数据(往文件里面写数据)->关闭文件
ofstream File;
File.open("文件路径",打开方式);
File<<"yyhlovezxy"<<endl;//用对象名平替cout
File.close();//这个括号不能少
2.何为文件路径?
a.分为两种:绝对路径&&相对路径
b.路径分隔符有两种:'/'与'\',但由于后者与cpp中的转义符重合,为避免歧义,在c++中要么用前者,要么改成‘\\’
c.什么符号表示什么目录?(可自查)相对路径的逻辑起点是这个cpp文件所在的直接位置,如若不加任何说明,则自动在与cpp同级的地方生成文件
3.何为打开方式?
A. ios::in(若文件不存在则找不到) ios::out(若文件不存在则创一个,若存在则覆盖) ios::app ios::trunc (不存在同out 存在时先删再创)
ios::binary : 按二进制形式读入数据
B.可以用‘|’操作符配合使用 :ios::binary|ios::out 表示用二进制的方式写文件
C.不写打开方式,默认以输入+输出+文本的方式打开(File>>p 则读到的是ascii码)
4. 二进制写入
File.write()
三, 读文件(类比,极为相似)今天晚上困了,先到此为止吧
-------------------------------------12月2日-------------------------完成了数据库大作业————开心!!-----
继续研究读文件,这里只记录一些关键点
1.指的是读取文件中的数据到程序中来,比如fin>>b[i],表示把打开的文件中的数据存到b[i]中,
2.不要忘记fin.close();--------------写open 就写close!!
3.读取的时候是按照文件中的格式去读取的(理解的不是那么到位)
4.二进制读---fin.get();
以下为一些杂碎的知识点的复习
1.文件拓展名都是骗人的!!它只决定用什么软件or什么解读方式打开你的文件,而文件的内容是你自己写进去的,是不变的!(一堆二进制数罢了)
2.fin.eof() ------返回一个bool值--------结束时返回 true ,否则返回false
有坑人点--------恰恰结束时不会返回true ,只有再读一次,失败了才会返回true ------还没遇到过,可暂且不深究
3.fout.write(首地址(一定是char*-------但是指针本身是互通的,所以可以直接强转成char*),长度(字节数))-----------注意记录游标的位置(才知道读到哪了or写到哪了)
补充-各种东西的字节数-自己搜来看吧+复习字节,比特 bit byte 等等的区别与联系