diff --git a/.idea/libraries/org_junit_jupiter_junit_jupiter_5_4_2.xml b/.idea/libraries/org_junit_jupiter_junit_jupiter_5_4_2.xml
new file mode 100644
index 0000000..32de0a2
--- /dev/null
+++ b/.idea/libraries/org_junit_jupiter_junit_jupiter_5_4_2.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/jumpGame.iml b/jumpGame.iml
index 13770d9..6ba17f4 100644
--- a/jumpGame.iml
+++ b/jumpGame.iml
@@ -24,5 +24,6 @@
+
\ No newline at end of file
diff --git a/src/main/java/JumpGame.java b/src/main/java/JumpGame.java
index 612856d..6596763 100644
--- a/src/main/java/JumpGame.java
+++ b/src/main/java/JumpGame.java
@@ -7,10 +7,7 @@
import java.util.ArrayList;
public class JumpGame {
- //---------------------------------------------------------------
- //---------------------------------------------------------------
- // new
private ArrayList views = new ArrayList<>();
private IModel model = new JumpGameModel();
@@ -26,7 +23,7 @@
// 初期化
public void init() {
// view
- views.add(new TileMapRenderer());
+ views.add(new TileMapRenderer(((JumpGameModel) model).getFlags()));
views.add(new PlayerRenderer("resources/chicken.png"));
}
@@ -34,22 +31,12 @@
// 更新処理
public void update() {
- JumpGameModel jumpGameModel = (JumpGameModel) model;
-
// Viewの更新
for (IView view : views) {
view.update(model);
view.display();
}
- // ステージが排出する地形データを切り替える
- if (jumpGameModel.isTimingOfChangeTile()) {
- jumpGameModel.changeTileType();
-
- TileMapRenderer tileMapRenderer = (TileMapRenderer) views.get(0);
- tileMapRenderer.createTile(jumpGameModel.getTileType());
- }
-
// Modelの更新
//
// Space キーのインプット
diff --git a/src/main/java/entities/Image2D.java b/src/main/java/entities/Image2D.java
index bbbc877..641b827 100644
--- a/src/main/java/entities/Image2D.java
+++ b/src/main/java/entities/Image2D.java
@@ -7,7 +7,7 @@
public class Image2D {
private int id; // テクスチャのID
- private Pair wh; // スプライトの幅高
+ private Pair spriteSize; // スプライトの幅高
private Pair position; // スプライトの座標(画面座標)
private Color color; // スプライトの色
private double rotation; // 回転(度)
@@ -27,9 +27,9 @@
this.color = new Color(1, 1, 1, 1);
if (tex != null)
- wh = new Pair<>((double) tex.getWidth(), (double) tex.getHeight());
+ spriteSize = new Pair<>((double) tex.getWidth(), (double) tex.getHeight());
else
- wh = new Pair<>(32d, 20d);
+ spriteSize = new Pair<>(32d, 20d);
rotation = 0.0;
scale = 1.0;
alpha = 1.0;
@@ -83,13 +83,13 @@
// ポリゴンの作成とテクスチャの適応
glBegin(GL_TRIANGLE_STRIP);
glTexCoord2d(0, 0);
- glVertex2d(-wh.getFirst() / 2, wh.getSecond() / 2);
+ glVertex2d(-spriteSize.getFirst() / 2, spriteSize.getSecond() / 2);
glTexCoord2d(0, 1);
- glVertex2d(-wh.getFirst() / 2, -wh.getSecond() / 2);
+ glVertex2d(-spriteSize.getFirst() / 2, -spriteSize.getSecond() / 2);
glTexCoord2d(1, 0);
- glVertex2d(wh.getFirst() / 2, wh.getSecond() / 2);
+ glVertex2d(spriteSize.getFirst() / 2, spriteSize.getSecond() / 2);
glTexCoord2d(1, 1);
- glVertex2d(wh.getFirst() / 2, -wh.getSecond() / 2);
+ glVertex2d(spriteSize.getFirst() / 2, -spriteSize.getSecond() / 2);
glEnd();
// 行列の破棄
diff --git a/src/main/java/entities/TileType.java b/src/main/java/entities/TileType.java
index 178adc0..c1b45c9 100644
--- a/src/main/java/entities/TileType.java
+++ b/src/main/java/entities/TileType.java
@@ -4,16 +4,8 @@
// タイルの種類の定数クラス
public enum TileType {
- CLOSE(true),
- OPEN(false);
-
- private final boolean isClose;
-
- //---------------------------------------------------------------
- //---------------------------------------------------------------
- private TileType(boolean isClose) {
- this.isClose = isClose;
- }
+ CLOSE,
+ OPEN;
//---------------------------------------------------------------
}
diff --git a/src/main/java/models/JumpGameModel.java b/src/main/java/models/JumpGameModel.java
index 5ea8e35..95ade5e 100644
--- a/src/main/java/models/JumpGameModel.java
+++ b/src/main/java/models/JumpGameModel.java
@@ -16,8 +16,7 @@
//---------------------------------------------------------------
//
public class JumpGameModel implements IModel {
- //---------------------------------------------------------------
- //
+
private Acceleration acceleration;
private Force force;
private Mass mass;
@@ -38,7 +37,7 @@
private double jumpPower = 32;
//---------------------------------------------------------------
- private ArrayList flagTimings = new ArrayList<>(); // フラグ切り替え
+ private ArrayList flagTimings; // フラグ切り替え
private boolean tileType = true;
private int flag = 0;
@@ -72,6 +71,10 @@
return position;
}
+ public ArrayList getFlags() {
+ return flagTimings;
+ }
+
public Ground getGround() {
return ground;
}
@@ -92,22 +95,6 @@
}
//---------------------------------------------------------------
- //
- public boolean isTimingOfChangeTile() {
- if (time.getValue() <= 0) return false;
- return (time.getValue() % 32 == 0);
- }
-
- //---------------------------------------------------------------
- // タイルの種類を切り替える
- public void changeTileType() {
- if(flagTimings.size() <= flag)return;
- if (flagTimings.get(flag) % 2 == 0) tileType = !tileType;
-
- if (flag < flagTimings.size()) flag++;
- }
-
- //---------------------------------------------------------------
//---------------------------------------------------------------
// ステージデータの読み込み
private ArrayList loadText() {
@@ -118,8 +105,8 @@
try {
List lines = Files.readAllLines(file, Charset.forName("Shift-JIS"));
- for (int i = 0; i < lines.size(); i++) data = lines.get(i).split(",");
+ for (int i = 0; i < lines.size(); i++) data = lines.get(i).split(",");
for (int i = 0; i < data.length; i++) flagTimings.add(Integer.parseInt(data[i]));
} catch (IOException e) {
@@ -129,6 +116,12 @@
return flagTimings;
}
+ //---------------------------------------------------------------
+ //
+ private void init() {
+
+ }
+
//---------------------------------------------------------------
}
diff --git a/src/main/java/views/TileMapRenderer.java b/src/main/java/views/TileMapRenderer.java
index eca13d2..ea006b9 100644
--- a/src/main/java/views/TileMapRenderer.java
+++ b/src/main/java/views/TileMapRenderer.java
@@ -1,6 +1,5 @@
package views;
-import entities.GLConfigVariable;
import entities.Pair;
import entities.TileType;
import models.IModel;
@@ -17,8 +16,8 @@
//---------------------------------------------------------------
//---------------------------------------------------------------
- public TileMapRenderer() {
- initTiles();
+ public TileMapRenderer(ArrayList flags) {
+ initTiles(flags);
}
//---------------------------------------------------------------
@@ -47,28 +46,48 @@
//--------------------------------------------------------------
//---------------------------------------------------------------
// 初期タイル作成
- private void initTiles() {
- for (int i = 0; i < 20; i++) {
- double x = 32 * newTile.getScaleValue() * i;
+ private void initTiles(ArrayList flags) {
+ boolean isOpen = false;
+ int space = 20;
- newTile = new TileRenderer("resources/tile.png", new Pair<>(x, offsetY));
- newTile.setScaleValue(2);
- tiles.add(newTile);
+ for (int i = 0; i < space; i++) {
+ double x = 32 * newTile.getScaleValue() * i;
+ addNewTile(x, TileType.CLOSE);
+ }
+
+ for (int i = 0; i < 100; i++) {
+ double x = 32 * newTile.getScaleValue() * (i + space);
+
+ // フラグのチェック
+ if (isFlag(i, flags)) isOpen = !isOpen;
+ if (isOpen) addNewTile(x, TileType.OPEN);
+ else addNewTile(x, TileType.CLOSE);
+
}
}
//--------------------------------------------------------------
// タイルをフラグに応じて生成する
- public void createTile(boolean tileType) {
+ private void addNewTile(double x, TileType tileType) {
- if (tileType)
- newTile = new TileRenderer("resources/tile.png", new Pair<>((double) GLConfigVariable.WIDTH, offsetY), 2);
- else
- newTile = new TileRenderer("resources/hole.png", new Pair<>((double) GLConfigVariable.WIDTH, offsetY), 2);
-
+ switch (tileType) {
+ case CLOSE:
+ newTile = new TileRenderer("resources/tile.png", new Pair<>(x, offsetY), 2);
+ break;
+ case OPEN:
+ newTile = new TileRenderer("resources/hole.png", new Pair<>(x, offsetY), 2);
+ break;
+ }
tiles.add(newTile);
System.out.println("New tile created.");
}
-//---------------------------------------------------------------
+ //---------------------------------------------------------------
+ //---------------------------------------------------------------
+ // フラグのタイミングと一致しているかをチェック
+ private boolean isFlag(int timing, ArrayList flags) {
+ for (int flag : flags) return (timing == flag);
+ return false;
+ }
+ //---------------------------------------------------------------
}
\ No newline at end of file
diff --git a/src/test/java/TextLoadTest.java b/src/test/java/TextLoadTest.java
new file mode 100644
index 0000000..366316f
--- /dev/null
+++ b/src/test/java/TextLoadTest.java
@@ -0,0 +1,12 @@
+import models.JumpGameModel;
+import org.junit.jupiter.api.Test;
+
+public class TextLoadTest {
+ @Test
+ public void Test() {
+ JumpGameModel model = new JumpGameModel();
+ for (int i = 0; i < model.getFlags().size(); i++) System.out.println("flag: " + model.getFlags().get(i));
+
+ }
+
+}