0

「部屋」オブジェクトの2次元配列の内容を、配列の内容の一種の印刷/表示として返そうとしています。

Room* m_map[10][10];

部屋の分散は次のように生成されます。

//Initialise array to NULL
for(int x=0;x<10;x++)
{
    for(int y=0;y<10;y++)
        m_map[x][y] = NULL;
}

for(int n=0; n<10; n++)
{       
    for(int ran=0; ran<3; ran++)
    {
        int r_n = rand() % 10 ;

        Room* r = new Room(n, "Normal", true, false, false, true);
        m_map[r_n][n] = r;
    }       

}

次に、NULL を参照して、これらの部屋がどこにあるかをユーザーに表示/印刷したいと思います。

たとえば、NULL 表示の場合は「#」、部屋の場合は「 」を残すことができます。

メソッドの宣言で返すべきビットがわかりません。

助けや正しい方向への指摘は本当にありがたいです

4

2 に答える 2

1

両方の次元をループします。x をループするたびに、列内のすべての部屋を表示し、その後にコンマを追加します。

行の終わりに達して次の行に移動するときは、改行を追加して、次の列を新しい行に出力します。

void MyClass::printMap(unsigned int numOfRows, unsigned int numOfCols)
{
  using std;
  for(unsigned int y = 0; y < numOfRows ; y++)
  {
    for(unsigned int x = 0; x < numOfCols ; x++)
    {
       if(m_map[y][x] == NULL)
          cout << # << ",";
       else
          cout << m_map[y][x].roomName() << ",";   
    }

    cout << endl;
  }
}
于 2013-03-01T19:21:17.843 に答える
1

配列を出力するメソッドをクラスに追加します。

void print() const 
{
  for(int n=0; n<10; ++n)
  {       
    for(int m=0; m<10; ++m)
    {
      std::cout << m_map[n][m] ? : "# " : ". ";
    }
    std::cout << "\n";
  }
}
于 2013-03-01T19:18:20.063 に答える