gpt4 book ai didi

c - 文字冒险游戏--随机连接房间-C

转载 作者:行者123 更新时间:2023-11-30 17:08:57 27 4
gpt4 key购买 nike

我正在尝试创建一个有 7 个房间的文本冒险游戏,信息保存在文件中。这个问题类似于Connect Rooms Randomly in Adventure Game然而答案并没有完全帮助我。我以与该OP不同的方式执行我的程序,所以我不确定如何使用该答案来帮助我。

这个想法是你有 7 个房间,分别命名为 A、B、C、D、E、F 和 G。创建房间后,我需要将它们随机地相互连接。每个房间需要 3 到 6 个随机连接。如果房间 A 连接到 B、C 和 D,则每个房间都应连接到 A。然后将此信息保存到稍后读取的文件中。

到目前为止,我本节的代码是:

    char *connections[7];
int j = 0;
int randomRoom;
for (j = 0; j <= randConnections; j++) {
randomRoom = rand() % 10;
if (randomRoom == randName) {
randomRoom = rand() % 10;
} else {
connections[j] = names[randomRoom];
}

randConnections 是一个 3 到 6 之间的随机整数,在代码前面定义。名称是一个字符串数组,其中包含房间的名称,也在我的程序的前面定义。

我对 C 还很陌生(我对 Java 很有经验),所以我不明白。我应该提到,这一切都在一个函数中定义为:

    void createRooms(FILE *fp)

我知道可能有更有效的方法来做到这一点,但此时我只是想让代码正常工作并稍后处理效率问题。

我已经进行了大量的谷歌搜索,现在老实说我正在用头撞墙。任何帮助将不胜感激。如果我应该发布更多代码或任何其他信息,请告诉我。

最佳答案

C 风格的字符串可能会有点令人困惑。纯 C 中的“字符串”是一个字符数组。 C 中的数组与指针密切相关。事实上,而不是定义

char myCString[6] = "hello";

你可以定义

char * myCString = "hello";

事实上,在第一种情况下,单独使用 myCString 只会返回指向第一个元素的指针。 [] 运算符只是一个方便的解引用和增量运算符。因此 &(myCString+1) 变为 myCString[1]

长话短说,C 中的“字符串”数组实际上是一个 char* 数组 - 指向字符数组的第一个元素的指针

您试图将其分配给单个字符,这没有逻辑意义。如果你的意思是连接真正是字符串,请像 kcraigie 所说的那样。

这是我找到的一些备份,恐怕还有更多细微差别,而且我不是专家,但这就是要点 - https://en.wikibooks.org/wiki/C_Programming/Pointers_and_arrays#Pointers_and_Arrays

这对于 java 来说可能看起来很荒谬——那是 C 语言。 C++ 的标准库包含一个您所熟悉的字符串构造。它是一个包装“原始”C 数组并控制对其访问的类,并像 Java 和 C# 字符串一样管理它。现代 C++ 最佳实践尝试远离原始数组。您还会注意到,没有什么可以阻止您调用 MyCString[4000],它只会从不知名的地方抓取一 block 内存,天知道会做什么。 C 中的原始数组没有边界检查。要小心!

关于c - 文字冒险游戏--随机连接房间-C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33459226/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com