首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我有一个大小为n*10的2d网格(行由用户输入定义)。如何将多个字符串存储在2d向量中的同一位置?

我有一个大小为n*10的2d网格(行由用户输入定义)。如何将多个字符串存储在2d向量中的同一位置?
EN

Stack Overflow用户
提问于 2021-11-19 04:27:47
回答 1查看 49关注 0票数 1

这是一款我刚刚开始开发的C++游戏,基于植物大战僵尸。假设用户请求了一个4* 10的网格,我在游戏开始时设置了这样的网格:

代码语言:javascript
复制
*-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*
|  Q  |     |     |     |     |     |     |     |     | BH  |
|     |     |     |     |     |     |     |     |     |     |
*-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*
|  Q  |     |     |     |     |     |     |     |     | BH  |
|     |     |     |     |     |     |     |     |     |     |
*-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*
|  Q  |     |     |     |     |     |     |     |     | BH  |
|     |     |     |     |     |     |     |     |     |     |
*-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*
|  Q  |     |     |     |     |     |     |     |     | BH  |
|     |     |     |     |     |     |     |     |     |     |
*-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*

现在,我想添加一个新的僵尸'Z',比方说在位置2(如下面的BH所示),并将开始移动僵尸'Z‘每个转弯(向左一个)。

代码语言:javascript
复制
*-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*
|  Q  |     |     |     |     |     |     |     |     | BH  |
|     |     |     |     |     |     |     |     |     |     |
*-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*
|  Q  |     |     |     |     |     |     |     |     | BH  |
|     |     |     |     |     |     |     |     |     |     |
*-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*
|  Q  |     |     |     |     |     |     |     |     | BH  |
|     |     |     |     |     |     |     |     |     |  Z  |
*-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*
|  Q  |     |     |     |     |     |     |     |     | BH  |
|     |     |     |     |     |     |     |     |     |     |
*-----*-----*-----*-----*-----*-----*-----*-----*-----*-----*

下面是我用"Q“和”BH“填充正方形的函数:

代码语言:javascript
复制
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网格:

代码语言:javascript
复制
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;
}

和另一个函数,如:

代码语言:javascript
复制
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个以上的僵尸,该怎么办?我怎么可能把它们都显示在同一个位置呢?它可能是一个在另一个下面吗?任何想法都将不胜感激!事先谢谢你。

EN

回答 1

Stack Overflow用户

发布于 2021-11-19 04:35:13

一种想法是用std::string的2D矢量代替char

例如,当你想在位置2添加一个僵尸的时候,你可以这样写

代码语言:javascript
复制
vec[2][9]+="Z"; //or vec[2][9]+="\nZ"

类似地,当您想要删除僵尸时,您可以使用std::string::erase

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70029870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档