2012-07-29 52 views
-4

首先我是初學Java編程。我想爲學校項目提出申請。我決定做一個棋盤遊戲!非常直截了當。 ![董事會] [1] 這是董事會,有兩個球員(都是人類)。第一名球員(x)將在棋盤上的任何位置進行移動。有9個地方可供他使用。需要一個遊戲(類似於tic tac toe)算法。

遊戲的動機是將所有三個令牌放在一條對角線,水平線或垂直線上。

![獲勝條件] [2] 我想算法來檢查贏家以及如何在移動時選擇frm用戶的價值。 我瀏覽了很多tic tac toh算法,但我不知道他們出了什麼問題。 ![Posible moves] [3] 請幫忙!!

+6

這是你的哪個部分有問題?存儲數據?顯示用戶界面?確定贏家?還有別的嗎? – 2012-07-29 17:56:58

回答

3

既然是作業,我不想給你一個答案。另外,你對於你所遇到的問題並不十分清楚,所以我希望這適用於你遇到的問題。編輯您的答案,使其更清楚和/或留下評論,以便所有已回答的人都可以更有效地改進他們的答案以滿足您的需求。

您可以使用二維數組來存儲板。在Java中,用於創建一個3x3的二維陣列(例如,使用char類型,存儲XO)的語法如下:

char[][] board = new char[3][3]; 

在井字棋,有8個可能板狀態這表明,玩家在遊戲中獲勝(標有以下X移動):

(1)  (2)  (3)  (4)  (5)  (6)  (7)  (8) 
X X X # # # # # # X # # # X # # # X X # # # # X 
# # # X X X # # # X # # # X # # # X # X # # X # 
# # # # # # X X X X # # # X # # # X # # X X # # 

記住,數組索引從0開始(並上升到2,因爲我們有一個3x3的二維數組),這相當於以下一組條件:

(1): board[0][0] == board[0][1] && board[0][1] == board[0][2] 
(2): board[1][0] == board[1][1] && board[1][1] == board[1][2] 
(3): board[2][0] == board[2][1] && board[2][1] == board[2][2] 
(4): board[0][0] == board[1][0] && board[1][0] == board[2][0] 
(5): board[0][1] == board[1][1] && board[1][1] == board[2][1] 
(6): board[0][2] == board[1][2] && board[1][2] == board[2][2] 
(7): board[0][0] == board[1][1] && board[1][1] == board[2][2] 
(8): board[0][2] == board[1][1] && board[1][1] == board[2][0] 

如果這些單元格中的任何一個相等(並且不是空白),則有人(取決於誰佔用那些單元格的XO)贏得了遊戲。你可以使用循環來使代碼更加緊湊。

+0

因爲你只能靠自己的動作贏得勝利,所以你可以搜索最後放置的令牌周圍的空間。 – 2012-07-31 16:26:27