-5

まず第一に、私は Java プログラミングの初心者です。学校のプロジェクトに応募したいです。ボードゲームを作ることにしました!かなり簡単です。![ボード][1] これはボードで、2 人のプレイヤー (両方とも人間) がいます。最初の 1 人のプレイヤー (x) がボード上の任意の場所に移動します。彼が利用できる場所は 9 つあります。

ゲームの目的は、3 つのトークンすべてを斜め、水平、または垂直に 1 列に並べることです。

![勝利条件][2] 勝者と、ユーザーが動いたときにどのように値を選択するかをアルゴリズムでチェックしたい。tic tac toh アルゴリズムをたくさん閲覧しましたが、何が問題なのかわかりません。![考えられる技][3] 助けてください!!

4

1 に答える 1

3

宿題なので、答えだけは言いたくないです。また、何に苦しんでいるのかが明確ではなかったので、これがあなたが抱えていた問題に当てはまることを願っています. 回答を編集してより明確にするか、コメントを残して、回答したすべての人があなたのニーズに合わせてより効果的に回答を改善できるようにします。

2 次元配列を使用してボードを格納できます。Java では、3x3 の 2 次元配列を作成するための構文 (たとえば、型を使用してorcharを格納する) は次のとおりです。XO

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

Tic-Tac-Toe では、プレイヤーがゲームに勝ったことを示す 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 から始まります (3x3 の 2D 配列があるため、最大 2 になります) ことを思い出すと、これは次の一連の条件に変換されます。

(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]

これらのセルのいずれかが等しい (そして空白でない) 場合、誰か (それらのセルを占有する人に応じてXまたはのいずれか) がゲームに勝ったことになります。Oループを使用して、このコードをよりコンパクトにすることができます。

于 2012-07-29T18:08:58.460 に答える