Java プログラミング

【eclipse】JAVAでオセロを作ってみよう

JAVA初心者の方にとってオセロのコーディングは難しいと思います。実際、プログラミング教材においてJAVAの上級問題でよく出たりします。

そこで、JAVAで簡単なオセロを作ってみました。今回は、このコードの概念、設計、実装をわかりやすく説明していきます。

記事の目的

JAVAでオセロの概念設計、実装を理解できる

記事の信頼性

  • プログラミング4年の現役エンジニアが執筆してます
  • ソースコードは引用したものではなく自ら作成したものです

まず、どんなものを作るかを実行画面で確認してください。

最初にプレイヤーA(おんなと表記)は駒を置くx座標とy座標を入力します。

ひっくり返す作業が自動的に実行され、次はプレイヤーB(おとこ)に移ります。

指定したマスに駒を置いてもひっくり返せない、あるいは既に置かれている場合、もう一度座標を入力させるフェーズに戻ります。

概念

ここではオセロをコードレベルに落とす下準備として、オセロの流れをより具体的に言葉で表現していきます。(すぐにコーディング作業に移る人もいますが、この記事では設計作業による無駄のないコーディングを目指しています)

    1. 初期盤面がある(盤面の中心に白黒2個ずつの駒がある)。
    2. ユーザAが黒駒を置く(白でも良いですが今回は黒を先にしています)。
    3. ひっくり返せるか判断する。
      1. ひっくり返せるなら盤面の表示を盤面。
      2. ひっくり返せないなら、もう一度置く場所を指定させる。
    4. ユーザBが白駒を置く。
    5. 3と同じ処理を行う(黒駒という表記は白駒に変える必要がある)。
    6. 「2と3 → 4と5」を盤面に駒が置けない状態になるまで繰り返す。
    7. 終了。

ここまではオセロをわかっている人であれば理解できる内容です。ここからコードに近い具体的な設計をしてきます。

設計・実装

①設計

初期盤面がある(盤面の中心に白黒2個ずつの駒がある)。

これを具体化すると次のようになります。

盤面を表示するString型の2次元配列boardを作成する。boardはx座標(0〜3)とy座標(0〜3)を格納し、xとyの組み合わせで座標を表現できる。board[x][y]で指定のマス内の駒を表現する。

board[1][1]は黒、board[2][1]は白、board[1][2]は白、board[2][2]は黒で出力し初期盤面とする。

2次元配列って割と難しいかと思います。よくこんな初期化をします。

languageArray[0][0〜2]は英語を示します。language[1][0〜2]は日本語を表します。

つまりlanguageArrayをboardにおきかえるとboard[0][0〜2]は盤面の0列目を表します。(列とは縦のこと)

①コード実装

4 ×4の盤面を表示するString型の2次元配列を定義します。この配列に格納される値をEMPTY, BLACK, WHITEで宣言します。

更にオセロゲームの初期設定をしていきます。ここでは、最初に配置される駒とユーザの初期設定を行います。

setUserInfoクラスはidを引数として、stoneUser(現ターンのユーザ名)とcurrentStoneColor(現ターンの色)にセットします。initialise()はstartUp()というクラス(メインメソッドを持つクラス)で最初に呼ばれますが、ここでは書いておりません。後半でちゃんと書きます。

②設計

ユーザAが黒駒を置く(白でも良いですが今回は黒を先にしています)

これを具体化すると次のようになります。

ユーザAはx座標を入力する(0〜3)

ユーザBはy座標を入力する(0〜3)

入力にはjava.util.Scannerをインポートして使います。

yも同じように取り込みます。これによってユーザが置きたいマスの座標を指定できます。

②コード実装

StartUpクラスはeclipse上で実行すると呼ばれるメインメソッドです。

x座標とy座標を入力させています。board.gameとは何かというとgameが続くかどうかの指標です。

また、board.showBoard()は盤面をコンソールに出力させる関数です。board.setStone(x,y)はひっくり返せるかの判定をし、ひっくり返すマスを更新しています。

board.showBoard()とboard.setStone(x,y)については次に説明を行います。

続く

一旦この辺にして、次の記事は下記のリンクへと飛びます。

【eclipse】JAVAでオセロを作ってみよう②

続きを見る

-Java, プログラミング
-

Copyright© SugLog , 2021 All Rights Reserved Powered by AFFINGER5.