为游戏创建用户(读取和解析CSV文件)
Creating users for game(reading and parsing CSV file)
所以我正在为课堂开发一个行星与僵尸类型的模拟游戏,并将Qt Creator GUI与C++一起使用。我们需要做的一件事是,在启动时,游戏窗口将尝试从预先指定的主目录中读取两个文件:"pvz_levels.csv"和"pvz_players.csv"。
levels文件的形式是"level:sequence:rows:start:interval:decrement",而"sequence"本身是一个逗号分隔的列表,形式为(1,1,1,2,3,1,3,1,3,3),这是僵尸出现的顺序。如果目录中不存在此文件,程序将退出并显示错误。
玩家文件的形式为"timestamp:player:level";分别是上次游戏的时间、玩家姓名和上次尝试的级别。如果此文件不存在,程序将以静默方式跳过此操作并以新播放器身份启动。如果它确实存在,则必须读取和解析该文件,然后在程序中用于计算等。
因此,我在阅读和解析这些文件时遇到了很多麻烦。此外,我们需要将用户数据保存在这些文件中,并且在下次启动时,用户应该可以通过从下拉列表中选择各自的用户来选择继续他们的游戏。他们还应该能够删除任何用户。
我精通 c++ 基础知识,但这是我的第一次 GUI 体验,我的教授没有详细介绍它,所以我需要这个项目的相当多的帮助。
感谢任何能够提供帮助的人!
代码查找到可用的"csv 解析器",该解析器代表"逗号分隔变量"。您需要几乎相同,除了使用分号而不是逗号。似乎通过更改一个字符,您可以解析。
你也许可以找到一个 csv 解析器,它接受要用作解析字符的字符(我以前见过它们)。
如果您希望我可以找到适合您使用的csv解析器,但是现在您知道要查找的"csv解析器c ++代码",那么它应该是一个快速的Google。
此外,大多数 csv 解析器希望字符串括在双引号 (") 中,但这很容易修改。
一些提示:
只需使用 QFile
打开文件即可。设置QTextStream
并使用QTextStream::readLine()
将所有行读取到 QStringList 中。现在使用列表中保存的 QString 上的QString::split()
来获取此行中存储的单个值。从那里,您可以轻松地使用QString::to*
函数将值转换为所需的类型。
为了保存,只需逆转该过程。使用:QString("%1,%2,%3").arg(timestamp).arg(player).arg(level)
设置一行并将其放入您的QTextStream
。如果流连接到文件,则会将其写入文件。
我已经成功地实现了这样的 CSV 读数:
std::unique_ptr<QFile> csv_worker(new QFile(resource_path));
QTextStream input_csv(csv_worker.get());
QList<QStringList> data
while(!input_csv.atEnd())
{
//removes the carriage return symbol and splits the elements
QStringList line = input_csv.readLine().remove(QRegExp("r")).split(","); //replace here with :
data << line;
}
csv_worker->close();
它读取完整的文件,每一行生成一个QStringList。对于 QStringList 中的第二个元素,假设 (1,1,1,2,3,1,3,3,3},您必须在子 QStringList 中另外拆分它,然后用如下所示的内容删除括号:
QStringList sequence = data[i][1].remove(QRegExp("{")).remove(QRegExp("}")).split(",");
- 正在将csv文件读取为双精度矢量
- 如何选择在 csv 文件中输出的位置
- 有没有办法在不使用 getline() 的情况下从.csv文件中读取?
- 无法读取C++中的 CSV 文件
- 流:CSV 文件中的换行符
- 如何正确格式化csv文件?
- 正在分析CSV文件-C++
- 如何获取组件和搜索 CSV 文件
- C++ 中的 CSV 文件管理(特别是设置标头和每个标头将分别具有的值)
- 无法逐行读取.csv文件
- 非常快速地阅读 CSV 文件
- 该程序将.csv文件中的一系列单词放入数组中,然后随机生成句子.但它不起作用
- CSV文件之间的差异,使用getline()产生不同的结果
- 将 CSV 文件中的双倍值C++到矢量中
- C++ 将 CSV 文件的列写入向量
- 使用getline读取.csv文件时出现问题
- CSV文件未从缓冲区获取数据
- 错误的值是使用c++从CSV文件数据写入数组
- 将csv文件加载到MySQL C++中
- 读取C++中的大型CSV文件(~4GB)