2014-04-07 3 views
0

그래서 각 배열 블록이 맵의 공간 인 격자 맵으로 2 차원 배열을 사용하고 있습니다. 그래서C++ 인쇄 배열

char Map[ROWS][COLS]={'x'}; 

ROWS = 10 및 COLS 내 주요 내가 초기화 한() 배열 '지도'에서

은 = 20

나중에 내가 가진 기능 PrintMap를 호출

void PrintMap(const char Map[ROWS][COLS], const bool showTreasure) 
{ 


for (int countr=0; countr<ROWS;countr++){ 
    for (int countc=0; countc<COLS;countc++){  //print map 
      if (!showTreasure){ 
        if (Map[countr][countc]!='T') 
          cout << Map[countr][countc]; 
        else 
          cout << '*'; 
      } else { 

        cout << Map[countr][countc]; 

      } 
    } 
cout << endl; 
} 



} 

그리드의 한 공간은 게임의 보물이나 목표가있는 곳입니다. PrintMap의 매개 변수에서 bool showTreasure는 'T'를지도에 표시할지 또는 숨기고 싶은지 여부입니다.

배열의 공백 중 하나는 'T'이고 나머지는 '*', 'X'또는 'P'입니다.

*는 아무 것도없는 곳입니다.

그래서 if 문은 : showTreasure가 false이면 ('T'를 숨기고 싶다는 의미) : 'T'가 아닐 경우 배열에있는 내용을 인쇄하거나 '*'를 인쇄하십시오 if 그것은 T입니다.

이제 내 문제는 내가 200 * s로 배열을 초기화했는데, 프로그램을 실행할 때 1 * 만 인쇄된다는 것입니다.

+0

당신이 말하는 초기화 코드를 보여 주면 도움이 될 것입니다. – OldProgrammer

답변

2

당신의 초기화가이 줄 경우 :

char Map[ROWS][COLS]={'x'}; 

그런 다음 행렬이 199 개 NULL 문자 다음에 하나의 x 초기화됩니다.

우수 설명은 https://stackoverflow.com/a/201116/29157을 참조하십시오. 더에 대한 std::fill()를 들어

는 팁 CantChooseUsernames에 대한 https://stackoverflow.com/a/3948314/29157

감사를 참조하십시오!

+0

오, 나는 그걸로 모든 문자를 채우기로되어 있다고 생각했습니다. 그러면 그 구문은 무엇입니까? – user3434233

+1

'#include ' – Brandon

+0

@CantChooseUsernames Nevermind에서'std :: fill (& Map [0] [0], Map [행] [Cols],'X ');를 사용하십시오. 링크에서 대답을 봅니다. – 0x499602D2