gui.framework.window
プログラミング言語は「Java」です。
主人公は「M.A.E.D.A. (Martian Assistant for Earthling Development & Advancement)」です。
実際に実行できるソースコードになります。
この作品は1969年の月のとある観測所が舞台になります。
第一話が1969年6月16日 午前3時28分
第二話が1969年7月15日 午前2時48分 ← 本作
の出来事になります。
------------------------------「GameFrame.java」-----------------------------------
package gui.framework.window;
import javax.swing.JFrame;
import gui.framework.scene.SceneController;
/**
* 画面表示の枠にゲームを描画するパネルを配置する
*
* @author M.A.E.D.A.
* @version 1.0.3
*/
public class GameFrame extends JFrame {
private final GamePanel gamePanel;
public GameFrame(SceneController sceneController) {
setTitle("Game");
// ウィンドウのバツ印でプログラムを終了する
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// ゲームパネルを設置
gamePanel = new GamePanel(sceneController);
add(gamePanel);
pack();
// 画面を中央に表示する
setLocationRelativeTo(null);
setVisible(true);
}
/**
* キャンバス(画面)に再描画する
*/
public void repaintCanvas() {
gamePanel.repaint();
}
/**
* ログメッセージをコンソールに表示する
* @param logMessage 表示するメッセージ
*/
public static void log(String logMessage) {
System.out.println(logMessage);
}
}
------------------------------「GamePanel.java」-----------------------------------
package gui.framework.window;
import java.awt.*;
import javax.swing.*;
import gui.framework.scene.SceneController;
/**
* 画面の背景を設定する
*
* @author M.A.E.D.A.
* @version 1.0.3
*/
public class GamePanel extends JPanel {
private final SceneController sceneController;
public GamePanel (SceneController sceneController) {
this.sceneController = sceneController;
setPreferredSize(new Dimension(WindowParamServer.getWindowWidth(), WindowParamServer.getWindowHeight())); //パネルのサイズを設定
setBackground(Color.BLACK); // パネルの背景色を設定
setFocusable(true);
}
/**
* ゲームを描画する
* @param g 描画する内容を管理
*/
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
sceneController.render(g);
}
}
------------------------------「WindowParamServer.java」-----------------------------------
package gui.framework.window;
/**
* ウィンドウのパラメータを提供する
*
* @author M.A.E.D.A.
* @version 1.0.3
*/
public class WindowParamServer {
private static final int GAME_WINDOW_WIDTH = 500;
private static final int GAME_WINDOW_HEIGHT = 500;
private static final int FPS = 60;
public static int getWindowWidth() {
return GAME_WINDOW_WIDTH;
}
public static int getWindowHeight() {
return GAME_WINDOW_HEIGHT;
}
public static int getSleepMilliSec() {
return 1000 / FPS;
}
}