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

ändring klass struktur

parent fd624e8f
No related branches found
No related tags found
1 merge request!1Testb
3 18
\ No newline at end of file \ No newline at end of file
src/Images1/Voltage Emoji.png

33.4 KiB

package states;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import javafx.scene.image.Image;
public abstract class Antagonist {
protected double x;
protected double y;
protected Image img;
protected boolean collisionDetected;
public Antagonist(String image, double x, double y) {
this.x = x;
this.y = y;
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) {
this.x = pos;
}
public double getX() {
return x;
}
public abstract double getY();
public Image getImage() {
return img;
}
}
package states; package states;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import constants.Constants; import constants.Constants;
...@@ -18,7 +19,7 @@ public class Enemy { ...@@ -18,7 +19,7 @@ public class Enemy {
try { try {
image = new Image(new FileInputStream(enemyImg)); image = new Image(new FileInputStream(enemyImg));
} catch (FileNotFoundException e) { } catch (FileNotFoundException e) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
...@@ -32,15 +33,19 @@ public class Enemy { ...@@ -32,15 +33,19 @@ public class Enemy {
public boolean playerEnemyCollision(Player player) { public boolean playerEnemyCollision(Player player) {
boolean hit = false; boolean hit = false;
if ((enemyX <= (player.getPlayerX() + 80)) && (enemyX > player.getPlayerX())) { if ((enemyX < (player.getPlayerX() + 80.00)) && ((enemyX) > player.getPlayerX())) { //borde vara +80 på enemyx men funkar ej
if((player.getPlayerY() + 60) >= enemyY) { // if((player.getPlayerY() + 60.00) >= enemyY) {
// if((player.getPlayerY() + 60.00) >= enemyY) {
// if ((enemyY + 80 > (player.getPlayerY())) && ((player.getPlayerY() + 80) > enemyY)) {
hit = true; hit = true;
player.decreaseLives(); player.decreaseLives();
// if (hit && enemyX < player.getPlayerX()) { // if (hit && enemyX < player.getPlayerX() + 100) {
// hit = false; // hit = false;
// } // }
} }
}
return hit; return hit;
} }
......
package states; package states;
import java.util.ArrayList; import java.util.ArrayList;
import constants.Constants;
import java.util.Random; import java.util.Random;
import javafx.scene.image.Image; import javafx.scene.image.Image;
public class FlyingEnemy extends Enemy{ public class FlyingEnemy extends Antagonist{
// private double enemyX = -100.00; // private double enemyX = 800.00;
private ArrayList<Double> enemyY; private ArrayList<Double> enemyY;
// = {250, 200, 150,100}; private double currY;
// private Image image;
private Random rnd = new Random(); private Random rnd = new Random();
public FlyingEnemy(String enemyImg) { public FlyingEnemy(String enemyImg, double x, double y) {
super(enemyImg); super(enemyImg, x, y);
enemyY = new ArrayList<Double>(); this.enemyY = new ArrayList<Double>();
enemyY.add(100.0); this.enemyY.add(150.0);
enemyY.add(150.0); this.enemyY.add(180.0);
enemyY.add(200.0); this.enemyY.add(200.0);
enemyY.add(250.0); this.enemyY.add(250.0);
// double[] enemyY = {250, 200, 150,100}; // enemyY.add(265.00);
// enemyY[0] = 100.0; // enemyY.add(265.00);
// enemyY[1] = 150.0; // enemyY.add(265.00);
// enemyY[2] = 200.0; // enemyY.add(265.00);
// enemyY[3] = 250.0;
// double[] enemyY = {250, 200, 150,100};
// enemyY[0] = 100.0;
// enemyY[1] = 150.0;
// enemyY[2] = 200.0;
// enemyY[3] = 250.0;
} }
// System.out.println(weather.get(rnd.nextInt(weather.size()))); // System.out.println(weather.get(rnd.nextInt(weather.size())));
// public boolean playerFlyingEnemyCollision(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) >= currY) {
// // if ((enemyY + 80 > (player.getPlayerY())) && ((player.getPlayerY() + 80) > enemyY)) {
//
// hit = true;
// player.decreaseLives();
// // if (hit && enemyX < player.getPlayerX() + 100) {
// // hit = false;
// // }
//
// }
//
// }
//
// return hit;
//
// // public void setEnemyY() {
// // enemyY = 0.0;
// //
// }
@Override @Override
public double getEnemyY() { public boolean playerAntagonistCollision(Player player) {
// boolean hit = false;
return enemyY.get(rnd.nextInt(enemyY.size())); // boolean collisionX = player.getPlayerX() < (x + Constants.enemyWidth) && (player.getPlayerX() + Constants.playerWidth) > x;
//
// Gör en random generator här som returnerar Y koordinat slumpmässigt inom ett spann(om y koordinaten är 0). // // Check for collision on the y-axis
// När enemy är ute ur frame sätter vi ykoordinaten till 0 så att den kan få en ny vid nästa passering. // boolean collisionY = player.getPlayerY() < (currY + Constants.enemyHeight) && (player.getPlayerY() + Constants.playerHeight) > currY;
// double enlen = enemyY.length;
//
// double temp = 0.0;
//
// temp = enemyY[(int) rnd.nextDouble(enlen)];
//
// return temp;
boolean collisionX = player.getPlayerX() < (x + 60) && (player.getPlayerX() + 60) > x;
// Check for collision on the y-axis
boolean collisionY = player.getPlayerY() < (currY + 60) && (player.getPlayerY() + 60) > currY;
if (collisionX && collisionY && !collisionDetected) {
player.decreaseLives();
collisionDetected = true;
return true;
}
if (!collisionX) {
collisionDetected = false;
}
// if ((x < (player.getPlayerX() + 80.00)) && ((x) > player.getPlayerX())) { //borde vara +80 på enemyx men funkar ej
// // if((player.getPlayerY() + 60.00) >= enemyY) {
// if((player.getPlayerY() > currY +80)) {
// // if ((enemyY + 80 > (player.getPlayerY())) && ((player.getPlayerY() + 80) > enemyY)) {
//
// hit = false;
// player.decreaseLives();
// // if (hit && enemyX < player.getPlayerX() + 100) {
// // hit = false;
// // }
//
// }
//
// }
return false;
// public void setEnemyY() {
// enemyY = 0.0;
//
}
@Override
public double getY() {
currY = enemyY.get(rnd.nextInt(enemyY.size()));
return currY;
} }
// public void setEnemyY() {
// enemyY = 0.0;
//
// }
} }
...@@ -11,6 +11,7 @@ import javafx.scene.text.Text; ...@@ -11,6 +11,7 @@ import javafx.scene.text.Text;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.util.Random;
import constants.Constants; import constants.Constants;
...@@ -53,6 +54,8 @@ public class PlayState extends GameState { ...@@ -53,6 +54,8 @@ public class PlayState extends GameState {
private String scoreText; private String scoreText;
private ExtraLifePowerUp extraLife; private ExtraLifePowerUp extraLife;
private FlyingEnemy flyingEnemy; private FlyingEnemy flyingEnemy;
private double tempy;
private Random engen;
/* Class only used for testing */ /* Class only used for testing */
...@@ -73,7 +76,7 @@ public class PlayState extends GameState { ...@@ -73,7 +76,7 @@ public class PlayState extends GameState {
player = new Player(Constants.playerImg); player = new Player(Constants.playerImg);
enemy = new Enemy(Constants.enemyImg); enemy = new Enemy(Constants.enemyImg);
extraLife = new ExtraLifePowerUp(Constants.lifeImg); extraLife = new ExtraLifePowerUp(Constants.lifeImg);
flyingEnemy = new FlyingEnemy(Constants.flyingEnemyImg); flyingEnemy = new FlyingEnemy(Constants.flyingEnemyImg, 800.00, 0.00);
// menu = new MenuState(model); // menu = new MenuState(model);
...@@ -96,6 +99,7 @@ public class PlayState extends GameState { ...@@ -96,6 +99,7 @@ public class PlayState extends GameState {
g.fillText(scoreText, 0, 60); g.fillText(scoreText, 0, 60);
} else { } else {
g.fillText(gameOverText, Constants.screenWidth/2, 200); g.fillText(gameOverText, Constants.screenWidth/2, 200);
score.saveScore(player.getPasses());
} }
// ritar ut marklinjen // ritar ut marklinjen
...@@ -107,37 +111,72 @@ public class PlayState extends GameState { ...@@ -107,37 +111,72 @@ public class PlayState extends GameState {
// 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å att den börjar om
// Ritar enemy och player // 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(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); 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 // 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
// TODO kommer möjligheten att ta powerups eller möta flyingenemy // TODO kommer möjligheten att ta powerups eller möta flyingenemy
} }
public void drawEnemy(GraphicsContext g) { public void drawEnemy(GraphicsContext g) {
engen = new Random();
// enemy = new Enemy(Constants.enemyImg); //
g.drawImage(enemy.getImage(), enemy.getEnemyX(), enemy.getEnemyY(), Constants.enemyWidth, Constants.enemyHeight); // if (player.getPasses() > 5) {
if (enemy.getEnemyX() < 0 - Constants.enemyWidth) { // boolean b = engen.nextBoolean();
enemy.setEnemyX(Constants.screenWidth); // System.out.println(b);
} //
// if (b) {
g.drawImage(flyingEnemy.getImage(), Constants.screenWidth/2, Constants.screenHeight/2, Constants.enemyWidth, Constants.enemyHeight); 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);
// }
// }
// 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
} }
...@@ -184,19 +223,20 @@ public class PlayState extends GameState { ...@@ -184,19 +223,20 @@ public class PlayState extends GameState {
clearedEnemies ++; clearedEnemies ++;
// Enemy hoppar 10 snäpp till vänster för varje update // Enemy hoppar 10 snäpp till vänster för varje update
enemy.setEnemyX(enemy.getEnemyX()-10); // enemy.setEnemyX(enemy.getEnemyX()-10);
flyingEnemy.setEnemyX(flyingEnemy.getEnemyX() -10); flyingEnemy.setAntagonistX(flyingEnemy.getX() -10);
// Om // Om
if (!gameOver) { if (!gameOver) {
if (!collided) { if (!collided) {
collided = enemy.playerEnemyCollision(player); // collided = enemy.playerEnemyCollision(player);
collided = flyingEnemy.playerAntagonistCollision(player);
if (Integer.valueOf(player.getLives()) == 0) { if (Integer.valueOf(player.getLives()) == 0) {
gameOver = true; gameOver = true;
} }
} }
if (collided && enemy.getEnemyX() < player.getPlayerX()) { if (collided && flyingEnemy.getX() < player.getPlayerX()) {
collided = false; collided = false;
} }
......
...@@ -24,9 +24,26 @@ public class Player { ...@@ -24,9 +24,26 @@ public class Player {
private boolean up = false; private boolean up = false;
private Image slidingImage; private Image slidingImage;
private Image currImage = null; private Image currImage = null;
private int passes = 0;
// private ImageView playerView; // private ImageView playerView;
public int getPasses() {
return passes;
}
public void updatePasses(int passes) {
this.passes += passes;
}
public Player(String playerImg) { public Player(String playerImg) {
try { try {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment