首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建游戏用户(读取和解析CSV文件)

创建游戏用户(读取和解析CSV文件)
EN

Stack Overflow用户
提问于 2014-11-18 23:15:49
回答 3查看 191关注 0票数 0

因此,我正在研究一个行星大战僵尸类型的模拟类游戏,并使用和C++。我们需要做的一件事是,在启动时,游戏窗口将尝试从预先指定的主目录中读取两个文件:"pvz_levels.csv“和"pvz_players.csv”。

级别文件属于表单"level:sequence:rows:start:interval:decrement"" sequence "本身是表单(1,1,1,2,3,1,3,1,3,3)的逗号分隔列表,它是僵尸出现的顺序。如果目录中不存在此文件,则程序退出时会出现错误。

播放器文件的形式为"timestamp:player:level";,分别为上次播放的时间、玩家的姓名和最后的尝试级别。如果该文件不存在,程序将悄然跳过此操作,并作为新播放器启动。如果文件确实存在,则必须读取和解析该文件,然后将其用于计算程序等。

因此,我在读取和解析这些文件时遇到了很多困难。此外,我们需要将用户数据保存在这些文件中,并且在下一次启动时,用户应该可以通过从下拉列表中选择各自的用户来选择继续他们的游戏。他们还应该能够删除任何用户。

我非常精通c++的基本知识,但这是我的第一次GUI体验,我的教授没有详细介绍它,所以我需要对这个项目提供相当多的帮助。

感谢所有有能力帮忙的人!

EN

回答 3

Stack Overflow用户

发布于 2014-11-18 23:21:44

查找代码到一个可用的"csv解析器“,它代表”逗号分隔变量“。你需要的几乎是相同的,除了你用分号而不是逗号。看起来,通过更改一个字符,您的解析就可以为您完成。

您可能会找到一个csv解析器,它接受要用作解析字符的字符(我以前见过它们)。

如果您希望我能找到一个适合您使用的csv解析器,但是现在您已经知道您在寻找什么"csv解析器c++代码“了,这应该是一个快速的Google。

而且,大多数csv解析器都希望字符串被用双引号(")括起来,但这很容易修改。

票数 0
EN

Stack Overflow用户

发布于 2014-11-19 08:33:39

一些提示:

只需使用QFile打开文件即可。设置一个QTextStream并使用QTextStream::readLine()将所有行读入QStringList。现在,在列表中保存的QString::split()上使用QString来获取存储在这一行中的单个值。在这里,您可以很容易地使用QString::to*函数将值转换为所需的类型。

为了节省,就倒转程序吧。使用:QString("%1,%2,%3").arg(timestamp).arg(player).arg(level)设置一行,并将其放入QTextStream中。如果流连接到文件,这将写入文件。

票数 0
EN

Stack Overflow用户

发布于 2014-11-19 08:51:32

我已经成功地实现了这样的CSV阅读:

代码语言:javascript
复制
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,1,3,3}),您必须在一个子QStringList中进一步拆分它,然后去掉方括号,如下所示:

代码语言:javascript
复制
QStringList sequence = data[i][1].remove(QRegExp("{")).remove(QRegExp("}")).split(",");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27005994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档