如何检查数组中的每个元素

How to check each element in array?

本文关键字:元素 数组 何检查 检查      更新时间:2023-10-16

我正试图从一个迷宫游戏的字符txt文件中分析放入数组中的每个元素。必须检查阵列,这样我们才能确定迷宫中的墙壁、玩家、鬼魂、钥匙和梯子、入口等。所以我需要检查某些字符(如#、P、K、D、G、E)。我不知道该怎么设置?

以下是获取Floor文件并将每个字符放置在名为tiles的数组中的函数。

const int ROWS = 20;
void Floor::Read (const char * filename)
{
size_t row = 0;
ifstream input(filename);
while (row < ROWS && input >> tiles[row++]);
}
void Game::readFloors()
{
m_floor[0].Read("FloorA.txt");
m_floor[1].Read("FloorB.txt");
m_floor[2].Read("FloorC.txt");
}

下面是每一个字符的一个楼层的样子:

##############################
#      K                     #
#  ############## ### ###  # #
#      K    #   # #C# #K#  # #
# ######### # A # # # # #  # #
#      K    #   #          # #
# ############D#####D####### #
#                            #
#   C         G        C     #
#                            #
# ######D##############D#### #
#      #  C         #K#    # #
# #### ######## #   # #      #
# #K   #      # ### # # #### #
# # ## # #### #   # # #    # #
E # ## # #    ### # # #### # #
# #    # #K           D    # #
# #D#### ################### #
#                    K       #
##############################

带有两个类的头文件,用于上面的函数:

class Floor {
char tiles[20][30]; 
void printToScreen();
public:
Floor();
void Read (const char * filename);
};
class Game {
private:
Floor m_floor [3];
vector<Character> characters; 
public:
void readFloors();
};

寻找类似的问题,但大多数都没有分析很多不同的选择。谢谢你的帮助!

我已经组装了一个简单的阅读器,它将地图(基于您的示例)放入一个您可以处理的矩阵中。

#include <iostream>
#include <fstream>
#include <string>
std::ifstream f("/path/../txt.txt");
std::string str;
int cols = 0;
int rows = 0;
char mat[100][100];
int main(){
    int line = 0;
    while(std::getline(f, str)){
        const char * chars = str.c_str();
        for(int i=0; i<str.length(); i++){
            mat[line][i] = chars[i];
        }
        cols = str.length();
        line++;
        rows++;
    }
    for(int i=0; i<line; i++){
        for(int j=0; j<rows; j++){
            std::cout<<mat[i][j]<<" ";
        }
        std::cout<<std::endl;
    }
    std::cout<<"Cols: "<<cols<<" Rows: "<<rows;
    return 0;
}

这样,只需进行简单的字符比较,就可以通过两点坐标获得每个玩家、墙块等的位置。

您可以在for循环中使用for循环,一个用于检查数组中的列,另一个用于查看行。你只需要检查每个元素是否等于k、c、g等。