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

时间:2016-12-15 20:17:56

标签: c++ arrays loops

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

我打算创建一个小型游戏,其中玩家在10x10的tileset上产生(1,1)。此玩家必须使用WASD移动到在tileset中随机生成的怪物。随着每个玩家的移动,怪物以随机方向移动一个空间。当玩家移动到怪物身上时,该怪物就会被击败。

到目前为止

代码:

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数组中的每个方块>然后使用for循环来使用此类初始化x&每个方格的y值,但我不确定如何做到这一点。

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

非常感谢您的帮助! 〜迪安。

1 个答案:

答案 0 :(得分:2)

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

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

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

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

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

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

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

你的主要方法可能会构造游戏对象(假设&#34; Square&#34;是它的名称),然后在游戏对象上调用一个方法,如&#34; simulatePlay()&#34;或&#34; makeMove(移动)&#34;。

在更复杂的游戏中,你可能会让SquareContents和Move从Square中分离出来(再次假设这是你游戏的名字)。