【Java】

第1回 Javaでオセロを作成しよう

オセロを配置する「ボード」を作ろう

投稿日 2020/11/29 更新日 2020/11/29


こんにちは。当サイトの管理者「元木皇天」です。

この記事を見ているあなたはきっとJavaが好きなのでしょう。そしてオセロが大好きなのでしょう。または、課題か何かで楽にオセロ作れないかなーと思っているのでしょう。いずれにせよオセロをJavaで作成することで、Javaの基礎を固めつつより一層の理解を深めることができます。

今回はそんな第1回ということで、最初にオセロを置く「ボード」の作成を解説していきます。

作成はEclipseで行いますので、まだインストールしていない方は こちらのページ を参考にインストールしてください。

あらかじめ言っておきますが、CUI(コンソール)での作成です。

開発環境
OS:macOS
Java:11.0.7
Eclipse:2020-03

今回の目標

今回の目標はコンソール上にオセロのボードを表示することです。 以下のように表示することを目標に作成をしましょう。

オセロを開始します.
| |1|2|3|4|5|6|7|8|
|1| | | | | | | | |
|2| | | | | | | | |
|3| | | | | | | | |
|4| | | |◯|●| | | |
|5| | | |●|◯| | | |
|6| | | | | | | | |
|7| | | | | | | | |
|8| | | | | | | | |

プロジェクトの作成

ではさっそくオセロを作成するJavaプロジェクトを作成しましょう。 今回は「OseroGame」というプロジェクト名で作成します。

Javaプロジェクトの新規作成

パッケージ・クラスの作成

次にパッケージとクラスを作成していきます。以下の画像を参考に次のものを作成してください。

パッケージ
osero
config
view

クラス
Main.java
StartConfig.java
ShowBoard.java

作成フォルダ一覧

ボードとオセロを作成する

まずは今回使用するボードとオセロのコマ?(白と黒の丸いやつ)の 元となる物を作成します。 Main.javaに以下のプログラムを書いてください。

--Main.java--

package osero;

public class Main {

    //オセロの情報
    public static String white = "◯";
    public static String black = "●";

    //ボードの情報を保存する
    public static String board[][] = new String[9][9];

}

それぞれ「public」で「static」なフィールド値です。これらの値は、今後他のクラスで頻繁に使用されるためこのような設定にしています。

また、ゲームを進めてく上でオセロがボード上のどこに置かれているかの情報を保存して、表示する必要があります。ボード上の情報を保存しておくのが「String board[][]」になります。2次元配列を使用している理由は、ボード上におくオセロの位置をx軸・y軸で指定できるようにします。

ちなみに今はまだオセロが置かれていない状態です。

ボードを表示する

次にボードを表示するプログラムを書いていきましょう!

まずはShowBoard.javashowBoardメソッドを、 Main.javamainメソッド を作成します。ここでは先ほど作成したフィールド「String board[][]」の情報を元に、 ボードを表示するプログラムを書いていきます。

--ShowBoard.java--

package osero.view;

public class ShowBoard {

    //Mainのboard配列を受け取って、それをもとにオセロボードを表示する
    public void showBoard(String[][] board) {

        for(int i=0; i<9; i++) {
            for(int j=0; j<9; j++) {
                System.out.print("|" + board[j][i]);

                //7列目記載の際に、最後に「|」を入れて改行する
                if(j==8) {
                    System.out.println("|");
                }
            }
        }
    }
}

--Main.java--

package osero;

import osero.view.ShowBoard;

public class Main {

    //オセロの情報
    public static String white = "◯";
    public static String black = "●";

    //ボードの情報を保存する
    public static String board[][] = new String[9][9];

    public static void main(String[] args) {

        //インスタンスの作成
        ShowBoard SB = new ShowBoard();

        //ボードを表示する
        SB.showBoard(board);
    }
}

では、解説しましょう。

まず先に作成したshowBoardメソッドについて解説します。 このメソッドでは引数に「Stringの2次元配列」を設定しています。 ここにはMain.javaのboard[][]が引数として渡される想定で作成しています。

渡されたString配列の値をfor文で取り出し、「System.out.print()」を使用して ボードの見た目になるように整形してコンソールに出力しています。 「println」を使わないのは改行させたくないためです。


そして次に作成したmainメソッドについて解説します。 このメソッドでは、作成したshowBoardメソッドを使用するために、 ShowBoard.javaのインスタンスを作成し、メソッドを使用しています。

ではさっそくプログラムを実行しましょう。実行すると以下のような表示がされるはずです。

|null|null|null|null|null|null|null|null|null|
|null|null|null|null|null|null|null|null|null|
|null|null|null|null|null|null|null|null|null|
|null|null|null|null|null|null|null|null|null|
|null|null|null|null|null|null|null|null|null|
|null|null|null|null|null|null|null|null|null|
|null|null|null|null|null|null|null|null|null|
|null|null|null|null|null|null|null|null|null|
|null|null|null|null|null|null|null|null|null|

・・・・なんかやばそうですよね。でも安心してください。Main.javaの「board[][]」には まだ何も値を設定していないので、nullになっていて問題ありません。 ということで、最後に綺麗な見た目にしてあげるプログラムを書いていきましょう!

ボードの表示を整える

ボードの表示を整えるために新たなメソッドを作成します。StartConfig.javaboardInitValueメソッドboardSetupメソッド を作成していきましょう。

--StartConfig.java--

package osero.config;

import osero.Main;

public class StartConfig {

    //オセロのボードに初期値「半角スペース」を設定する
    public void boardInitValue() {
        for(int i=0; i<9; i++) {
            for(int j=0; j<9; j++) {
                Main.board[i][j] = " ";
            }
        }
    }

    //ボードの初期表示項目を設定する
    public void boardSetup() {
        for(int i=1; i<9; i++) {
            //x軸に数字を並べる
            Main.board[0][i] = String.valueOf(i);
            //y軸に数字を並べる
            Main.board[i][0] = String.valueOf(i);
        }
        //ゲーム開始時のオセロの配置
        Main.board[4][4] = Main.white;
        Main.board[5][4] = Main.black;
        Main.board[5][5] = Main.white;
        Main.board[4][5] = Main.black;
    }
}

まずboardInitValueのメソッドでは何をしているか解説します。 こちらのメソッドでは、Main.javaのboard[][]に値を入れています。 全て「半角スペース」を入れることで、先ほどのように「null|null|null|・・・」と 表示されるのを防ぎ、綺麗な形でボードが表示されるようにしています。

次に作成したboardSetupメソッドについて解説します。こちらのメソッドでは、プレイヤーがオセロを置く場所を目でみてわかりやすいようにx軸とy軸に数字を入れています。

その後、ゲーム開始時にボードの中央に配置されるオセロを配置しています。


では最後に、Main.javaで上記2つのメソッドを使用してボードが正しく表示されるか確認しましょう。 以下の赤線で記した箇所が追記コードです。

--Main.java--

package osero;

import osero.config.StartConfig;
import osero.view.ShowBoard;

public class Main {

    //省略

    public static void main(String[] args) {

        //インスタンスの作成
        StartConfig SC = new StartConfig();
        ShowBoard SB = new ShowBoard();

        System.out.println("オセロを開始します.");

        //ボードに初期値をセットする
        SC.boardInitValue();
        SC.boardSetup();
        //ボードを表示する
        SB.showBoard(board);
    }
}

実行して以下のような結果が表示されれば成功です

オセロを開始します.
| |1|2|3|4|5|6|7|8|
|1| | | | | | | | |
|2| | | | | | | | |
|3| | | | | | | | |
|4| | | |◯|●| | | |
|5| | | |●|◯| | | |
|6| | | | | | | | |
|7| | | | | | | | |
|8| | | | | | | | |

実際のコンソール画面

Javaプロジェクトの新規作成

次回

お疲れ様でした。次回は「ボードにオセロを置く」プログラムを実装していきましょう! ではまたあいましょう。ありがとうございました。

参考文献・おすすめ文献