TankGame::~TankGame() { if (wall) delete wall; if (gameSpace) { for (int i = 0; i != high; i++) delete[] gameSpace[i]; delete[] gameSpace; } } void TankGame::reset(Tank& tank) { bool success = false; int t = 3; while (t && !success) { creatPlace++; if (creatPlace == 4) creatPlace = 1; // 诞生地点选择 switch (creatPlace) { case 1: tank.trans_direction(3); //朝下 if (tank.reset(gameSpace,1,1)) success = true; break; case 2: tank.trans_direction(3); if (tank.reset(gameSpace,wide / 2 - 2, 1)) success = true; break; case 3: tank.trans_direction(3); if (tank.reset(gameSpace,wide - 4, 1)) success = true; break; } if (!success) t--; } }
时间: 2024-04-02 10:37:26 浏览: 41
这段代码是坦克游戏的析构函数和一个 reset 函数。析构函数会在游戏结束时自动调用,用于释放动态分配的内存空间。reset 函数用于重置一辆坦克的位置,它会在敌方坦克被打败后调用。reset 函数会随机选择一处诞生地点,然后尝试把坦克放置在这个地点。如果这个地点已经被占据,那么就会选择下一个诞生地点。如果所有诞生地点都被占据,则该坦克无法诞生。
相关问题
TankGame::~TankGame() { if (wall) delete wall; if (gameSpace) { for (int i = 0; i != high; i++) delete[] gameSpace[i]; delete[] gameSpace; } }
这段代码是坦克游戏的析构函数。它会在游戏结束时自动调用,用于释放动态分配的内存空间。首先,它会判断是否有围墙对象存在,如果有就释放围墙对象的内存空间。然后,它会判断游戏空间状态表是否存在,如果存在,就对每一行分配的内存空间进行释放,最后再释放游戏空间状态表对象的内存空间。这个析构函数的作用是确保在游戏结束时,所有动态分配的内存空间都被释放掉,避免内存泄漏的问题。
Wall::Wall(GameSpace** & gs, int w, int h, string b) { wide = w; high = h; _x = 0; _y = 0; string brick = b.substr(0, 2); upLeftBrick = brick; upRightBrick = brick; bottomLeftBrick = brick; bottomRightBrick = brick; horizonBrick = brick; verticalBrick = brick; for (int i = 0; i != wide; i++) { gs[0][i] = GameSpace(-1,-1,true); gs[high-1][i] = GameSpace(-1,-1,true); } for (int i = 1; i != high - 1; i++) { gs[i][0] = GameSpace(-1,-1,true); gs[i][wide-1] = GameSpace(-1,-1,true); } }
这段代码是 C++ 语言编写的,实现了一个 Wall 类的构造函数。该类表示一个墙壁,可以在游戏场景中创建一个围墙。
构造函数的参数包括一个 GameSpace 类型的二维指针 gs,表示游戏场景的二维数组;一个整型变量 w 和 h,表示围墙的宽和高;以及一个字符串 b,表示墙砖的样式。
函数内部的代码逻辑包括:
1. 将参数 w 和 h 分别赋值给类的 wide 和 high 属性;
2. 初始化墙的左上、右上、左下、右下、水平和垂直部分的砖块样式,这里假设墙砖样式字符串的前两个字符表示墙砖的样式;
3. 遍历游戏场景的第 0 行和最后一行,将每个位置设置为一个有物体的 GameSpace 对象,表示该位置上有一个墙;
4. 遍历游戏场景的第 1 行到倒数第 2 行,将每行第 0 列和最后一列的位置设置为一个有物体的 GameSpace 对象,表示该位置上有一个墙;
5. 最终完成墙的初始化,可以在游戏场景中创建一个围墙。
阅读全文