diff --git a/src/main/java/JumpGame.java b/src/main/java/JumpGame.java index 1004826..344a7a1 100644 --- a/src/main/java/JumpGame.java +++ b/src/main/java/JumpGame.java @@ -22,9 +22,8 @@ //--------------------------------------------------------------- // 初期化 public void init() { - JumpGameModel jumpGameModel = (JumpGameModel)model; // view - views.add(new TileMapRenderer(jumpGameModel.getFlags().getValues())); + views.add(new TileMapRenderer(model)); views.add(new PlayerRenderer("resources/chicken.png")); } @@ -38,6 +37,8 @@ view.display(); } + + // Modelの更新 // // Space キーのインプット diff --git a/src/main/java/entities/Ground.java b/src/main/java/entities/Ground.java index 58ab6f6..619b2cf 100644 --- a/src/main/java/entities/Ground.java +++ b/src/main/java/entities/Ground.java @@ -1,9 +1,26 @@ package entities; public class Ground { - private boolean value; + private boolean value = true; + //--------------------------------------------------------------- + // getter public boolean getValue() { return value; } + + //--------------------------------------------------------------- + //--------------------------------------------------------------- + // + public void openHole(){ + this.value = false; + } + + //--------------------------------------------------------------- + // + public void closeHole(){ + this.value = true; + } + + //--------------------------------------------------------------- } \ No newline at end of file diff --git a/src/main/java/entities/Position.java b/src/main/java/entities/Position.java index fbafd51..7c23683 100644 --- a/src/main/java/entities/Position.java +++ b/src/main/java/entities/Position.java @@ -7,7 +7,7 @@ // public class Position { private Ground ground; - private Pair value = new Pair<>(-20d, 0d); + private Pair value = new Pair<>(-4d, 0d); //--------------------------------------------------------------- //--------------------------------------------------------------- diff --git a/src/main/java/entities/modelExtentions/Flags.java b/src/main/java/entities/modelExtentions/Flags.java index a4c0f79..e904fcb 100644 --- a/src/main/java/entities/modelExtentions/Flags.java +++ b/src/main/java/entities/modelExtentions/Flags.java @@ -11,6 +11,7 @@ public class Flags { private ArrayList values = new ArrayList<>(); + private int count = 0; //--------------------------------------------------------------- //--------------------------------------------------------------- @@ -23,6 +24,7 @@ for (int i = 0; i < lines.size(); i++) data = lines.get(i).split(","); for (int i = 0; i < data.length; i++) values.add(Integer.parseInt(data[i])); + for (int v : values) System.out.println(v); } catch (IOException e) { System.out.println("Failed to load stage.txt"); @@ -35,5 +37,38 @@ public ArrayList getValues() { return values; } + //--------------------------------------------------------------- + //--------------------------------------------------------------- + // フラグのタイミングと一致しているかをチェック + public boolean isFlag(int timing) { + for (int flag : values) + if (timing == flag) return true; + return false; + } + + //--------------------------------------------------------------- + // 奇数番目のフラグで穴を開けるフラグを提示する + public boolean isOpenFlag(int x) { + + if (count % 2 != 0) return false; + + if (values.get(count) <= x) { + count++; + return true; + } + return false; + } + + //--------------------------------------------------------------- + // 偶数番目のフラグで穴を閉じるフラグを提示する + public boolean isCloseFlag(int x) { + if (count % 2 == 0) return false; + if (values.get(count) <= x) { + count++; + return true; + } + return false; + } + } diff --git a/src/main/java/models/JumpGameModel.java b/src/main/java/models/JumpGameModel.java index 58ad441..6c730b9 100644 --- a/src/main/java/models/JumpGameModel.java +++ b/src/main/java/models/JumpGameModel.java @@ -3,6 +3,7 @@ import entities.*; import entities.modelExtentions.Flags; +import javax.swing.plaf.synth.SynthTextAreaUI; import java.io.IOException; import java.nio.charset.Charset; import java.nio.file.Files; @@ -87,9 +88,21 @@ public void updateGravity(double gravity) { this.time.gravity(gravity); this.force.gravity(gravity); + updateGroundFlag(); // System.out.println("swapWindow Gravity"); } + //--------------------------------------------------------------- + // + public void updateGroundFlag() { + int x = position.getValue().getFirst().intValue(); + + if (flags.isOpenFlag(x)) ground.openHole(); + if (flags.isCloseFlag(x)) ground.closeHole(); + + System.out.print("x: " + x + "/"); + System.out.println("Ground: " + ground.getValue()); + } //--------------------------------------------------------------- // diff --git a/src/main/java/views/TileMapRenderer.java b/src/main/java/views/TileMapRenderer.java index 677531d..ea57f3a 100644 --- a/src/main/java/views/TileMapRenderer.java +++ b/src/main/java/views/TileMapRenderer.java @@ -1,7 +1,9 @@ package views; import entities.Pair; +import entities.modelExtentions.Flags; import models.IModel; +import models.JumpGameModel; import java.util.ArrayList; @@ -15,8 +17,9 @@ //--------------------------------------------------------------- //--------------------------------------------------------------- - public TileMapRenderer(ArrayList flags) { - initTiles(flags); + public TileMapRenderer(IModel model) { + JumpGameModel jumpGameModel = (JumpGameModel) model; + initTiles(jumpGameModel.getFlags()); } //--------------------------------------------------------------- @@ -45,24 +48,24 @@ //-------------------------------------------------------------- //--------------------------------------------------------------- // 初期タイル作成 - private void initTiles(ArrayList flags) { + private void initTiles(Flags flags) { boolean isOpen = false; int space = 20; + // タイルマージン for (int i = 0; i < space; i++) { double x = 32 * newTile.getScaleValue() * i; - addNewTile(x, TileType.CLOSE); + if (i == 12) addNewTile(x, TileType.OPEN); + else addNewTile(x, TileType.CLOSE); } for (int i = 0; i < 100; i++) { double x = 32 * newTile.getScaleValue() * (i + space); + // フラグのチェック - System.out.println(isFlag(i, flags)); + if (flags.isFlag(i)) isOpen = !isOpen; - if (isFlag(i, flags)) { - isOpen = !isOpen; - } - + // タイルの切り替え if (isOpen) addNewTile(x, TileType.OPEN); else addNewTile(x, TileType.CLOSE); @@ -86,12 +89,4 @@ } //--------------------------------------------------------------- - //--------------------------------------------------------------- - // フラグのタイミングと一致しているかをチェック - private boolean isFlag(int timing, ArrayList flags) { - for (int flag : flags) - if (timing == flag) return true; - return false; - } - //--------------------------------------------------------------- } \ No newline at end of file