in Education by
I can't explain this error in the game I am trying to make. I'm pretty new to game programming, and I am following a tutorial on YouTube. As far as I can see I am doing exactly the same as in the video, but still I get this error. Error: Uncompilable source code - tilegame.entities.creatures.Player is not abstract and does not override abstract method die() in tilegame.entities.Entity at tilegame.entities.creatures.Creature.(Creature.java:11) Entity Class: package tilegame.entities; import java.awt.Graphics; import java.awt.Rectangle; import tilegame.Game; import tilegame.Handler; public abstract class Entity { public static final int DEFAULT_HEALTH = 10; protected Handler handler; protected float x, y; protected int width, height; protected int health; protected boolean active = true; protected Rectangle bounds; public Entity(Handler handler, float x, float y, int width, int height){ this.handler = handler; this.x = x; this.y = y; this.width = width; this.height = height; health = DEFAULT_HEALTH; bounds = new Rectangle(0, 0, width, height); } public abstract void tick(); public abstract void render(Graphics g); public abstract void die(); public void hurt(int amt){ health += amt; if(health <= 0){ active = false; die(); } } public boolean checkEntityCollisions(float xOffset, float yOffset){ for(Entity e : handler.getWorld().getEntityManager().getEntity()){ if(e.equals(this)) continue; if(e.getCollisionBounds(0f, 0f).intersects(getCollisionBounds(xOffset, yOffset))) return true; } return false; } public Rectangle getCollisionBounds(float xOffset, float yOffset){ return new Rectangle ((int) (x + bounds.x + xOffset), (int) (y + bounds.y + yOffset), bounds.width, bounds.height); } public float getX() { return x; } public void setX(float x) { this.x = x; } public float getY() { return y; } public void setY(float y) { this.y = y; } public int getWidth() { return width; } public void setWidth(int width) { this.width = width; } public int getHeight() { return height; } public void setHeight(int height) { this.height = height; } public int getHealth() { return health; } public void setHealth(int health) { this.health = health; } public boolean isActive() { return active; } public void setActive(boolean active) { this.active = active; } } Player Class: package tilegame.entities.creatures; import java.awt.Color; import java.awt.Graphics; import java.awt.image.BufferedImage; import tilegame.Game; import tilegame.Handler; import tilegame.gfx.Animation; import tilegame.gfx.Assets; public class Player extends Creature{ //Animations private Animation animDown, animUp, animLeft, animRight; public Player(Handler handler, float x, float y){ super(handler, x, y, Creature.DEFAULT_CREATURE_WIDTH, Creature.DEFAULT_CREATURE_HEIGHT); bounds.x = 20; bounds.y = 24; bounds.width = 23; bounds.height = 39; //Animations animDown = new Animation(250, Assets.player_down); animUp = new Animation(250, Assets.player_up); animLeft = new Animation(250, Assets.player_left); animRight = new Animation(250, Assets.player_right); } @Override public void tick() { //Animations animDown.tick(); animUp.tick(); animLeft.tick(); animRight.tick(); //Movement getInput(); move(); handler.getGameCamera().centerOnEntity(this); } @Override public void die() { System.out.println("You died"); } private void getInput(){ xMove = 0; yMove = 0; if(handler.getKeyManager().up) yMove = -speed; if(handler.getKeyManager().down) yMove = speed; if(handler.getKeyManager().left) xMove = -speed; if(handler.getKeyManager().right) xMove = speed; } @Override public void render(Graphics g) { g.drawImage(getCurrentAnimationFrame(), (int) (x - handler.getGameCamera().getxOffset()), (int) (y - handler.getGameCamera().getyOffset()), width, height, null); //Show bounding box /*g.setColor(Color.red); g.fillRect((int) (x + bounds.x - handler.getGameCamera().getxOffset()), (int) (y + bounds.y - handler.getGameCamera().getyOffset()), bounds.width, bounds.height);*/ } private BufferedImage getCurrentAnimationFrame(){ if(xMove < 0){ return animLeft.getCurrentFrame(); }else if(xMove > 0){ return animRight.getCurrentFrame(); }else if(yMove < 0){ return animUp.getCurrentFrame(); }else return animDown.getCurrentFrame(); } } Creature Class: package tilegame.entities.creatures; import java.awt.Graphics; import tilegame.Game; import tilegame.Handler; import tilegame.entities.Entity; import tilegame.tiles.Tile; public abstract class Creature extends Entity{ public static final float DEFAULT_SPEED = 3.0f; public static final int DEFAULT_CREATURE_WIDTH = 64, DEFAULT_CREATURE_HEIGHT = 64; protected float speed; protected float xMove, yMove; public Creature(Handler handler, float x, float y, int width, int height) { super(handler, x, y, width, height); speed = DEFAULT_SPEED; xMove = 0; yMove = 0; } public void move(){ if(!checkEntityCollisions(xMove, 0f)) moveX(); if(!checkEntityCollisions(0f, yMove)) moveY(); } public void moveX(){ if(xMove > 0){//Moving right int tx = (int) (x + xMove + bounds.x + bounds.width) / Tile.TILEWIDTH; if(!collisionWithTile(tx, (int) (y + bounds.y) / Tile.TILEHEIGHT) && !collisionWithTile(tx, (int) (y + bounds.y + bounds.height) / Tile.TILEHEIGHT)){ x += xMove; }else{ x = tx * Tile.TILEWIDTH - bounds.x - bounds.width - 1; } }else if(xMove < 0){//Moving left int tx = (int) (x + xMove + bounds.x) / Tile.TILEWIDTH; if(!collisionWithTile(tx, (int) (y + bounds.y) / Tile.TILEHEIGHT) && !collisionWithTile(tx, (int) (y + bounds.y + bounds.height) / Tile.TILEHEIGHT)){ x += xMove; }else{ x = tx * Tile.TILEWIDTH + Tile.TILEWIDTH - bounds.x; } } } public void moveY(){ if(yMove < 0){//Moving up int ty = (int) (y + yMove + bounds.y) / Tile.TILEHEIGHT; if(!collisionWithTile((int) (x + bounds.x) / Tile.TILEWIDTH, ty) && !collisionWithTile((int) (x + bounds.x + bounds.width) / Tile.TILEWIDTH, ty)){ y += yMove; }else{ y = ty * Tile.TILEHEIGHT + Tile.TILEHEIGHT - bounds.y; } }else if(yMove > 0){ //Moving down int ty = (int) (y + yMove + bounds.y + bounds.height) / Tile.TILEHEIGHT; if(!collisionWithTile((int) (x + bounds.x) / Tile.TILEWIDTH, ty) && !collisionWithTile((int) (x + bounds.x + bounds.width) / Tile.TILEWIDTH, ty)){ y += yMove; }else{ y = ty * Tile.TILEHEIGHT - bounds.y - bounds.height - 1; } } } protected boolean collisionWithTile(int x, int y){ return handler.getWorld().getTile(x, y).isSolid(); } // GETTERS AND SETTERS public int getHealth() { return health; } public void setHealth(int health) { this.health = health; } public float getSpeed() { return speed; } public void setSpeed(float speed) { this.speed = speed; } public float getxMove() { return xMove; } public void setxMove(float xMove) { this.xMove = xMove; } public float getyMove() { return yMove; } public void setyMove(float yMove) { this.yMove = yMove; } } I implement the same abstract method die(); in the Stone and Tree classes also. I cannot understand why I get this error. Does anyone care to explain it? I tried re-writing the code, restarting NetBeans. JavaScript questions and answers, JavaScript questions pdf, JavaScript question bank, JavaScript questions and answers pdf, mcq on JavaScript pdf, JavaScript questions and solutions, JavaScript mcq Test , Interview JavaScript questions, JavaScript Questions for Interview, JavaScript MCQ (Multiple Choice Questions)

1 Answer

0 votes
by
Your code, minimized (check how to create a MVCE) is correct and does not throw any error: abstract class Entity { public abstract void die(); } class Player extends Creature{ @Override public void die() { System.out.println("You died"); } } abstract class Creature extends Entity{ } So check your imports, you might have an extra Player class in other package.

Related questions

0 votes
    I can't explain this error in the game I am trying to make. I'm pretty new to game programming, ... , JavaScript Questions for Interview, JavaScript MCQ (Multiple Choice Questions)...
asked Jul 6, 2022 in Education by JackTerrance
0 votes
    If a class inheriting an abstract class does not define all of its function then it will be known as ... questions and answers pdf, java interview questions for beginners...
asked Oct 25, 2021 in Education by JackTerrance
0 votes
    Why we override equals() method?...
asked May 27, 2021 in Technology by JackTerrance
0 votes
    Why is it important to override GetHashCode when Equals method is overridden?...
asked Jan 16, 2021 in Technology by JackTerrance
0 votes
    first question asked, so I'll get straight to it. I've got some C code that will be interfacing ... Arguments: java_command: Launcher Type: generic Environment Variables: PATH=...
asked Feb 19, 2022 in Education by JackTerrance
0 votes
    This method is in a Scores class, that is set the class variable scores, but the scores is combination ... Questions for Interview, JavaScript MCQ (Multiple Choice Questions)...
asked Feb 11, 2022 in Education by JackTerrance
0 votes
    This method is in a Scores class, that is set the class variable scores, but the scores is combination ... Questions for Interview, JavaScript MCQ (Multiple Choice Questions)...
asked Feb 10, 2022 in Education by JackTerrance
0 votes
    This method is in a Scores class, that is set the class variable scores, but the scores is combination ... Questions for Interview, JavaScript MCQ (Multiple Choice Questions)...
asked Feb 7, 2022 in Education by JackTerrance
0 votes
    This method is in a Scores class, that is set the class variable scores, but the scores is combination ... Questions for Interview, JavaScript MCQ (Multiple Choice Questions)...
asked Feb 5, 2022 in Education by JackTerrance
0 votes
    Which of these is not abstract? (a) Thread (b) AbstractList (c) List (d) None of the Mentioned ... programming questions and answers pdf, java interview questions for beginners...
asked Oct 25, 2021 in Education by JackTerrance
0 votes
    I am trying to implement the Hateoas using spring boot. In my UserController class i have used the below ... Questions for Interview, JavaScript MCQ (Multiple Choice Questions)...
asked Apr 12, 2022 in Education by JackTerrance
0 votes
    What is the difference between an abstract class and an interface?...
asked Feb 9, 2023 in Technology by JackTerrance
0 votes
    I have seen similar questions and read a lot of the answers. One would think that I would know it ... JavaScript Questions for Interview, JavaScript MCQ (Multiple Choice Questions)...
asked Apr 7, 2022 in Education by JackTerrance
0 votes
    I am able to modify my first spinner but not sure how to do the second one in java. Here is ... , JavaScript Questions for Interview, JavaScript MCQ (Multiple Choice Questions)...
asked Feb 26, 2022 in Education by JackTerrance
0 votes
    Can abstract keyword be used with constructor, Initialization Block, Instance Initialization and Static Initialization ... Java Select the correct answer from above options...
asked Feb 23, 2022 in Education by JackTerrance
...