这是一款我刚刚开始开发的C++游戏,基于植物大战僵尸。假设用户请求了一个4* 10的网格,我在游戏开始时设置了这样的网格:
*-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*
| Q | | | | | | | | | BH |
| | | | | | | | | | |
*-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*
| Q | | | | | | | | | BH |
| | | | | | | | | | |
*-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*
| Q | | | | | | | | | BH |
| | | | | | | | | | |
*-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*
| Q | | | | | | | | | BH |
| | | | | | | | | | |
*-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*现在,我想添加一个新的僵尸'Z',比方说在位置2(如下面的BH所示),并将开始移动僵尸'Z‘每个转弯(向左一个)。
*-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*
| Q | | | | | | | | | BH |
| | | | | | | | | | |
*-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*
| Q | | | | | | | | | BH |
| | | | | | | | | | |
*-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*
| Q | | | | | | | | | BH |
| | | | | | | | | | Z |
*-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*
| Q | | | | | | | | | BH |
| | | | | | | | | | |
*-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*下面是我用"Q“和”BH“填充正方形的函数:
void Game::fill_square_with_Q_and_BH(int numrows){
room.resize(numrows);
for(int i = 0; i < numrows; i++){
room[i].resize(10);
}
//fill rows with Q
for(int i = 0; i < numrows; i++){
room[i][0].set_fill_square("Q ");
}
//fill rows with BH
for(int i = 0; i < numrows; i++){
room[i][9].set_fill_square(" BH");
}
}这就是我如何用以下函数构建我的2d网格:
void Game::innerlines(int tab){
for(int i = 0 ; i < tab; i ++){
cout << "|" << " ";
}
cout << "|" << endl;
for(int k = 0; k < tab ; k++){
cout << "*" << "------";
}
cout << "*" << endl;
}和另一个函数,如:
void Game::create_n_table()
{
cout << endl;
for(int k = 0; k < 10 ; k++){
cout << "*" << "------";
}
cout << "*" << endl;
for(int i = 0; i < 8; i++){
for(int l = 0; l < 10; l++){
//here I replace the " " with a vector<vector<Square>> room;
//so, instead below I have something like room[i][l].fill_square();
cout << "|" << " ";
}
cout << "|" << endl;
innerlines(10);
}我不知道如何处理这个问题,因为每个僵尸都会从我放置在方格上的不同植物受到不同的伤害。我知道如果将字符串"Z“插入到"BH”所在的2d向量中,它将被替换为"Z“字符串。另外,如果我想在“BH”所在的同一位置插入2个以上的僵尸,该怎么办?我怎么可能把它们都显示在同一个位置呢?它可能是一个在另一个下面吗?任何想法都将不胜感激!事先谢谢你。
发布于 2021-11-19 04:35:13
一种想法是用std::string的2D矢量代替char。
例如,当你想在位置2添加一个僵尸的时候,你可以这样写
vec[2][9]+="Z"; //or vec[2][9]+="\nZ"类似地,当您想要删除僵尸时,您可以使用std::string::erase。
https://stackoverflow.com/questions/70029870
复制相似问题