如何在c++中表示数组位置的范围

How do I express a range of array positions in c++?

本文关键字:数组 位置 范围 表示 c++      更新时间:2023-10-16

我该如何表达:

    From Array[0-9][0-9] print Player
    From Array[0-9][10-79] print blankSpace
    From Array[10-19[0-29] print blankSpace
    From Array[10-19][30-39] print tree1

等。

如果不是很明显,我试着打印一个游戏地图,你可以通过移动"瓷砖"来控制玩家(每个都等于10 × 10的数组位置或字符空间,如果你喜欢),但我似乎找不到任何方法来"选择"数组中的一系列位置,而不是仅仅两个位置。

如果我输入[0][9]作为播放器的例子,它会在那个位置打印播放器字符,但看到我打印的是char类型。它只等于'!’例如。我要打印一个正方形的"!"例如,它将占用10x10个字符。

然后使用我的逻辑,如果我可以"选择"一系列数组位置,我就可以使用Player()函数打印出一个预定义的字符数组,组成我的整体角色外观。空格和tree1等也是一样。

任何对我的失败逻辑的帮助/批评/讽刺的玩笑都将是感激的。

好吧,没有内置的方法可以像你描述的那样处理范围,但是有循环,非常接近:-)

for (int j = 0; j != 10; ++j) {
    for (int i = 0; i != 10; ++i) {
        PrintPlayerAt(j, i);
    }
}

看起来你最终要"重新绘制"整个矩形区域,虽然,使光标在(我假设是控制台/命令行)窗口中跳跃是非平凡的。因此,我建议将您的逻辑从面向对象的"打印this *here*"更改为面向位置的"当我们在here时,打印this"。一些伪代码来澄清:

for (int j = 0; j != 20; ++j) {
    for (int i = 0; i != 80; ++i) {
        if ((0 <= j && j < 10) && (0 <= i && i < 10)) {
            PrintPlayer();
        }
        else if ((10 <= j && j < 20) && (30 <= i && i < 40)) {
            PrintTree();
        }
        // ...
        else {
            PrintBlankSpace();
        }
    }
}

遗憾的是,在c++中没有内置的方法来做到这一点。不过,您可以使用嵌套循环遍历数组。