c++ - 如何在 C++ 中表达一系列数组位置?

标签 c++ arrays

我该如何表达:

    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

等等。

如果不是很明显,我正在尝试打印一个游戏 map ,您可以通过将其移动到“图 block ”上来控制玩家(如果您愿意,每个图 block 等于 10x10 的数组位置或字符空间)但我不能似乎找不到任何方法来“选择”数组中的一系列位置,而不仅仅是两个位置。

如果我说 [0][9] 作为玩家示例,它会在那个位置打印玩家角色,但看到我正在打印 char 类型。它只会等于'!'例如。例如,我打算打印一个正方形的 '!',它会占用 10x10 个字符。

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

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

最佳答案

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

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

不过,看起来您最终将“重绘”整个矩形区域,并且使光标在(我假设是控制台/命令行)窗口中跳来跳去并非易事。所以我建议将您的逻辑从面向对象的“打印 this *此处*”更改为面向位置的“当我们这里时,打印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++ - 如何在 C++ 中表达一系列数组位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22621022/

相关文章:

c++ While循环终止与功能

javascript - 如何循环数组并添加 jQuery 单击事件?

c - 我的 C 语法的左递归错误

arrays - 将2个数组放入perl中的散列中

c++ - 如何将 QBytearray BCD 转换为十进制 QString 表示形式?

c++ - 来自STL的队列

c++ - 在 C++ 中,如何将当前函数的所有参数传递给另一个函数?

javascript - 减法运算符如何触发数组到数字的转换?

Java彩票使用数组

c++ - 使用 constexpr 或模板元编程简化较长的展开循环表达式