import models.IModel; import models.JumpGameModel; import org.lwjgl.glfw.GLFWKeyCallback; import views.IView; import views.PlayerRenderer; import views.TileMapRenderer; import static org.lwjgl.glfw.GLFW.*; import java.util.ArrayList; public class JumpGame { private ArrayList<IView> views = new ArrayList<>(); private IModel model = new JumpGameModel(); private GLFWKeyCallback keyCallback; //--------------------------------------------------------------- //--------------------------------------------------------------- // public void gravity(double y) { JumpGameModel jumpGameModel = (JumpGameModel) model; jumpGameModel.moveX(1); jumpGameModel.gravity(y); //重力の更新 jumpGameModel.updateGroundFlag();//地面の判定切り替え } //--------------------------------------------------------------- // 初期化 public void init() { // view views.add(new TileMapRenderer(model)); views.add(new PlayerRenderer("resources/JCasC.png")); } //--------------------------------------------------------------- // 更新処理 public void update(long window) { // Viewの更新 for (IView view : views) { JumpGameModel jumpGameModel = (JumpGameModel) model; view.update(model); 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; jumpGameModel.moveY(256); // System.out.println("jumping"); } } }); gravity(-256); //重力 } //--------------------------------------------------------------- // デストラクタのような処理 public void delete() { for (IView view : views) view.delete(); } //--------------------------------------------------------------- }