From db23ebc3d1f4c71891fb8cab27b11dede25838a2 Mon Sep 17 00:00:00 2001 From: Oscar Wiberg <oscarwiberg@Oscars-MacBook-Air-3.local> Date: Tue, 28 Nov 2023 20:26:27 +0100 Subject: [PATCH] Kollisions logik, max en krock per passering --- src/states/PlayState.java | 77 ++++++++++++++++++++++++++------------- src/states/Player.java | 3 +- 2 files changed, 53 insertions(+), 27 deletions(-) diff --git a/src/states/PlayState.java b/src/states/PlayState.java index 601cd26..f4624ad 100644 --- a/src/states/PlayState.java +++ b/src/states/PlayState.java @@ -40,6 +40,7 @@ public class PlayState extends GameState { private boolean up = false; private Player player; private Enemy enemy; + private boolean collided = false; /* Class only used for testing */ @@ -53,7 +54,7 @@ public class PlayState extends GameState { player = new Player(Constants.playerImg); enemy = new Enemy(Constants.enemyImg); - + } /** @@ -71,15 +72,15 @@ public class PlayState extends GameState { g.setLineDashes(2); g.strokeLine(Constants.screenWidth, 350, 0, 350); - + if (enemy.getEnemyX() < 0 - Constants.enemyWidth) { enemy.setEnemyX(Constants.screenWidth); } g.drawImage(player.getImage(), player.getPlayerX(), player.getPlayerY(), Constants.playerWidth, Constants.playerHeight); g.drawImage(enemy.getImage(), enemy.getEnemyX(), enemy.getEnemyY(), Constants.enemyWidth, Constants.enemyHeight); - - + + } @Override @@ -91,7 +92,7 @@ public class PlayState extends GameState { model.switchState(new MenuState(model)); } else if (key.getCode() == KeyCode.UP) { up = true; - + } @@ -99,39 +100,63 @@ public class PlayState extends GameState { @Override public void update() { + //om enemy position är mindre än player och collide är true kollar den inte collision + + if ((enemy.getEnemyX() <= (player.getPlayerX() + 80)) && (enemy.getEnemyX() > player.getPlayerX())) { + if (!collided && enemy.getEnemyX() > player.getPlayerX()) { + checkCollision(); + } + } + + if (collided && enemy.getEnemyX() < player.getPlayerX()) { + collided = false; + } + - checkCollision(); - enemy.setEnemyX(enemy.getEnemyX()-10); - + if (up) { player.jump(); } - + if (player.getPlayerY() == 265) { up = false; } - + } - + public void checkCollision() { - - - if ((enemy.getEnemyX() <= (player.getPlayerX() + 80)) && (enemy.getEnemyX() > player.getPlayerX())) { -// System.out.println("helo"); - if((player.getPlayerY() + 60) >= enemy.getEnemyY() ) { - System.out.println("fäk"); - player.decreaseLives(); - } - } - - - - // rita upp från player samt enemy x och y kordinater + eller - höjd och bredd, då får vi spannen som enemy och player bilderna befinner sig i - // nästlade if satser, först kolla om enemy befinner sig i mitten av skärmen på players x position, sen kollar vi om players y är större än enemy - + + + // if ((enemy.getEnemyX() <= (player.getPlayerX() + 80)) && (enemy.getEnemyX() > player.getPlayerX()) && ((player.getPlayerY() + 60) >= enemy.getEnemyY() )) { + // + // collided = true; + // System.out.println("helo"); + // // Sätta någon variabel till något värde. Om denna variabel eller boolean inte är tom nästa update så har en krock skett. + // + // } + // + // player.decreaseLives(collided); + + + // if ((enemy.getEnemyX() <= (player.getPlayerX() + 80)) && (enemy.getEnemyX() > player.getPlayerX())) { + // // System.out.println("helo"); + if((player.getPlayerY() + 60) >= enemy.getEnemyY() ) { + collided = true; + System.out.println("fäk"); + player.decreaseLives(); + System.out.println(player.getLives()); + + } + // System.out.println("slipped by enemy"); + // } + // } + + + + } diff --git a/src/states/Player.java b/src/states/Player.java index 6a73a96..84d9834 100644 --- a/src/states/Player.java +++ b/src/states/Player.java @@ -59,8 +59,9 @@ public class Player { public void decreaseLives() { + this.lives--; - System.out.println(this.lives); + } -- GitLab