(第1回)Javaを使ったトランプゲーム作成

(第1回)Javaを使ったトランプゲーム作成

目次

はじめに
Javaのダウンロード・インストール
環境変数の設定・パスの確認
Eclipseのダウンロード・インストール
Eclipseを実際に使ってみる
問題点と課題
次回予告

はじめに

本連載では、Eclipseの環境下でJavaを使ったトランプゲームを作成していきます。
第1弾として作成するゲームの概要としては、トランプの山札から1枚を引いたところからスタートします。
この1枚目のトランプの数字よりも、次に引くトランプの数字が大きいか小さいかを
予想してコインを賭け、当たれば賭けたコインが倍になり、外れると没収されるというものです。

はじめは簡単なゲーム作成を目標として、徐々に追加ルールを設定したり
段々と難易度を上げた内容へとステップアップさせていき、ババ抜きを完成させます。
最終的には完成させたゲームをWebSocketを利用し対戦ゲームにすることを目標として、連載を進めていきたいと 思います。

Javaのダウンロード・インストール

ではまず、Javaのダウンロードの方を行っていきます。

下記URLにアクセスして、




ダウンロードタブを選択し、「こちら(USサイト)」のリンクをクリックします。


右下の「JDK」の文字下にある「Download」をクリックします。

次ページに飛んだら、「 Accept License Agreement 」の項目にチェックを入れ、
ダウンロードしたいバージョンを選んでダウンロードします。

ダウンロードが完了したらインストールしていきます。

するとセットアップの画面が表示され「このウィザードでは、Java SE Development Kit11 Update のインストール・プロセスを順を追って説明します。」というメッセージが出ますので、「次へ」をクリックします。

次に「インストールするオプション機能を次のリストから選択してください。」と書いた画面が
出てきます。ここでの選択肢は「開発ツール」、「ソース・コード」、「パブリックJRE」の
3種類ですので、「開発ツール」を選択し、「次へ」をクリックします。

次に、「Javaを別のフォルダにインストールするには『変更』をクリックしてください。」
と書いた画面が出てきますので、こちらも「次へ」をクリックします。

すると、「 Java SE Development Kit11 Update (64-bit)が正常にインストールされました」
と画面が出てくれば、 「閉じる」ボタンで終了します。 これでインストールは完了となります。

環境変数の設定・パスの確認

Javaを使う上での初期設定として、環境変数を設定します。

コントロールパネル→システムとセキュリティ→システム→システムの詳細設定をクリックします。
システムのプロパティが開きますので、環境変数をクリックします。

下のシステム環境変数(S)の方の編集→右上の新規をクリックします。
すると新規入力欄が出てきますので、Javaのインストール先をここに貼り付けます。
今回は下記にインストールしましたので、

こちらをコピーして貼り付けます。

これで環境変数の設定作業が完了しましたので、設定がきちんとできているか確認します。

スタートメニューからコマンドプロンプトを開き、「java -version」と入力しEnterを押します。

C:\Users\User.DESKTOP-70VH645>java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

C:\Users\User.DESKTOP-70VH645>

上記のように、Javaのバージョンが表示されればパスが通っているということになりますので、
これでJavaの設定は完了となります。

Eclipseのダウンロード・インストール

次に、Eclipse をダウンロード・インストールしていきます。

Eclipse のインストールの方法は様々あり、公式サイトからインストーラー版やパッケージ版を
インストールすることができますが、これらはどれも英語版であり、
日本語にするにはプラグインによる拡張作業が必要になってきます。
ですが「MergeDoc Project」から「Pleiades All in One(日本語版)」を
インストールすると、 ファイルを解凍するとすぐに日本語版を使用することができますので
今回はこちらの方法で進めていきたいと思います。

※Lhaplusで解凍してみましたがエラーが出てしまいました。
調べたところ7-zipで解凍すると問題ないという情報を見つけました。7₋zipをインストールして実行したところ、正常に解凍できました。


解凍の準備ができたら下記URL にアクセスし、



2019-09の最新版から、自身のPCに合わせて
JAVA の Full Edition (64bit) をダウンロードします。

ダウンロードができたら、C:直下にzipを移動させ、解凍します。
解凍ができたら、「C:¥pleiades¥eclipse」内にある
「eclipse.exe」をクリックし起動させます。

初回の起動の際には「Eclipseランチャー」というものが出てきますが
ここではワークスペースを決めていきます。
今回はインストールフォルダである「C:¥pleiades」に設定します。

ここまで完了するとEclipseを開けるようになりますので、続けてデフォルトJavaの設定を行います。


Eclipseの取得に際してインストールしたPleiades All in One ですが、
デフォルトでJREがインストールされた状態になっていますので、
手動で追加する必要なくデフォルトJavaを設定することができます。

ツールバーのウィンドウ→設定→Java→インストール済みのJREを開きます。
JREの一覧からデフォルトのJava11にチェックを入れ、
「適用して閉じる」をクリックして閉じます。

次に実際に使用する際のテストとしてプロジェクト作成を行います。

ツールバーのファイル→新規→Javaプロジェクトと進みます。

するとプロジェクト名の設定画面になりますので、入力し完了をクリックすると
パッケージエクスプローラーにプロジェクトが追加されます。

これでEclipseの初期設定は全て完了となります。

Eclipseを実際に使ってみる

Eclipseの設定が完了しましたので、実際に動作するかの確認も含めて
Eclipseにコードを書いて実行してみます。

この連載では、トランプを使ったゲームを作っていきますので、
ためしにトランプの山札から52枚全てを表示させてみます。

まずはジョーカー以外のトランプ52枚を用意したいので、
このように4種類のマークとそれぞれ1~13の数字を割りふるカードクラスを作ります。

//トランプカードクラス
public class Card {
	//カードのマークプロパティ(スペード・クローバー・ハート・ダイヤ)
	private String suit;
	//カードの数字(1~13)
	private int num;
	//コンストラクタ
	public Card(String suit, int num){
		this.suit = suit;
		this.num = num;
	}
	//getter,setter
	public String getSuit() {
		return suit;
	}
	public void setSuit(String suit) {
		this.suit = suit;
	}
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}

}

次に、先程作ったカードを山札のように並べて積み重ねます。
カードを格納するためのDeckクラスを作成し、そのコンストラクタ内で各マークの1から13までのカードを作成しDeckクラスに格納します。
また、表示用にDisplayCardlistというメソッドを用意します。

//山札クラス
public class Deck {
	//カードクラスを格納する配列
	private Card card[];

	//コンストラクタ(山札の作成)
	public Deck() {
		//52枚のカードを格納する配列を宣言する
		card = new Card[51];
		//山札の枚数をカウントする変数
		int rand = 0;

		//カードのマークの種類分ループを回す
		for (int i = 1; i <= 4; i++) {
			//ループの1回目
			if (i == 1) {
				//ハートの1~13を作成
				for (int j = 1; j <= 13; j++) {
					this.card[rand] = new Card("ハート", j);
					rand++;
			    }
			//ループの2回目
			} else if (i == 2) {
				//ダイヤの1~13を作成
				for (int j = 1; j <= 13; j++) {
					this.card[rand] = new Card("ダイヤ", j);
					rand++;
				}
			//ループの3回目
			} else if (i == 3) {
				//スペードの1~13を作成
				for (int j = 1; j <= 13; j++) {
					this.card[rand] = new Card("スペード", j);
					rand++;
				}
			//ループの4回目
			} else if (i == 4) {
				//クローバーの1~13を作成
				for (int j = 1; j <= 13; j++) {
					this.card[rand] = new Card("クローバー", j);
					rand++;
				}
			}
		}
	}
	//作成したカードの一覧を表示するメソッド
	public void DisplayCardist() {
		for (Card s : this.card) {
		   System.out.println(s.getSuit() + s.getNum());
		}
	}
}

最後にこの山札を表示させるための処理を作成します。

public class ITPORTsection1 {
	//作成したカードの一覧を表示して確認する
	public static void main(String[] args) {
		//山札クラスの作成
		Deck deck = new Deck();
		//作成したカードの一覧を表示するメソッド
		deck.DisplayCardist();
	}
}

ここまで準備ができたら実際に動かしてみます。
するとこのように52枚のカードの束が表示されました。

問題点と課題

今回、コードを書いて後から気づいた問題点があります。
以下がその内容になります。
●今後、ジョーカーが含まれるゲームも作成します。その中で枚数も1枚の時もあれば2枚になる時もあり今回の書き方だと汎用性が低いと思います。
→どのトランプゲームでもこのクラスは使用する為、汎用性が高いものにしたいと思っています。枚数も52枚で固定しているのでジョーカーを含められるように修正する。
●次回作成予定のゲームで数字の大小を予想するゲームを作成予定ですが、同じ数字だった際にマークで強さを比較しようと考えています。カードクラスのマークをstringでマークを入力しているが、このままだと比較がしにくいと思います。
→マークを入力ではなくintなどで数字で判断し、表示する際などに数値からマークに変換したほうが比較がしやすくコードもすっきりし可読性がよくなるのではないかと思いました。

次回予告

今回は Eclipse とJavaの環境構築と設定方法、作成するゲームの概要についてお話させて頂きました。
次回の記事では、上記の問題点の修正もと冒頭に説明したゲームを、実際にコードを書いていき作成したいと思います。