2014-04-06 66 views
-1

我需要幫助我爲java分配任務。任務是:捕獲兩者之間的顏色?

創建一個遊戲,其中: 有兩個棋子,黑色和白色的。 當一塊或一行棋子在其左右兩側或前後都被對手包圍時,據說它被捕獲,並且其顏色會變爲包圍它的棋子的顏色。輪到你時,你必須至少抓住一個對手的棋子。 當用戶沒有更有效的移動時,遊戲結束。 獲勝者被分配給獲得更多作品的玩家。

董事會是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. 那麼其他
  3. 然後看到一些模式,使它通用...

雖然我會幫你開始。
我認爲,與用戶的交互看起來應該:現在

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. 把這一String一些Object例如"E5"應該表示boardE[4]。我想你可以創建一些方法,如getValueAt(final String coordinates)setValueAt(final String coordinates)
  2. 檢查這些座標是否已有玩家(使用getValueAt())。

    2.1如果有,請要求新的輸入。 2.2如果不存在,請將玩家的顏色置於正確的座標上(使用setValueAt()),然後執行改變周圍「玩家」顏色的算法。你知道我的意思。

  3. 必須有某種停止遊戲的條件(,例如:板子上沒有更多的空殼)。覈實。如果遊戲應該結束,設置gameEnded = true;

由於我的話,我建議你看起來更像一個實際的電路板,這是...一個矩陣

舉例來說,我這樣做:

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

並初始化它像這樣:

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(); 
} 

我希望這一切會讓你開始正常;)

+0

感謝您的幫助。我並不是故意要求你們爲我完成任務,我很抱歉,我甚至沒有意識到這一點!我只是想問我該如何編碼,以便程序知道兩個部分是否被包圍,然後被包圍的部分必須切換顏色?我想寫下每一個可能的動作,比如如果你走E3,那麼D2變白,否則如果你走C3,那麼C2變白,等等。但那會花很長時間不是嗎?有沒有更快的方法來做到這一點? – Ccyan

+0

沒關係,我知道你沒有要求我們做你的任務:)爲了檢查,你必須遍歷你的董事會的每一行和列,並檢查是否有序列,如「黑色,白色,白色,白色,...黑色'任何地方。如果是這樣,用一些「黑色」來代替所有這些「白色」。說真的,試着按照我的建議去做,我敢肯定你應該能夠讓它工作:)如果你向我們展示更多的代碼,我會很樂意幫助你;) – ccjmne

相關問題