评估一个数组的问题,但将值写入另一个数组

时间:2016-03-24 19:14:01

标签: c arrays

我有一个简单的游戏项目,我正在努力学习/提高我的C知识。目前我有一个包含地形“地图”的数组,它还包含物品和敌人。这工作正常,但为了改善它,我试图有两个重叠的数组,所以我从来没有把项目放在地形上,而是在一个单独的项目数组中重叠地形。 我已经按照下面的方式接近了它;

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);
        }
    }
}

两个数组都已初始化,地形已映射,项目设置为空的图块。我想要做的是在if条件下,检查地形是否可以通过(走廊或地板),如果是,请放置一个胸部 - 但是将它放在项目数组中,而不是放在地形上。如果我在地形上放置一个胸部,但上面的代码工作,但似乎只是在项目数组中放置一个胸部。

有人可以帮我解决一下我出错的地方吗?或者建议对这种方法进行一些改进?非常感谢提前 - 我对C和编码很新,所以任何建议都很棒。

1 个答案:

答案 0 :(得分:1)

在添加胸部后你没有修改newxnewy(你没有击中其他人),所以你最终将胸部加到相同位置{{ 1}}次。

您可以通过在{else}之外移动itemCountnewx的分配来解决此问题(每次进入循环时更新它们)。你可能还想检查那个位置是否已经有胸部,以保证你得到那么多的胸部。