Skip to content
Snippets Groups Projects
Commit 1ab3c635 authored by Oscar Wiberg's avatar Oscar Wiberg
Browse files

lite cleanup för att komma tillbaks på rätt spår

parent 41928171
Branches
No related tags found
1 merge request!1Testb
18
\ No newline at end of file
4
\ No newline at end of file
src/Images1/player2.png

90.7 KiB

src/Images1/player2_sliding.png

99 KiB

......@@ -27,6 +27,8 @@ public interface Constants {
// Player
String slidingPlayerImg = "src/Images1/player_sliding.png";
String playerImg = "src/Images1/player.png";
String slidingPlayerImg2 = "src/Images1/player2_sliding.png";
String playerImg2 = "src/Images1/player2.png";
double playerWidth = 100;
double playerHeight = 100;
......
......@@ -27,6 +27,18 @@ public abstract class Antagonist {
}
}
public Antagonist(String image) {
this.collisionDetected = false;
try {
this.img = new Image(new FileInputStream(image));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public abstract boolean playerAntagonistCollision(Player player);
public void setAntagonistX(double pos) {
......
......@@ -8,70 +8,66 @@ import constants.Constants;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
public class Enemy {
public class Enemy extends Antagonist{
private double enemyX = -100.00;
private double enemyY = 250.00;
private Image image;
private ImageView enemyView;
public Enemy(String enemyImg) {
public Enemy(String enemyImg, double x, double y) {
super(enemyImg, x, y);
try {
image = new Image(new FileInputStream(enemyImg));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// if (collided && enemy.getEnemyX() < player.getPlayerX()) {
// collided = false;
// }
public boolean playerEnemyCollision(Player player) {
boolean hit = false;
if ((enemyX < (player.getPlayerX() + 80.00)) && ((enemyX) > player.getPlayerX())) { //borde vara +80 på enemyx men funkar ej
// if((player.getPlayerY() + 60.00) >= enemyY) {
// if((player.getPlayerY() + 60.00) >= enemyY) {
// if ((enemyY + 80 > (player.getPlayerY())) && ((player.getPlayerY() + 80) > enemyY)) {
@Override
public boolean playerAntagonistCollision(Player player) {
// boolean hit = false;
boolean collisionX = player.getPlayerX() < (x + 60.00) && (player.getPlayerX() + 60.00) > x;
// Check for collision on the y-axis
boolean collisionY = player.getPlayerY() < (y + 45.00) && (player.getPlayerY() + 60.00) > y;
if (collisionY && collisionX && !collisionDetected) {
player.decreaseLives();
collisionDetected = true;
return true;
}
if (!collisionX) {
collisionDetected = false;
}
return false;
// if ((enemyX < (player.getPlayerX() + 80.00)) && ((enemyX) > player.getPlayerX())) { //borde vara +80 på enemyx men funkar ej
//// if((player.getPlayerY() + 60.00) >= enemyY) {
//// if((player.getPlayerY() + 60.00) >= enemyY) {
// // if ((enemyY + 80 > (player.getPlayerY())) && ((player.getPlayerY() + 80) > enemyY)) {
// hit = true;
// player.decreaseLives();
//// if (hit && enemyX < player.getPlayerX() + 100) {
//// hit = false;
//// }
//
// }
//
// System.out.println("helooooooooo");
//
// return hit;
}
hit = true;
player.decreaseLives();
// if (hit && enemyX < player.getPlayerX() + 100) {
// hit = false;
// }
}
return hit;
}
public void setEnemyX(double pos) {
this.enemyX = pos;
}
public Image getImage() {
return image;
}
public double getEnemyX() {
return enemyX;
}
public ImageView getEnemyView() {
return enemyView;
}
public double getEnemyY() {
return enemyY;
@Override
public double getY() {
return y;
}
......
......@@ -64,6 +64,15 @@ public class FlyingEnemy extends Antagonist{
// //
// }
public FlyingEnemy(String enemyImg) {
super(enemyImg);
this.enemyY = new ArrayList<Double>();
// this.enemyY.add(200.00);
this.enemyY.add(210.00);
// this.enemyY.add(220.00);
this.enemyY.add(250.00);
}
@Override
public boolean playerAntagonistCollision(Player player) {
// boolean hit = false;
......@@ -73,10 +82,10 @@ public class FlyingEnemy extends Antagonist{
// // Check for collision on the y-axis
// boolean collisionY = player.getPlayerY() < (currY + Constants.enemyHeight) && (player.getPlayerY() + Constants.playerHeight) > currY;
boolean collisionX = player.getPlayerX() < (x + 60) && (player.getPlayerX() + 60) > x;
boolean collisionX = player.getPlayerX() < (x + 60.00) && (player.getPlayerX() + 60.00) > x;
// Check for collision on the y-axis
boolean collisionY = player.getPlayerY() < (currY + 60) && (player.getPlayerY() + 60) > currY;
boolean collisionY = player.getPlayerY() < (currY + 45.00) && (player.getPlayerY() + 60.00) > currY;
if (collisionX && collisionY && !collisionDetected) {
......
......@@ -31,11 +31,11 @@ public class MenuState extends GameState {
// A PlayState, so we can change to the PlayState from the menu.
private PlayState playState;
private Image dinosaur;
private boolean mode1;
public MenuState(GameModel model) {
super(model);
playState = new PlayState(model);
informationText = "Welcome to the Dino game!\nTo play, press ENTER for mode 1 or SPACE for mode 2\nEscape to exit game";
informationText = "Welcome to the Dino game!\nTo play, press 1 for mode 1 or 2 for mode 2\nEscape to exit game";
bgColor = Color.GREY;
fontColor = Color.LIGHTBLUE;
......@@ -70,11 +70,18 @@ public class MenuState extends GameState {
public void keyPressed(KeyEvent key) {
System.out.println("Trycker på " + key.getText() + " i MenuState");
if (key.getCode() == KeyCode.ENTER) {
if (key.getCode() == KeyCode.DIGIT1) {
mode1 = true;
playState = new PlayState(model, mode1);
model.switchState(playState);
} else if (key.getCode() == KeyCode.DIGIT2) {
mode1 = false;
playState = new PlayState(model, mode1);
model.switchState(playState);
} else if (key.getCode() == KeyCode.ESCAPE) {
System.exit(0);
}
}
@Override
......
......@@ -41,6 +41,7 @@ public class PlayState extends GameState {
private String livesleft;
private String gameOverText;
private Color bgColor;
private Color lineColor;
private Color fontColor;
private Player player;
private Enemy enemy;
......@@ -56,6 +57,7 @@ public class PlayState extends GameState {
private FlyingEnemy flyingEnemy;
private double tempy;
private Random engen;
private String slidingPlayer;
/* Class only used for testing */
......@@ -63,22 +65,49 @@ public class PlayState extends GameState {
// 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) {
public PlayState(GameModel model, boolean mode) {
super(model);
informationText = "Press Escape \nTo Return To The Menu";
livesleft = "Lives left: ";
gameOverText = "GAMEOVER\n" + informationText;
bgColor = Color.BEIGE;
fontColor = Color.BLUE;
fontColor = Color.BLACK;
scoreText = "Highscore: " + Integer.toString(score.getHighScore());
// + Integer.toString(score.getHighScore());
if (mode) {
mode1();
} else {
mode2();
}
// menu = new MenuState(model);
}
public void mode1() {
player = new Player(Constants.playerImg);
enemy = new Enemy(Constants.enemyImg);
slidingPlayer = Constants.slidingPlayerImg;
enemy = new Enemy(Constants.enemyImg, 800.00, 250.00);
extraLife = new ExtraLifePowerUp(Constants.lifeImg);
flyingEnemy = new FlyingEnemy(Constants.flyingEnemyImg, 800.00, 0.00);
flyingEnemy = new FlyingEnemy(Constants.flyingEnemyImg);
flyingEnemy.setAntagonistX(800.00);
tempy = flyingEnemy.getY();
bgColor = Color.ROYALBLUE;
lineColor = Color.WHITE;
}
public void mode2() {
player = new Player(Constants.playerImg2);
slidingPlayer = Constants.slidingPlayerImg2;
enemy = new Enemy(Constants.enemyImg, 800.00, 250.00);
extraLife = new ExtraLifePowerUp(Constants.lifeImg);
flyingEnemy = new FlyingEnemy(Constants.flyingEnemyImg);
flyingEnemy.setAntagonistX(800.00);
tempy = flyingEnemy.getY();
bgColor = Color.BEIGE;
lineColor = Color.BLACK;
// menu = new MenuState(model);
}
......@@ -104,19 +133,18 @@ public class PlayState extends GameState {
// ritar ut marklinjen
g.setStroke(Color.BLACK);
g.setStroke(lineColor);
g.setLineWidth(1);
g.setLineDashes(2);
g.strokeLine(Constants.screenWidth, 350, 0, 350);
// om enemy är ute ur frame, ställer dem om positionen på den så att den börjar om
// om enemy är ute ur frame, ställer dem om positionen på den så att1
// Ritar enemy och player
// g.drawImage(extraLife.getImage(), extraLife.getPowerUpX(), extraLife.getPowerUpY(), 40, 40);
// g.drawImage(extraLife.getImage(), extraLife.getPowerUpX(), extraLife.getPowerUpY(), 40, 40);
g.drawImage(player.getImage(), player.getPlayerX(), player.getPlayerY(), Constants.playerWidth, Constants.playerHeight);
// g.drawImage(enemy.getImage(), enemy.getEnemyX(), enemy.getEnemyY(), Constants.enemyWidth, Constants.enemyHeight);
// g.drawImage(enemy.getImage(), enemy.getEnemyX(), enemy.getEnemyY(), Constants.enemyWidth, Constants.enemyHeight);
drawEnemy(g);
// TODO kanske göra en random här också, som väljer om vi ska rita de olika enemies eller powerupsen. Vid en viss score
......@@ -127,49 +155,28 @@ public class PlayState extends GameState {
public void drawEnemy(GraphicsContext g) {
engen = new Random();
//
// if (player.getPasses() > 5) {
// boolean b = engen.nextBoolean();
// System.out.println(b);
//
// if (b) {
g.drawImage(flyingEnemy.getImage(), flyingEnemy.getX(), tempy, 80, 80);
if (flyingEnemy.getX() < 0 - Constants.enemyWidth) {
flyingEnemy.setAntagonistX(Constants.screenWidth);
tempy = flyingEnemy.getY();
player.updatePasses(1);
}
// } else if (!b){
// g.drawImage(enemy.getImage(), enemy.getEnemyX(), enemy.getEnemyY(), Constants.enemyWidth, Constants.enemyHeight);
// if (enemy.getEnemyX() < 0 - Constants.enemyWidth) {
// enemy.setEnemyX(Constants.screenWidth);
// player.updatePasses(1);
// }
// }
// } else {
// g.drawImage(enemy.getImage(), enemy.getEnemyX(), enemy.getEnemyY(), Constants.enemyWidth, Constants.enemyHeight);
// if (enemy.getEnemyX() < 0 - Constants.enemyWidth) {
// enemy.setEnemyX(Constants.screenWidth);
// player.updatePasses(1);
// }
g.drawImage(enemy.getImage(), enemy.getX(), enemy.getY(), Constants.enemyWidth, Constants.enemyHeight);
if (enemy.getX() < 0 - Constants.enemyWidth) {
enemy.setAntagonistX(Constants.screenWidth);
player.updatePasses(1);
}
}
// }
// enemy = new Enemy(Constants.enemyImg);
//TODO om score är större än visst antal --> lotta mellan flying och vanlig, vi kan göra en random med 2 int, ochberoende på vad den blir kan vi rita en
//TODO göra en variabel för y positionen som hämtas om vi ritar flygande, för att den ska behålla samma position på hela y axeln
//TODO om score är större än visst antal --> lotta mellan flying och vanlig, vi kan göra en random med 2 int, ochberoende på vad den blir kan vi rita en
//TODO göra en variabel för y positionen som hämtas om vi ritar flygande, för att den ska behålla samma position på hela y axeln
......@@ -177,7 +184,6 @@ public class PlayState extends GameState {
}
@Override
......@@ -220,41 +226,28 @@ public class PlayState extends GameState {
public void update() {
//om enemy position är mindre än player och collide är true kollar den inte collision
clearedEnemies ++;
// Enemy hoppar 10 snäpp till vänster för varje update
// enemy.setEnemyX(enemy.getEnemyX()-10);
flyingEnemy.setAntagonistX(flyingEnemy.getX() -10);
enemy.setAntagonistX(enemy.getX()-10);
// flyingEnemy.setAntagonistX(flyingEnemy.getX() -10);
// Om
if (!gameOver) {
if (!collided) {
// collided = enemy.playerEnemyCollision(player);
collided = flyingEnemy.playerAntagonistCollision(player);
collided = enemy.playerAntagonistCollision(player);
if (Integer.valueOf(player.getLives()) == 0) {
gameOver = true;
}
}
}
if (collided && flyingEnemy.getX() < player.getPlayerX()) {
if (collided && enemy.getX() < player.getPlayerX()) {
collided = false;
}
//// Så länge enemy och player har överlappande X koordinat(och inte redan har kolliderat), kollar vi om dem kolliderar på Y axeln
// if ((enemy.getEnemyX() <= (player.getPlayerX() + 80)) && (enemy.getEnemyX() > player.getPlayerX())) {
// // if (!collided && enemy.getEnemyX() > player.getPlayerX()) {
// if (!collided) {
// checkCollision();
// }
// // clearedEnemies ++;
// }
//
// if (collided && enemy.getEnemyX() < player.getPlayerX()) {
// collided = false;
// }
if (up) {
......@@ -267,53 +260,14 @@ public class PlayState extends GameState {
if (down) {
player.slide();
player.slide(slidingPlayer);
}
}
}
public void checkCollision() {
// Om vi kolliderar på Y axeln
// 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");
if (Integer.valueOf(player.getLives()) == 1) {
// menu = new MenuState(model);
// model.switchState(menu);
gameOver = true;
score.saveScore(clearedEnemies);
}
player.decreaseLives();
// System.out.println(player.getLives());
}
// System.out.println("slipped by enemy");
// }
// }
// clearedEnemies ++;
}
......
......@@ -28,6 +28,14 @@ public class Player {
// private ImageView playerView;
// public double getPlayerHeight() {
// return playerHeight;
// }
public int getPasses() {
return passes;
}
......@@ -48,7 +56,7 @@ public class Player {
try {
image = new Image(new FileInputStream(playerImg));
slidingImage = new Image(new FileInputStream(Constants.slidingPlayerImg));
//slidingImage = new Image(new FileInputStream(Constants.slidingPlayerImg));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
......@@ -123,9 +131,19 @@ public class Player {
}
public void slide() {
public void slide(String img) {
try {
slidingImage = new Image(new FileInputStream(img));
//slidingImage = new Image(new FileInputStream(Constants.slidingPlayerImg));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
currImage = slidingImage;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment