diff --git a/resources/JCasC.png b/resources/JCasC.png new file mode 100644 index 0000000..24bc14c --- /dev/null +++ b/resources/JCasC.png Binary files differ diff --git a/resources/bg.png b/resources/bg.png new file mode 100644 index 0000000..0695991 --- /dev/null +++ b/resources/bg.png Binary files differ diff --git a/src/main/java/GameEngine.java b/src/main/java/GameEngine.java index 0ecdb1f..1a3f5ab 100644 --- a/src/main/java/GameEngine.java +++ b/src/main/java/GameEngine.java @@ -1,3 +1,7 @@ +import models.JumpGameModel; +import org.lwjgl.glfw.GLFWKeyCallback; + +import static org.lwjgl.glfw.GLFW.*; import static org.lwjgl.opengl.GL11.*; //--------------------------------------------------------------- diff --git a/src/main/java/JumpGame.java b/src/main/java/JumpGame.java index 2360302..bfbf201 100644 --- a/src/main/java/JumpGame.java +++ b/src/main/java/JumpGame.java @@ -2,6 +2,7 @@ import models.JumpGameModel; import org.lwjgl.glfw.GLFW; import org.lwjgl.glfw.GLFWKeyCallback; +import views.BackgroundRenderer; import views.IView; import views.PlayerRenderer; import views.TileMapRenderer; @@ -25,15 +26,17 @@ // public void gravity(double y) { JumpGameModel jumpGameModel = (JumpGameModel) model; - jumpGameModel.updateGravity(y); + jumpGameModel.updateGravity(y); //重力の更新 + jumpGameModel.updateGroundFlag();//地面の判定切り替え } //--------------------------------------------------------------- // 初期化 public void init() { // view + views.add(new BackgroundRenderer("resources/bg.png")); views.add(new TileMapRenderer(model)); - views.add(new PlayerRenderer("resources/chicken.png")); + views.add(new PlayerRenderer("resources/JCasC.png")); } //--------------------------------------------------------------- @@ -46,22 +49,19 @@ view.display(); } - // Modelの更新 // Space キーのインプット glfwSetKeyCallback(window, keyCallback = new GLFWKeyCallback() { @Override public void invoke(long window, int key, int scancode, int action, int mods) { - if(key == GLFW_KEY_SPACE && action != GLFW_PRESS){ - JumpGameModel jumpGameModel = (JumpGameModel)model; + if (key == GLFW_KEY_SPACE && action != GLFW_PRESS) { + JumpGameModel jumpGameModel = (JumpGameModel) model; jumpGameModel.jump(); - System.out.println("jumping"); +// System.out.println("jumping"); } } }); - - // マイフレーム更新 gravity(-256); //重力 } diff --git a/src/main/java/Main.java b/src/main/java/Main.java index f51def6..b0f671e 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,3 +1,6 @@ +import javax.swing.*; +import java.awt.*; + //--------------------------------------------------------------- // 実行本体 public class Main extends GameEngine { diff --git a/src/main/java/entities/modelExtentions/Flags.java b/src/main/java/entities/modelExtentions/Flags.java index 7e0e0f0..95f5d80 100644 --- a/src/main/java/entities/modelExtentions/Flags.java +++ b/src/main/java/entities/modelExtentions/Flags.java @@ -49,11 +49,12 @@ //--------------------------------------------------------------- // 奇数番目のフラグで穴を開けるフラグを提示する - public boolean isOpenFlag(int x) { + public boolean isOpenFlag(double x) { if (count % 2 != 0) return false; - if (values.get(count) <= x) { + double cx = (double) values.get(count) - 0.5; + if (cx <= x) { if (count < values.size() - 1) count++; return true; } @@ -62,9 +63,11 @@ //--------------------------------------------------------------- // 偶数番目のフラグで穴を閉じるフラグを提示する - public boolean isCloseFlag(int x) { + public boolean isCloseFlag(double x) { if (count % 2 == 0) return false; - if (values.get(count) <= x) { + + double cx = (double) values.get(count) - 0.5; + if (cx <= x + 0.25) { if (count < values.size() - 1) count++; return true; } diff --git a/src/main/java/models/JumpGameModel.java b/src/main/java/models/JumpGameModel.java index c708473..6f35976 100644 --- a/src/main/java/models/JumpGameModel.java +++ b/src/main/java/models/JumpGameModel.java @@ -37,7 +37,6 @@ //--------------------------------------------------------------- private Flags flags; - private boolean tileType = true; //--------------------------------------------------------------- //--------------------------------------------------------------- @@ -88,24 +87,29 @@ 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(); + double x = position.getValue().getFirst(); if (flags.isOpenFlag(x)) ground.openHole(); if (flags.isCloseFlag(x)) ground.closeHole(); System.out.print("x: " + x + "/"); - System.out.println("Ground: " + ground.getValue()); + System.out.println("Ground: " + ground.getValue() + "/"); +// System.out.print("Clear: " + clear.getClear() + "/"); +// System.out.println("GameOver: " + gameover.getGameover()); + } //--------------------------------------------------------------- // + + //--------------------------------------------------------------- + // private void init() { } diff --git a/src/main/java/views/BackgroundRenderer.java b/src/main/java/views/BackgroundRenderer.java new file mode 100644 index 0000000..4668cac --- /dev/null +++ b/src/main/java/views/BackgroundRenderer.java @@ -0,0 +1,41 @@ +package views; + +import entities.Pair; +import models.IModel; + +//--------------------------------------------------------------- +// +public class BackgroundRenderer implements IView { + + private Sprite sprite; + + //--------------------------------------------------------------- + //--------------------------------------------------------------- + // + public BackgroundRenderer(String path) { + this.sprite = new Sprite(path); + this.sprite.setScaleValue(1); + this.sprite.setPositionValue(new Pair<>(640d, 480d)); + } + + //--------------------------------------------------------------- + //--------------------------------------------------------------- + // + @Override + public void update(IModel model) { + } + + //--------------------------------------------------------------- + // + @Override + public void display() { + sprite.draw(); + } + + //--------------------------------------------------------------- + // + @Override + public void delete() { + sprite.delete(); + } +} diff --git a/src/main/java/views/PlayerRenderer.java b/src/main/java/views/PlayerRenderer.java index 011130a..f0a9772 100644 --- a/src/main/java/views/PlayerRenderer.java +++ b/src/main/java/views/PlayerRenderer.java @@ -12,9 +12,10 @@ //--------------------------------------------------------------- //--------------------------------------------------------------- + // public PlayerRenderer(String path) { this.sprite = new Sprite(path); - this.sprite.setScaleValue(1); + this.sprite.setScaleValue(0.1); this.sprite.setPositionValue(new Pair<>(640d, 480d)); } @@ -26,7 +27,7 @@ JumpGameModel jumpGameModel = (JumpGameModel) model; double x = this.sprite.getPositionValue().getFirst(); - double y = 128 + jumpGameModel.getPosition().getValue().getSecond(); + double y = 112 + jumpGameModel.getPosition().getValue().getSecond(); this.sprite.setPositionValue(new Pair<>(x, y)); } diff --git a/src/main/java/views/TileMapRenderer.java b/src/main/java/views/TileMapRenderer.java index 4aacf70..cff741f 100644 --- a/src/main/java/views/TileMapRenderer.java +++ b/src/main/java/views/TileMapRenderer.java @@ -59,7 +59,7 @@ else addNewTile(x, TileType.CLOSE); } - for (int i = 0; i < 100; i++) { + for (int i = 0; i < 120; i++) { double x = 32 * newTile.getScaleValue() * (i + space); // フラグのチェック diff --git a/src/main/java/views/TileRenderer.java b/src/main/java/views/TileRenderer.java index 0c81428..52b9a2d 100644 --- a/src/main/java/views/TileRenderer.java +++ b/src/main/java/views/TileRenderer.java @@ -10,7 +10,7 @@ // タイルの描画 public class TileRenderer implements IView { private Sprite sprite; - private Pair initPositionValue = new Pair<>(0d,0d); + private Pair initPositionValue; //--------------------------------------------------------------- //--------------------------------------------------------------- @@ -50,7 +50,11 @@ @Override public void update(IModel model) { JumpGameModel jumpGameModel = (JumpGameModel) model; - subPositionByPosition(jumpGameModel.getPosition().getValue()); + + Double x = this.initPositionValue.getFirst() - (jumpGameModel.getPosition().getValue().getFirst() * 64); + Double y = this.sprite.getPositionValue().getSecond(); + + this.sprite.setPositionValue(new Pair<>(x, y)); } //--------------------------------------------------------------- @@ -66,13 +70,4 @@ public void delete() { sprite.delete(); } - - //--------------------------------------------------------------- - //--------------------------------------------------------------- - // - private void subPositionByPosition(Pair position) { - Double x = this.initPositionValue.getFirst() - (position.getFirst() * 64); - Double y = this.sprite.getPositionValue().getSecond(); - this.sprite.setPositionValue(new Pair<>(x, y)); - } }