gui.framework.scene
------------------------------「GameScene.java」-----------------------------------
package gui.framework.scene;
import java.awt.Graphics;
/**
* ゲームの各シーンのインターフェース
*
* @author M.A.E.D.A.
* @version 1.0.3
*/
public interface GameScene {
/**
* シーンの状態を更新する
*/
void update();
/**
* シーンの内容を描画する
* @param g 描画する内容を管理
*/
void render(Graphics g);
/**
* @return シーンの終了フラグ
*/
boolean isFinished();
/**
* @return 次のシーン
*/
GameScene getNextScene();
}
------------------------------「AbstractGameScene.java」-----------------------------------
package gui.framework.scene;
import java.awt.Graphics;
/**
* ゲームの各シーンの抽象クラス。シーンごとに必要な処理を実装する
*
* @author M.A.E.D.A.
* @version 1.0.3
*/
public abstract class AbstractGameScene implements GameScene {
/**
* シーンの状態を更新する
*/
@Override
public void update() {}
/**
* シーンの内容を描画する
* @param g 描画する内容を管理
*/
@Override
public void render(Graphics g) {}
/**
* @return シーンの終了フラグ
*/
@Override
public boolean isFinished() {
return true;
}
/**
* @return 次のシーン
*/
@Override
public GameScene getNextScene() {
return null;
}
}
------------------------------「SceneController.java」-----------------------------------
package gui.framework.scene;
import java.awt.Graphics;
import gui.framework.window.GameFrame;
/**
* 各シーンの表示をコントロールする
*
* @author M.A.E.D.A.
* @version 1.0.3
*/
public class SceneController {
private GameScene currentScene;
public SceneController(GameScene gameScene) {
this.currentScene = gameScene;
}
/**
* ゲームの状態を更新する
* シーンの終了フラグがtrueのときは、次のシーンに更新する
*/
public void update() {
GameFrame.log("ゲームの状態を更新する");
currentScene.update();
if (currentScene.isFinished()) {
GameScene nextScene = currentScene.getNextScene();
if (nextScene != null) {
currentScene = nextScene;
}
}
}
/**
* ゲームの状態を描画する
* @param g 描画する内容を管理
*/
public void render(Graphics g) {
GameFrame.log("ゲームの状態を描画する");
currentScene.render(g);
}
}