2017-09-28 3 views
0

2 차원 어레이에서 미로 게임을 만들고 있지만 벽/문/등을 만드는 법을 이해할 수 없습니다. 나는 'W'를 누르면 다음 위치가 벽이 아닌 경우에만 캐릭터의 위치가 변경 될 것이라고 생각합니다. 어떻게 확인합니까? 다음은지도와 운동에 대한 내 코드입니다 :다음 위치가 특정 객체 인 경우 어떻게 2 차원 어레이를 체크인합니까?

const int ROWS = 16, COLUMNS = 24; 
     Blocks[,] map = new Blocks[COLUMNS, ROWS]; 
     int playerRow = 3, playerColumn = 11; 
     Character gubbe = new Character(); 


     // Create map 
     for (int row = 0; row < ROWS; row++) 
     { 
      for (int column = 0; column < COLUMNS; column++) 
      { 

       if (row == 0 || row == ROWS - 1 || column == 0 || column == COLUMNS - 1) 
        map[column, row] = new Wall(); 

       else 
        map[column, row] = new EmptySpace(); 

      } 
     } 

     while (true) // TODO: add a goal that ends the loop 
     { 
      // Draw map 
      string buffer = ""; 
      for (int row = 0; row < ROWS; row++) 
      { 
       string line = ""; 
       for (int column = 0; column < COLUMNS; column++) 
       { 
        if (column == playerColumn && row == playerRow) 
         line += gubbe.printBlock(); 

        else 
         line += map[column, row].printBlock(); 
       } 
       //Console.WriteLine(line); 
       buffer += line + "\n"; 
      } 
      Console.CursorLeft = 0; 
      Console.CursorTop = 0; 
      Console.Write(buffer); 

      var key = Console.ReadKey(); 
      if (key.Key == ConsoleKey.W) 
       playerRow--; 
      else if (key.Key == ConsoleKey.A) 
       playerColumn--; 
      else if (key.Key == ConsoleKey.S) 
       playerRow++; 
      else if (key.Key == ConsoleKey.D) 
       playerColumn++; 
     }//while 
    }//Map 

답변

-2
당신은 당신이 내 솔루션을 이해할 수없는 경우 https://msdn.microsoft.com/en-us/library/0y7dd8cx(v=vs.100).aspx

말해주십시오 링크를 방문 할 수 있습니다 자세한 내용은 날카로운 C에서 instanceof 연산자 사용할 수 있습니다

당신은 두 가지 방법으로 유형을 확인할 수 있습니다
+0

. jscript와 C#은 어떻게 관련이 있습니까? – Sinatr

+0

이 솔루션을 고려하십시오. https://stackoverflow.com/questions/11634079/how-can-i-get-the-data-type-of-a-variable-in-c –

+0

https://stackoverflow.com/ 질문/11634079/c-variable-in-a-c-of-a-c-variable-in-c –

2

:

1 옵션 :

,
if (map[column, row] is Wall) 
{ 
    // Do something 
} 

2 옵션 : 나는 당신의 솔루션을 이해할 수 없다

if (map[column, row].GetType() == typeof(Wall)) 
{ 
    // Do something 
} 
+0

런타임시 다음 블록의 유형을 확인한 다음 조치를 취해야하므로 @Alex가 올바르게 응답합니다. acc. –

+0

나중에 문이있는지도를 객실에 추가하고 싶습니다. 그래서지도가 빈 사각형 일 때 어떻게 구현합니까? – anek05

+0

지금은 다른 질문처럼 들리지만 ... 죄송 합니다만 게임 작성 방법을 알려 드릴 수 없습니다. –