gpt4 book ai didi

c - 计算一个数组但将值写入另一个数组时出现问题

转载 作者:行者123 更新时间:2023-11-30 15:10:24 25 4
gpt4 key购买 nike

我正在开发一个简单的游戏项目来学习/提高我的 C 知识。目前我有一个数组,其中包含地形的“ map ”,它还包含元素和敌人。这工作正常,但为了改进它,我试图让两个重叠的数组,所以我从不将项目放在地形上,而是放在与地形重叠的单独项目数组中。我按照下面的方式处理它;

void items(int * terrainMap, int itemCount, int * itemMap){
int newx = getRand(0, xsize);
int newy = getRand(0, ysize);
int count = 0;
while (count < itemCount){
if (getCell(newx, newy, terrainMap) == corridoor|| getCell(newx, newy, terrainMap) == floor){
setCell(newx, newy, chest, itemMap);
count++;
}
else {
newx = getRand(0, xsize);
newy = getRand(0, ysize);
}
}
}

两个数组均已初始化,地形已绘制出来,项目已设置为空图 block 。我想做的是在 if 条件下,检查地形是否可以通过(走廊或地板),如果可以,则放置一个箱子 - 但将其放置在项目数组中,而不是地形上。如果我在地形上放置一个箱子,上面的代码就可以工作,但似乎只在项目数组中放置一个箱子。

有人可以帮我解决我哪里出错了吗?或者建议对此方法进行一些改进?提前非常感谢 - 我对 C 和编码非常陌生,所以任何建议都很好。

最佳答案

添加箱子后,您不会修改 newxnewy (您没有击中其他),因此您最终将箱子添加到相同的位置itemCount 次。

您可以通过将 newxnewy 的分配移到 else 之外来解决此问题(以便在每次进入循环时更新它们)。您可能还想检查该位置是否还没有箱子,以确保您获得足够多的箱子。

关于c - 计算一个数组但将值写入另一个数组时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36208265/

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