diff --git a/src/main/java/JumpGame.java b/src/main/java/JumpGame.java index caa33a5..c711359 100644 --- a/src/main/java/JumpGame.java +++ b/src/main/java/JumpGame.java @@ -1,16 +1,17 @@ import entities.*; +import models.GroundModel; import models.IModel; import models.ModelType; import models.PlayerModel; import views.IView; import views.PlayerRenderer; +import views.TileRenderer; import java.util.ArrayList; public class JumpGame { //--------------------------------------------------------------- // private Time time = new Time(); - private Ground ground = new Ground(); // private Position position = new Position(ground); // private Gameover gameover = new Gameover(position); // private Onground onground = new Onground(ground, position); @@ -42,11 +43,12 @@ public void init() { // model - models.add(new PlayerModel(ground)); + models.add(new GroundModel()); + models.add(new PlayerModel(models.get(ModelType.GroundModel))); // view - views.add(new PlayerRenderer("resources/chicken.png", 0.5)); - + views.add(new TileRenderer("resources/tile.png", 1)); + views.add(new PlayerRenderer("resources/chicken.png", 1)); } //--------------------------------------------------------------- @@ -64,7 +66,7 @@ // // マイフレーム更新 - gravity(0.01); //重力 +// gravity(0.01); //重力 } //--------------------------------------------------------------- diff --git a/src/main/java/models/GroundModel.java b/src/main/java/models/GroundModel.java new file mode 100644 index 0000000..7e9f384 --- /dev/null +++ b/src/main/java/models/GroundModel.java @@ -0,0 +1,29 @@ +package models; + +import entities.Ground; + +//--------------------------------------------------------------- +// +public class GroundModel implements IModel { + //--------------------------------------------------------------- + private Ground ground; + + //--------------------------------------------------------------- + //--------------------------------------------------------------- + public GroundModel() { + ground = new Ground(); + } + + //--------------------------------------------------------------- + //--------------------------------------------------------------- + // getter + public Ground getGround() { + return ground; + } + + //--------------------------------------------------------------- + //--------------------------------------------------------------- + // + + //--------------------------------------------------------------- +} diff --git a/src/main/java/models/ModelType.java b/src/main/java/models/ModelType.java index 604df21..7ffa695 100644 --- a/src/main/java/models/ModelType.java +++ b/src/main/java/models/ModelType.java @@ -4,8 +4,8 @@ // モデルのタイプ識別 public class ModelType { - public static final int PlayerModel = 0; - public static final int GroundModel = 1; + public static final int GroundModel = 0; + public static final int PlayerModel = 1; public static final int GameModel = 2; //--------------------------------------------------------------- diff --git a/src/main/java/models/PlayerModel.java b/src/main/java/models/PlayerModel.java index ecc41f8..3b530a0 100644 --- a/src/main/java/models/PlayerModel.java +++ b/src/main/java/models/PlayerModel.java @@ -18,9 +18,12 @@ private double jumpPower = 32; //--------------------------------------------------------------- - public PlayerModel(Ground ground) { - position = new Position(new Pair<>(640d, 480d), ground); - onground = new Onground(ground, position); + // + public PlayerModel(IModel model) { + GroundModel groundModel = (GroundModel)model; + + position = new Position(new Pair<>(640d, 480d), groundModel.getGround()); + onground = new Onground(groundModel.getGround(), position); velocity = new Velocity(position, onground); acceleration = new Acceleration(velocity, onground); force = new Force(acceleration); diff --git a/src/main/java/views/PlayerRenderer.java b/src/main/java/views/PlayerRenderer.java index 559f06f..30329c8 100644 --- a/src/main/java/views/PlayerRenderer.java +++ b/src/main/java/views/PlayerRenderer.java @@ -20,10 +20,14 @@ //--------------------------------------------------------------- // PlayerModelから座標を取得して描画する public void display(IModel model) { - PlayerModel playerModel = (PlayerModel)model; + + // Modelがキャスト可能か判定 + if (model instanceof PlayerModel) { + PlayerModel playerModel = (PlayerModel) model; + sprite.setPositionValue(playerModel.getPosition().getValue()); + } sprite.draw(); - sprite.setPositionValue(playerModel.getPosition().getValue()); } //--------------------------------------------------------------- diff --git a/src/main/java/views/TileRenderer.java b/src/main/java/views/TileRenderer.java new file mode 100644 index 0000000..90bfe8f --- /dev/null +++ b/src/main/java/views/TileRenderer.java @@ -0,0 +1,31 @@ +package views; + +import entities.Sprite; +import models.IModel; + +//--------------------------------------------------------------- +// タイルの描画 +public class TileRenderer implements IView { + private Sprite sprite; + + //--------------------------------------------------------------- + //--------------------------------------------------------------- + public TileRenderer(String path, double scale){ + this.sprite = new Sprite(path); + this.sprite.setScaleValue(scale); + } + + //--------------------------------------------------------------- + //--------------------------------------------------------------- + // + public void display(IModel model){ + sprite.draw(); + } + + //--------------------------------------------------------------- + // テクスチャの開放 + public void delete(){ + sprite.delete(); + } + //--------------------------------------------------------------- +}