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

Powerup samt kommentarer

parent 642363c9
No related branches found
No related tags found
1 merge request!1Testb
167
\ No newline at end of file
3
\ No newline at end of file
src/Images1/heart.png

886 B

......@@ -39,4 +39,7 @@ public interface Constants {
double enemyWidth = 100;
double enemyHeight = 100;
// powerups
String lifeImg = "src/Images1/heart.png";
}
......@@ -8,7 +8,7 @@ import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
public class Enemy {
private double enemyX = -100.00;
private double enemyY = 250.00;
private Image image;
......@@ -18,21 +18,39 @@ public class Enemy {
try {
image = new Image(new FileInputStream(enemyImg));
enemyView = new ImageView(image);
enemyView.setX(enemyX);
enemyView.setY(enemyY);
enemyView.setFitHeight(Constants.enemyHeight);
enemyView.setFitWidth(Constants.enemyWidth);
} 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)) && (enemyX > player.getPlayerX())) {
if((player.getPlayerY() + 60) >= enemyY) {
hit = true;
player.decreaseLives();
// if (hit && enemyX < player.getPlayerX()) {
// hit = false;
// }
}
}
return hit;
}
public void setEnemyX(double pos) {
this.enemyX = pos;
}
public Image getImage() {
......@@ -50,7 +68,7 @@ public class Enemy {
public double getEnemyY() {
return enemyY;
}
}
package states;
public class ExtraLifePowerUp extends PowerUp {
ExtraLifePowerUp(String image) {
super(image);
// TODO Auto-generated constructor stub
}
@Override
public void use(Player player) {
// TODO Auto-generated method stub
}
}
package states;
import java.util.Random;
import javafx.scene.image.Image;
public class FlyingEnemy extends Enemy{
private double enemyX = -100.00;
private double enemyY = 0;
private Image image;
private Random rnd;
public FlyingEnemy(String enemyImg) {
super(enemyImg);
}
public double getEnemyY() {
// Gör en random generator här som returnerar Y koordinat slumpmässigt inom ett spann(om y koordinaten är 0).
// När enemy är ute ur frame sätter vi ykoordinaten till 0 så att den kan få en ny vid nästa passering.
return enemyY;
}
public void setEnemyY() {
enemyY = 0;
}
}
......@@ -50,12 +50,13 @@ public class PlayState extends GameState {
private HighScore score = new HighScore();
private int clearedEnemies;
private String scoreText;
private ExtraLifePowerUp extraLife;
/* 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
// 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);
......@@ -69,6 +70,7 @@ public class PlayState extends GameState {
player = new Player(Constants.playerImg);
enemy = new Enemy(Constants.enemyImg);
extraLife = new ExtraLifePowerUp(Constants.lifeImg);
// menu = new MenuState(model);
......@@ -84,6 +86,7 @@ public class PlayState extends GameState {
g.setFill(fontColor);
g.setFont(new Font(30)); // Big letters
// ritar liv kvar + nuvarande highscore om det inte är gameover, annars ritar den bara gemaovertexten
if (!gameOver) {
g.fillText(livesleft+player.getLives(), 0, 30);
......@@ -93,74 +96,115 @@ public class PlayState extends GameState {
g.fillText(gameOverText, Constants.screenWidth/2, 200);
}
// ritar ut marklinjen
g.setStroke(Color.BLACK);
g.setLineWidth(1);
g.setLineDashes(2);
g.strokeLine(Constants.screenWidth, 350, 0, 350);
if (enemy.getEnemyX() < 0 - Constants.enemyWidth) {
enemy.setEnemyX(Constants.screenWidth);
}
// om enemy är ute ur frame, ställer dem om positionen på den så att den börjar om
// Ritar enemy och player
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
// TODO kommer möjligheten att ta powerups eller möta flyingenemy
}
public void drawEnemy(GraphicsContext g) {
// enemy = new Enemy(Constants.enemyImg);
g.drawImage(enemy.getImage(), enemy.getEnemyX(), enemy.getEnemyY(), Constants.enemyWidth, Constants.enemyHeight);
if (enemy.getEnemyX() < 0 - Constants.enemyWidth) {
enemy.setEnemyX(Constants.screenWidth);
}
}
@Override
public void keyPressed(KeyEvent key) {
// 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) {
switch (key.getCode()) {
case ESCAPE:
model.switchState(new MenuState(model));
} else if (key.getCode() == KeyCode.UP) {
break;
case UP:
// Om spelaren duckar kan den inte hoppa, då ställer sig spelaren upp istället
if (down) {
player.standUp();
down = false;
} else {
up = true;
}
break;
} else if (key.getCode() == KeyCode.DOWN) {
case DOWN:
// Spelaren kan inte ducka om den är mitt i ett hopp
if (!up) {
down = true;
}
break;
down = true;
default:
break;
}
}
@Override
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);
// Om
if (!gameOver) {
if ((enemy.getEnemyX() <= (player.getPlayerX() + 80)) && (enemy.getEnemyX() > player.getPlayerX())) {
// if (!collided && enemy.getEnemyX() > player.getPlayerX()) {
if (!collided) {
checkCollision();
if (!collided) {
collided = enemy.playerEnemyCollision(player);
if (Integer.valueOf(player.getLives()) == 0) {
gameOver = true;
}
// clearedEnemies ++;
}
if (collided && enemy.getEnemyX() < 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) {
player.jump();
......@@ -181,6 +225,7 @@ public class PlayState extends GameState {
public void checkCollision() {
// Om vi kolliderar på Y axeln
// if ((enemy.getEnemyX() <= (player.getPlayerX() + 80)) && (enemy.getEnemyX() > player.getPlayerX()) && ((player.getPlayerY() + 60) >= enemy.getEnemyY() )) {
//
......@@ -214,7 +259,7 @@ public class PlayState extends GameState {
// }
// clearedEnemies ++;
// clearedEnemies ++;
}
......
......@@ -32,11 +32,7 @@ public class Player {
try {
image = new Image(new FileInputStream(playerImg));
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();
......@@ -47,9 +43,7 @@ public class Player {
}
// public ImageView getPlayerView() {
// return playerView;
// }
public Image getImage() {
......
package states;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import constants.Constants;
import javafx.scene.image.Image;
public abstract class PowerUp {
private double powerUpX = (Constants.screenWidth - Constants.playerWidth) / 2;
private double powerUpY = 265.00;
private Image powerUpImage;
PowerUp(String image) {
try {
powerUpImage = new Image(new FileInputStream(image));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public double getPowerUpX() {
return powerUpX;
}
public void setPowerUpX(double powerUpX) {
this.powerUpX = powerUpX;
}
public double getPowerUpY() {
return powerUpY;
}
public Image getImage() {
return powerUpImage;
}
public boolean powerUpPlayerCollision(Player player) {
boolean hit = false;
// här ska det finnas kod för att kolla kollisioner mellan spelare och powerup
return hit;
}
public abstract void use(Player player);
// här kommer de två olika powerupsen avgöra vad som händer när ma ta den, denna klass kallar på kollisionen
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment