我目前正试图解决我自己设定的有趣电脑游戏挑战,但我遇到了障碍。
我打算创建一个小型游戏,其中玩家在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值,但我不确定如何做到这一点。
另外,我是否完全错误地完成了这项任务?这是我自己设定的一个很酷的小挑战,我认为这是解决它的最好方法,但也许我过度复杂了。
非常感谢您的帮助! 〜迪安。
答案 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中分离出来(再次假设这是你游戏的名字)。