Tjena! Har gymnasiearbete som jag håller på o fixa med en skut funktion på Java som jag ej får och funka. Får felmeddelande att konstruktorn e fel eller liknande på denna kod i PlayerEntity:
Jag håller på att lägga till så att en bild ska skjutas i en rikning när nedåt piltangenten trycks ner.
Tack så himla mycket i förväg!!
PlayerEntity.java
ShotEntity.java
Kod:
public boolean tryToFire(){
if(missile == null || !missile.getActive()){
missile = new ShotEntity(new ImageIcon(getClass().getResource("/rsz_shoot.png")).getImage(), x+13, y, 90);
missile.setActive(true);
return true;
}else
return false;
}
Jag håller på att lägga till så att en bild ska skjutas i en rikning när nedåt piltangenten trycks ner.
Tack så himla mycket i förväg!!
PlayerEntity.java
Kod:
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Point;
import javax.swing.ImageIcon;
public class PlayerEntity extends Entity {
public ShotEntity missile = null; // ingen missil!
public PlayerEntity(Image[] images, Map map, double x, double y, int speed) {
super(images, map, x, y, speed);
// TODO Auto-generated constructor stub
}
// Ny metod som överskuggar
public void draw(Graphics2D g){
if(missile != null && missile.getActive()){
missile.draw(g);
}
super.draw(g);
}
public boolean tryToFire(){
if(missile == null || !missile.getActive()){
missile = new ShotEntity(new ImageIcon(getClass().getResource("/rsz_shoot.png")).getImage(), x+13, y, 90);
missile.setActive(true);
return true;
}else
return false;
}
public void move(long deltaTime) {
super.move(deltaTime);
if(speedY < 800 && falling) {
speedY += gravity*(deltaTime/1000000000.0);
//System.out.println(speedY);
if(missile != null && missile.getActive()){ //skjutar metoden
missile.move(deltaTime);
}
}
double nx = x + dx*speedX*(deltaTime/1000000000.0);
double ny = y + speedY*(deltaTime/1000000000.0);
if (!validLocation(nx, ny)) {
Point tile = hitTile(nx, ny, 1); //Vilken ruta krockar vi med
if(tile.x == -1) {
tile = hitTile(nx, ny, 3);
if (tile.x == -1) {
tile = hitTile(nx, ny, 4);
}
}
// Är det y som krockar
if (validLocation(nx, y)) {
x = nx;
// Justrerar position i y-led, i kant med blocket
if(speedY >= 0) {
y = tile.y*map.getTileSize() - imageToShow.getHeight(null); // ÄNDRAT
}else if(speedY < 0) {
y = tile.y*map.getTileSize() + map.getTileSize();
}else
System.out.println("HHHH xxxxxx");
} else if (validLocation(x, ny)) { // Är det i x-led krocken sker
y = ny;
// Justrerar position i x-led
if(dx == 1) {
x = tile.x*map.getTileSize() - imageToShow.getWidth(null); // ÄNDRAT
}else if(dx == -1) {
x = tile.x*map.getTileSize() + map.getTileSize();
}
}else { // Fel i både x- och y-led. Identisk kod -> skapa privata metioder
System.out.println("BÅDA " + y);
if(speedY >= 0) {
y = (int)(tile.y*map.getTileSize() - imageToShow.getHeight(null)); // ÄNDRAT
}else if(speedY < 0) {
y = (int)(tile.y*map.getTileSize() + map.getTileSize());
}
if(dx == 1) {
x = (int)(tile.x*map.getTileSize() - imageToShow.getWidth(null)); // ÄNDRAT
}else if(dx == -1) {
x = (int)(tile.x*map.getTileSize() + map.getTileSize());
}
System.out.println("BÅDA " + y);
}
}else {
x = nx;
y = ny;
}
// Hoppa ifall tile är tillåten
if(hitTile(x,y+1,1).y != -1) {
allowedjump = true;
falling = false;
speedY = 0;
}
else if(hitTile(x,y+1,3).y != -1) {
allowedjump = true;
falling = false;
speedY = 0;
}
else if(hitTile(x,y+1,4).y != -1) {
allowedjump = true;
falling = false;
speedY = 0;
}
else {
falling = true;
}
/*
if(getSpeedX() < 200 && falling) {
double speedY;
speedY = getSpeedY() + gravity;
setSpeedY(speedY);
}*/
}
/**
* Förflyttar spelfiguren beroende på förfluten tid
* @param deltaTime tid som förflutit sedan förra uppdateringen i nano sekunder
*/
}
ShotEntity.java
Kod:
import java.awt.Graphics2D;
import java.awt.Image;
public class ShotEntity extends Entity {
public ShotEntity(Image[] images, Map map, double x, double y, int speed) {
super(images, map, x, y, speed);
// TODO Auto-generated constructor stub
}
@Override
public void move(long deltaTime) {
x += dy*(deltaTime/1000000000.0)*speedY;
}
public boolean getActive() {
// TODO Auto-generated method stub
return false;
}
}
, men får dock error på