diff --git a/src/Images1/player_sliding.png b/src/Images1/player_sliding.png new file mode 100644 index 0000000000000000000000000000000000000000..57476f650e1d481d0c83eee28e6fbb8a315e73f0 Binary files /dev/null and b/src/Images1/player_sliding.png differ diff --git a/src/constants/Constants.java b/src/constants/Constants.java index 4524407f7b70b026e58a25b2994985f7dc403cf3..14901c40d1bebcd2922485529d14689bca3e4ba3 100644 --- a/src/constants/Constants.java +++ b/src/constants/Constants.java @@ -25,7 +25,7 @@ public interface Constants { final int screenHeight = 500; // Player - + String slidingPlayerImg = "src/Images1/player_sliding.png"; String playerImg = "src/Images1/player.png"; double playerWidth = 100; double playerHeight = 100; diff --git a/src/main/Main.java b/src/main/Main.java index 64200c3306d2a24e9ee69bfeb53d67ad4731f0f4..f3296ecc8e765e5c98bb649f267b1c0e1aaf5c50 100644 --- a/src/main/Main.java +++ b/src/main/Main.java @@ -64,6 +64,7 @@ public class Main extends Application { // We set up a setOnKeyPressed, to handle keyboard input, // like we had a onMouseClick in the canvas for the paint lab. gameScene.setOnKeyPressed(new EventHandler<KeyEvent>() { + @Override public void handle(KeyEvent event) { // We send it on to the model, to handle it in the various @@ -71,6 +72,8 @@ public class Main extends Application { model.keyPressed(event); } }); + + // We set an AnimationTimer, to control the flow of the game. new AnimationTimer() { diff --git a/src/states/PlayState.java b/src/states/PlayState.java index 47c4f85fc66de6a48ee8c5e796bece989028ac69..2697438138c7ba559bf116ea5cf337eabc7fc9a9 100644 --- a/src/states/PlayState.java +++ b/src/states/PlayState.java @@ -44,6 +44,7 @@ public class PlayState extends GameState { private Enemy enemy; private boolean collided = false; private boolean up = false; + private boolean down = false; private boolean gameOver = false; private MenuState menu; private HighScore score = new HighScore(); @@ -52,7 +53,9 @@ public class PlayState extends GameState { /* Class only used for testing */ - + +// TODO nästa steg, lägg in en flygande enemy för att testa glid funktionen, ändra boundsen på den glidande bilden! +// TODO kanske ta bort att skicka med image när man instansierar player public PlayState(GameModel model) { super(model); @@ -62,7 +65,7 @@ public class PlayState extends GameState { bgColor = Color.BEIGE; fontColor = Color.BLUE; scoreText = "Highscore: " + Integer.toString(score.getHighScore()); -// + Integer.toString(score.getHighScore()); + // + Integer.toString(score.getHighScore()); player = new Player(Constants.playerImg); enemy = new Enemy(Constants.enemyImg); @@ -107,18 +110,33 @@ public class PlayState extends GameState { } + @Override public void keyPressed(KeyEvent key) { - System.out.println("Trycker på " + key.getCode() + " i PlayState"); +// TODO gör om till case sats för att städa upp det lite, kladdigt atm + kan behöva flytta funktionalitet + if (key.getCode() == KeyCode.ESCAPE) { model.switchState(new MenuState(model)); } else if (key.getCode() == KeyCode.UP) { - up = true; - } + if (down) { + + player.standUp(); + down = false; + + } else { + + up = true; + + } + } else if (key.getCode() == KeyCode.DOWN) { + + down = true; + + } } @@ -131,17 +149,15 @@ public class PlayState extends GameState { if (!gameOver) { if ((enemy.getEnemyX() <= (player.getPlayerX() + 80)) && (enemy.getEnemyX() > player.getPlayerX())) { -// if (!collided && enemy.getEnemyX() > player.getPlayerX()) { - if (!collided) { + // if (!collided && enemy.getEnemyX() > player.getPlayerX()) { + if (!collided) { checkCollision(); } -// clearedEnemies ++; + // clearedEnemies ++; } if (collided && enemy.getEnemyX() < player.getPlayerX()) { collided = false; - } else if (!collided && enemy.getEnemyX() < player.getPlayerX()) { - clearedEnemies ++; } @@ -154,12 +170,17 @@ public class PlayState extends GameState { up = false; } + if (down) { + + player.slide(); + } + } } public void checkCollision() { - + // if ((enemy.getEnemyX() <= (player.getPlayerX() + 80)) && (enemy.getEnemyX() > player.getPlayerX()) && ((player.getPlayerY() + 60) >= enemy.getEnemyY() )) { // @@ -178,7 +199,7 @@ public class PlayState extends GameState { collided = true; // System.out.println("fäk"); if (Integer.valueOf(player.getLives()) == 1) { -// menu = new MenuState(model); + // menu = new MenuState(model); // model.switchState(menu); gameOver = true; score.saveScore(clearedEnemies); @@ -193,7 +214,7 @@ public class PlayState extends GameState { // } -// clearedEnemies ++; + // clearedEnemies ++; } diff --git a/src/states/Player.java b/src/states/Player.java index 3eef35d9274a3b56dd169cb3faaca4741a949130..a0ac4b74895d6eb32956f84f7c0de0709c5803de 100644 --- a/src/states/Player.java +++ b/src/states/Player.java @@ -12,6 +12,8 @@ import javafx.scene.input.KeyEvent; import javafx.scene.shape.Rectangle; public class Player { + +// TODO se över funktioner, kanske lättare att slå samman vissa private double playerX = (Constants.screenWidth - Constants.playerWidth) / 2; private double playerY = 265.00; @@ -20,34 +22,38 @@ public class Player { private Image image; private boolean down = false; private boolean up = false; -// private ImageView playerView; + private Image slidingImage; + private Image currImage = null; + // private ImageView playerView; public Player(String playerImg) { try { image = new Image(new FileInputStream(playerImg)); -// playerView = new ImageView(image); -// playerView.setX(playerX); -// playerView.setY(playerY); -// playerView.setFitHeight(Constants.playerHeight); -// playerView.setFitWidth(Constants.playerWidth); + slidingImage = new Image(new FileInputStream(Constants.slidingPlayerImg)); + // playerView = new ImageView(image); + // playerView.setX(playerX); + // playerView.setY(playerY); + // playerView.setFitHeight(Constants.playerHeight); + // playerView.setFitWidth(Constants.playerWidth); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } + currImage = image; } -// public ImageView getPlayerView() { -// return playerView; -// } + // public ImageView getPlayerView() { + // return playerView; + // } public Image getImage() { - return image; + return currImage; } @@ -106,6 +112,13 @@ public class Player { } + public void slide() { + + currImage = slidingImage; + + } + + public void setPlayerX(double playerX) { this.playerX = playerX; } @@ -116,4 +129,13 @@ public class Player { } + public void standUp() { + currImage = image; + + } + + + + + }