【Java:的当てゲーム】タイトル画面の実装

2018年8月16日

前回、リソースの利用や画面遷移の機能を実装と各種画面クラスの実装をしました。

今回は一番最初に表示されるタイトル画面のクラスを少しまともな状態まで仕上げてみましょう。

前の記事 的当てゲーム制作Top 次の記事

タイトル画面を作っていく

まずはタイトル画面を作っていきます。

私はデザインセンスはないし、何のアイデアもないので、ゲームで使う背景にでかい文字でタイトルを表示。各モードを文字列で表示するだけの構成とします。まぁ飾りとして的の画像も描画しておきましょうか。

表示は座標調整が面倒なだけで誰でも簡単にできると思います。より簡単に座標制御できるようにGraphicsUtilクラスやDrawLabelクラスを利用していきます。

GraphicsUtilクラスは文字列や画像の中心座標を指定座標になるべく近づけて描画できるメソッドがあります。

DrawLabelクラスは文字列を中心に描画し、かつそれっぽい当たり判定ができるようになっています。このクラスはコンストラクタにGraphicsオブジェクトを渡す必要がありますので、初めてdrawメソッドが呼び出された時か、getGraphicsメソッドで取得して渡しておきましょう。

これらの機能を利用して画面を構築してみます。

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;

import com.nompor.gtk.GameView;
import com.nompor.gtk.draw.DrawLabel;
import com.nompor.gtk.draw.GraphicsUtil;

public class TitleMode extends GameView {

	//タイトル画面の文字列オブジェクト
	DrawLabel title;
	DrawLabel start;
	DrawLabel ranking;
	DrawLabel description;
	DrawLabel end;

	//フォントオブジェクトの構築
	Font titleFont = new Font(Font.MONOSPACED,Font.BOLD, 60);
	Font defaultFont = new Font(Font.MONOSPACED,Font.PLAIN, 25);

	int cx;

	//ウィンドウにこのオブジェクトが設置されたら最初に呼び出しされる
	public void start() {

		//ウィンドウ中心座標の取得
		cx = AppManager.getW()/2;

		//文字列オブジェクトを構築する
		Graphics g = getGraphics();
		title = new DrawLabel(g, "的当てゲーム", titleFont, cx, 100);
		start = new DrawLabel(g, "ゲーム開始", defaultFont, cx, 350);
		ranking = new DrawLabel(g, "ランキング", defaultFont, cx, 400);
		description = new DrawLabel(g, "説明書", defaultFont, cx, 450);
		end = new DrawLabel(g, "終了", defaultFont, cx, 500);
	}

	//描画処理
	public void draw(Graphics g) {
		drawTitle(g);
	}

	//タイトルの描画
	void drawTitle(Graphics g) {
		//アンチエイリアシングの有効化
		GraphicsUtil.setTextAntialiasing(g, true);

		//背景描画
		g.drawImage(AppManager.getBackImage(), 0, 0, null);

		//タイトル文字列描画
		g.setColor(Color.WHITE);
		g.setFont(titleFont);
		title.draw(g);

		//選択肢描画
		g.setFont(defaultFont);
		start.draw(g);
		ranking.draw(g);
		description.draw(g);
		end.draw(g);

	}
}
実行結果

これでタイトル画面ができました。

非常にシンプルですね。

ちなみに今回使用したstartメソッドはWindowにGameViewがはめ込まれた直後に呼び出されるメソッドです。

Java

Posted by nompor