2013-04-18 2 views
0

저는 Comp Sci에 소개하는 Comp Sci 학생입니다. 지금 우리는 java를 사용하는 텍스트 기반 지뢰 찾기 게임 인 올해 프로젝트를 끝내고 있습니다. 첫 번째 부분에 대해서는 5x5 지뢰 찾기 보드를 2 차원 문자 배열로 표현하고 수동으로 폭탄 위치를 추가 한 다음 인접 폭탄을 나타내는 숫자를 업데이트한다고 가정합니다. 그러면 보드의 두 번째 표현을 만듭니다 세포가 드러났는지 여부.2D Char 배열 지뢰 찾기 게임 루프

인쇄 보드 (숯불 [] [] 보드, 부울 [] [] 공개됩니다) : 텍스트 형태의 화면하기 위해 지뢰 찾기 보드를 인쇄

은 그 후 우리는 다음과 같은 방법을 작성해야합니다. 프린트 된 보드는 이미 노출 된 세포를 반영해야합니다.

셀 표시 (int 행, int col, 부울 [] [] 게임 보드, char [] [] 응답 보드) : 셀을 공개 할 때 상태 배열을 적절하게 수정하면서 공개 방법 결정 지뢰밭 규칙에 따라 주변 빈 공간.

그런 다음 플레이어가 이겼는지 또는 잃어버린 지 확인하기 위해이 두 가지 방법을 통합 한 기본 게임 루프를 작성해야합니다.

난 이미 인쇄판과 공개 셀 방식을 사용 했으므로 테스트하기 위해 게임 보드와 게임 루프를 만들어야합니다.

java.lang 외부에서 클래스 또는 모듈을 사용하는 것은 소리가 아닙니다 (라이브러리를 가져 오지 마십시오).
공공 정적 무효 메인 (문자열 []에 args) {

char[][]answerboard= {{'B', '1', '0', '1', 'B'}, 
         {'1', '1', '1', '2', '1'}, 
         {'0', '1', 'B', '2', '1'}, 
         {'1', '1', '1', '2', 'B'}, 
         {'B', '1', '0', '1', '1'}}; 
// Initialized answer board: This is the board that shows what is inside each cell. I need to create a second 2d array representation that shows which cells have been revealed. 
int row , col ; 
for (row = 0; row < answerboard.length; row++){ 
    for (col = 0; col < answerboard[1].length; col++) 
    System.out.print(answerboard[row][col]); 
    System.out.println(); 

    } 


} 
    public static void printBoard(char[][] board, boolean[][] isRevealed) 
    { 
     for(int i=0; i < board.length; i++) 
     { 
       for(int j=0; j<=board[0].length; j++) 
       { 
         if(isRevealed[i][j]=true) 
         System.out.print(board[i][j]+" ");//prints hidden char 
         else 
         if(isRevealed[i][j]= false) 
         System.out.print("- "); 
       } 
       System.out.println(" "); 
     } 
} 

    public static void revealCell(int row, int col, boolean[][] gameboard, char[][]answersboard) { 
    System.out.println(row + " " + col); 
    if(row < 0|| row >=answersboard.length ||col < 0|| col > answersboard[0].length){ 
     System.out.println("bad input"); 
     return; 
    } 

    if(answersboard[row][col] == 'B'){ 
     gameboard[row][col] = answersboard[row][col]; 
     return; 
    } 
    if(answersboard[row][col] == '1'||answersboard[row][col] == '2'){ 
     gameboard[row][col] = answersboard[row][col]; 
     return; 
    } 

    if(answersboard[row][col] == '0'){ 
     gameboard[row][col] = answersboard[row][col]; 
     for(int i = row-1; i <= row +1; i++){ 
      for(int j = col-1; j<= col +1;j++){ 
       revealCell(i,j, gameboard, answersboard); 
      } 
     } 
    } 
} 

답변

0

별로 하나 물었다 같은 질문은 ... 그래 보이지 않는 무엇인지 :

여기 내 코드입니다.

그냥 제안하면 MineSweeperBoard 클래스를 만들고이 클래스를 모두 비공개 공용 메서드로 유지하는 것이 좋습니다. 선생님들은 항상 1 학년 학생들이 Object Orients 프로그래밍을 배우고 문제를 해결할 수 있기를 바랍니다.

편집. 또한 게임 보드 상태에서 작동 할 것으로 예상되는 메소드에는 System.out.println(...) 항목이 없어야합니다. 이것은 부작용을 일으키고 방법 아이디어 당 하나의 작업을 해칩니다. 대신에이 메소드를 호출하기 전에 입력이 적절한 지 여부를 결정하는 입력/출력을 처리하는 메소드를 가지고 있습니다. 누군가가 메소드에 잘못된 데이터를 제공하면 이상적으로이 메소드는 IllegalArgumentExceptions을 던지 겠지만 아직까지는 해당 메소드를 처리하지 않았을 수 있습니다.

나머지 프로젝트 및 시험에는 행운을 보냅니다 !!

+0

내가하려는 것은 내 첫 번째 보드, 두 번째 공개 된 표현 및 프린트 보드 및 공개 셀 방법을 사용자가 공개하고 확인할 셀의 좌표를 묻는 게임 루프에 통합하는 것입니다. 플레이어가 승리했는지 또는 잃어 버렸는 지 확인하십시오. 그러나 나는 그것을 알아낼 수 없다. – user2292794