如何使用 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 值,但我不确定具体怎么做。
另外,我执行这项任务的方式是否完全错误?这是我自己设定的一个很酷的小挑战,我认为这是解决它的最佳方法,但也许我过于复杂了。
非常感谢您的帮助! 〜院长。
【问题讨论】:
一些问题供您思考:板子是否包含Square
s 或整数?您发布的代码显示了一个 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 循环为二维数组中的元素设置数据值?的主要内容,如果未能解决你的问题,请参考以下文章