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; } }