2014-04-06 4 views
-1

자바에 대한 도움이 필요합니다. 할당은 다음과 같습니다.사이에 색상을 캡처 하시겠습니까?

게임 만들기 두 개의 재생 피스가 있으며, 흑백 피스가 있습니다. 조각 또는 조각 줄이 왼쪽 및 오른쪽 모두 또는 앞뒤 모두에서 상대방에 의해 둘러싸 일 때 캡처되고 그 색이 포위 된 조각의 색으로 변경됩니다. 차례가되면, 상대편의 조각 중 적어도 하나를 포착해야합니다. 사용자가 더 이상 유효한 동작을하지 않으면 게임이 종료됩니다. 그리고 우승자는 더 많은 조각을 획득 한 플레이어에게 할당됩니다.

보드는 6x6이며 실제 게임이 아닌 단어로 결과를 표시하면됩니다. 배열을 사용하여 보드를 만드는 방법 만 알고 있습니다. 나는 실제 게임을 코딩하는 법을 모른다. 도움을 많이 주시면 감사하겠습니다 !! 나는 "if"문장과 루프를 많이 사용해야한다는 것을 알고 있지만 어떻게해야하는지 모른다. 이것은 내가 지금까지 가지고있는 것입니다 :

boardA[0] = "A1"; 
boardA[1] = "A2"; 
boardA[2] = "A3"; 
boardA[3] = "A4"; 
boardA[4] = "A5"; 
boardA[5] = "A6"; 

boardB[0] = "B1"; 
boardB[1] = "B2"; 
boardB[2] = "B3"; 
boardB[3] = "B4"; 
boardB[4] = "B5"; 
boardB[5] = "B6"; 

boardC[0] = "C1"; 
boardC[1] = "C2"; 
boardC[2] = "C3"; 
boardC[3] = "C4"; 
boardC[4] = "C5"; 
boardC[5] = "C6"; 

boardD[0] = "D1"; 
boardD[1] = "D2"; 
boardD[2] = "D3"; 
boardD[3] = "D4"; 
boardD[4] = "D5"; 
boardD[5] = "D6"; 

boardE[0] = "E1"; 
boardE[1] = "E2"; 
boardE[2] = "E3"; 
boardE[3] = "E4"; 
boardE[4] = "E5"; 
boardE[5] = "E6"; 

boardF[0] = "F1"; 
boardF[1] = "F2"; 
boardF[2] = "F3"; 
boardF[3] = "F4"; 
boardF[4] = "F5"; 
boardF[5] = "F6"; 
Scanner keyboard = new Scanner(System.in); 
System.out.println("This is how the board looks like:" + "\n" + Arrays.toString(boardA) + 
        "\n" + Arrays.toString(boardB)+ "\n" + Arrays.toString(boardC) 
        +"\n"+ Arrays.toString(boardD) +"\n"+Arrays.toString(boardE) 
        + "\n"+Arrays.toString(boardF)); 
System.out.println("The board has 6 blocks, starting with 4 people in the middle, 2 black and 2 white facing each other."); 
boardC[2] = "white"; 
boardC[3] = "black"; 
boardD[2] = "black"; 
boardD[3] = "white"; 
System.out.println("The board starts with: " + "\n" + Arrays.toString(boardA) + 
        "\n" + Arrays.toString(boardB)+ "\n" + Arrays.toString(boardC) 
        +"\n"+ Arrays.toString(boardD) +"\n"+Arrays.toString(boardE) 
        + "\n"+Arrays.toString(boardF)); 
System.out.println("You are white. Where do you want to move?"); 
String input = keyboard.nextLine(); 
+0

그다지 많지 않으며 여기에 제시된 것처럼 컴파일되지 않습니다. 배열을 적어 놓는 것 이외에 정확히 무엇을 시도 했습니까? 당신의 구체적인 문제는 어디에 있습니까? 우리는 당신을 위해 당신의 임무를 수행하지 않을 것이지만, 당신이 "이 임무를 수행하는 방법"보다 더 정확한 질문을한다면 당신을 도울 수 있습니다. 게임이 끝나고 각 턴에서 허용되는 이동 및 그 결과에 대한 조건을 가진 루프에 대해 생각해보십시오. 그것에 관한 코드를 작성한 다음 우리와 공유하면 문제에 대한 더 나은 아이디어를 얻을 수 있습니다. 나는 당신의 코스에서 그것을 해결하는 방법에 대한 정보를 가지고있을 것입니다. –

+0

나는 정말로 모른다. 교수님은 우리에게 방향을 알려주지 않고 그냥 던지 셨습니다. 마지막으로 우리가 한 일은 단지 객체를 만들고 do-while 루프를 사용하는 것입니다. 그리고 저는 그 프로그램이 컬러 스위치에 둘러싸여 있는지 어떻게 알 수 있는지 묻고 싶습니다. if-else 문을 사용하여 가능한 모든 동작을 기록합니까 아니면 더 나은 방법이 있습니까? – Ccyan

답변

1

당신은 분명히 많은 것을 요구하고 있습니다. 우리는 당신을 위해 임무를 완수 할 수 없습니다!

나는 단지 약간의 물건을 작성하는 것으로 시작한다고 믿는다., 조금씩. 예를 들어 , 당신은 할 수 :

  1. 은 ... 다음
  2. 다음 다른 몇 가지 패턴을 참조하고 일반적인하게 AN, 처음에는 하나의 특정 경우에 아마 작동하도록

그래도 시작하겠습니다.
내가 사용자와의 상호 작용이 그 같이해야한다고 생각 :

boolean gameEnded = false; 
boolean isWhitesTurn = true; 
while(!gameEnded) { 
    System.out.println("You are" + (isWhitesTurn)?"white":"black" + ". Where do you want to move?"); 
    final String input = keyboard.nextLine(); 

    // process the input here 

    isWhitesTurn = !isWhitesTurn; // every time, you toggle between the players. 
} 
System.out.println("Game over."); 

이제, 우리는 먼저 할 수있는 입력을 처리하기 위해 그 사용자 것이다 입력 유효한 String을 가정합니다. 즉, 실제 보드 케이스의 좌표입니다. 나중에을 확인하고 잘못된 입력을 처리해야합니다. 예 :

  1. StringObject 일부 번역 : 여기

    은 당신이 imput으로해야 할 것입니다 : "E5"boardE[4]을 의미합니다. 나는 당신이 getValueAt(final String coordinates)setValueAt(final String coordinates)과 같은 몇 가지 방법을 만들 수 있다고 생각합니다.
  2. 이미 해당 좌표에 플레이어가 있는지 확인하십시오 (getValueAt() 사용).

    2.1있는 경우 새로운 입력을 요청하십시오. 2.2 없으면 플레이어의 색을 오른쪽 좌표 (setValueAt() 사용)에 놓은 다음 둘러싸인 "플레이어"의 색을 변경하는 알고리즘을 실행합니다. 내가 무슨 뜻인지 알지.

  3. 게임을 중지하는 조건이 있어야합니다 (예 : : 보드에 더 이상 빈칸이없는 경우). 확인해 봐. 게임이 종료하도록되어 있다면, 나는 그것을 해요 이후, I, 즉 ... 매트릭스 실제 보드처럼 더보고 당신의 보드을 제안 gameEnded = true;

설정 . 이런 식으로 인쇄 한 후

for (int i = 0; i < BOARD_HEIGHT; i++) { 
    final String letter = new Character((char) ('A' + i)).toString(); 
    for (int j = 0; j < BOARD_WIDTH; j++) { 
     this.board[i][j] = letter + String.valueOf(j); 
    } 
} 

: 나는 모든 희망

for (int i = 0; i < BOARD_HEIGHT; i++) { 
    for (int j = 0; j < BOARD_WIDTH; j++) { 
     System.out.print(this.board[i][j] + "\t"); 
    } 

    System.out.println(); 
} 

private static final int BOARD_WIDTH = 6; 
private static final int BOARD_HEIGHT = 6; 
final String[][] board = new String[BOARD_WIDTH][BOARD_HEIGHT]; 

과 같이 초기화 :

예를 들어, 나는 이것을 사용합니다) 제대로 시작할 수 있습니다.)

+0

도움 주셔서 감사합니다. 그리고 나는 너희들에게 나에게 임무를 맡길 것을 요구하지 않았다. 나는 그것을 깨닫지 못해서 너무 유감 스럽다 !! 방금 두 개의 조각이 둘러싸여 있다면 둘러싸인 조각이 색상을 전환해야하는지 프로그램이 알 수 있도록 어떻게 코딩 할 수 있습니까? 나는 당신이 E3으로 가고 D2가 하얗게 될 것 같이 모든 가능한 움직임을 적어 놓을 생각을했습니다. 그렇지 않으면 C3로 간 다음 C2가 하얗게됩니다. 하지만 그렇게 오래 걸리지 않을까요? 그렇게하는 더 빠른 방법이 있습니까? – Ccyan

+0

괜찮습니다, 당신이 우리에게 당신에게 할당 할 것을 요구하지 않았다는 것을 압니다 :) 체크하기 위해서 보드의 각 라인과 컬럼을 반복하고 '흑백, 화이트, 화이트, 화이트와 같은 시퀀스가 ​​있는지 확인해야합니다 , ... 검은 색 어디서나. 그렇다면이 모든 흰색을 검은 색으로 바꿉니다. 진지하게, 내가 제안한 것을 해보고 나는 당신이 좀 더 많은 코드를 보여 주면 기꺼이 좀 도와 줄 것이다.) – ccjmne

관련 문제