如何使用 for 循环为二维数组中的元素设置数据值?

Posted

技术标签:

【中文标题】如何使用 for 循环为二维数组中的元素设置数据值?【英文标题】:How do I use a for loop to set data values for elements in a 2D array? 【发布时间】:2016-12-15 20:17:56 【问题描述】:

我目前正在尝试解决我自己设定的一个有趣的电脑游戏挑战,但我遇到了障碍。

我打算创建一个小游戏,其中玩家在 10x10 的图块集的 (1, 1) 处生成。该玩家必须使用 WASD 移动到地图集中随机生成的怪物。玩家每移动一次,怪物就会向随机方向移动一个空间。当玩家移动到一个怪物身上时,那个怪物就被打败了。

到目前为止的代码:

using namespace std;

int tileset[10][10];                //Initializing 2D Array
int n = 10;                         //Initializing amount of turns to spawn enemy
int y = 0;                          //Initializing turn clock

class Square 
private:

public:

int squarePositionX, squarePositionY;
enum squareContents BOTH , PLAYER , MONSTER , NONE;

;

int main() 


我目前正在尝试创建一个类来表示 2D 数组“tileset”中的每个正方形,然后使用 for 循环来使用该类来初始化每个正方形的 x 和 y 值,但我不确定具体怎么做。

另外,我执行这项任务的方式是否完全错误?这是我自己设定的一个很酷的小挑战,我认为这是解决它的最佳方法,但也许我过于复杂了。

非常感谢您的帮助! 〜院长。

【问题讨论】:

一些问题供您思考:板子是否包含Squares 或整数?您发布的代码显示了一个 tileset 的整数。 在我的脑海中概念上的板是 10x10 块,每个块都有 x 坐标、y 坐标和内容的值。这就是我拼命想要融入的东西。什么是更合适的数组类型? 您希望您的电路板类型为Square,如Square board[10][10]; 要修改 4,7 处的正方形,您可以使用 board[4][7].squarePositionX = -27; 啊,我现在明白多了。仍然要掌握课程。那么(在这种情况下)创建一个“Square”类意味着我可以将其用作数据类型? 【参考方案1】:

我会先让游戏变得非常简单,然后再增加规则。也许井字游戏会是一个更好的起点?

根据您的游戏设计,我会尽量保持简单,并提供一些有用的建议,因为您是新手。

这是一个典型的矩阵(二维数组)初始化。起始值可以是行和列索引 i 和 j 的非常数函数。

for (int i = 0; i < 10; ++ i) 
    for (int j = 0; j < 10; ++ j) 
        tileset[i][j] = 0;
    

如果你的枚举是对tileset的可能值的枚举,那么二维数组应该是枚举类型而不是int。

上面的初始化可能在您的类的构造函数中完成,并且可能使用零以外的值作为您的初始化值。它可以将 i 和 j 的函数分配给开始游戏状态的位置。

此外,除非您希望从类外部直接访问您的成员变量,否则您可能希望它们位于私有部分而不是公共部分。

您的 main 方法可能会构造游戏对象(假设“Square”是它的名称),然后调用游戏对象上的方法,例如“simulatePlay()”或“makeMove(move)”。

在更复杂的游戏中,您可能会将 SquareContents 和 Move 与 Square 分开(再次假设这是您的游戏名称)。

【讨论】:

我建议使用 向新手展示良好的编码习惯。 :-) Thomas,我一直在代码分组中使用“仅在需要时才做”的敏捷哲学,但出于尊重,我遵循了您的建议,因为我知道我是持这种观点的少数。 :) Downvoter,也许你可以给新手一些恩典?我认为他们的努力可以作为初步尝试,如果没有更多的互动,他们可能会在我上面的回答中走得更远。 我正在努力将数组类型设置为枚举,收到一条错误消息,提示“需要一个标识符”和“需要一个声明”。 我对使用类非常陌生,因此对于严重缺乏知识深表歉意,非常感谢您的耐心等待。上面的 for 循环,这是放在 Square 类的公共封装中,还是我的 main 函数中?如何通过 for 循环将 x 和 y 值分配给每个数组正方形?

以上是关于如何使用 for 循环为二维数组中的元素设置数据值?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 for 循环将一维数组的值放入 C++ 中的二维数组

java使用foreach语句遍历二维数组如何实现?

如何实现两个数组之间值的替换

二维数组怎么赋值

数组(二维)

根据一维数组中的值更改二维numpy数组中的某些值而无需for循环