Я начал заниматься Java этим летом и в свободное время создаю небольшую игру. У меня сейчас проблема с геттером. В классе Player
у меня есть получатель целого числа "speed
".
Вот код:
public int getSpeed(){
return this.speed;
}
Это целое число "speed
" установлено в конструкторе:
public Player(int x, int y, String n, BufferedImage s, int spd) {
super(x, y);
this.name = n;
this.sprite = s;
spd = this.speed;
this.l_x = x;
this.l_y = y;
}
Когда я пытаюсь использовать переменную "speed
" в коде движения:
if (w) {
p_y -= player.getSpeed();
}
Я получаю эту ошибку во время выполнения (спасибо Martijn Courteaux):
Exception in thread "Thread-3" java.lang.NullPointerException
at main.gameMain.update(gameMain.java:81)
Где строка 81 - строка, на которой появляется код движения.
Я был бы очень признателен за любую помощь, которую я мог бы получить, поскольку я мог заставить все «работать», используя отдельные переменные для всего, но было бы в 10 раз легче и чище, если бы я мог знать, почему мои геттеры не работают.
Заранее спасибо!
РЕДАКТИРОВАТЬ: я изменил
spd = this.speed;
до
this.speed = spd;
но я все еще получаю ошибку исключения нулевого указателя. Фактически любая переменная, которую я пытаюсь использовать из бросков, выдает ту же ошибку.
Кто-нибудь может увидеть какие-либо серьезные ошибки?
И спасибо всем, кто помог до сих пор! Я очень ценю это!
основной пакет;
import java.awt.image.BufferedImage;
публичный класс Player расширяет персонаж {
private String name;
private BufferedImage sprite;
private int speed, l_x, l_y;
public Player(int x, int y, String n, BufferedImage s, int spd) {
super(x, y);
this.name = n;
this.sprite = s;
speed = spd;
this.l_x = x;
this.l_y = y;
}
public int getSpeed(){
return this.speed;
}
public void setSpeed(int i){
this.speed = i;
}
public int getOriginalX(){
return super.o_loc_x;
}
public int getOringinalY(){
return super.o_loc_y;
}
public int getCurrentY(){
return this.l_y;
}
public int getCurrentX(){
return this.l_x;
}
public void setCurrentY(int i){
i = this.l_y;
}
public void setCurrentX(int i){
i = this.l_x;
}
public void moveUp(){
this.l_y -= speed;
}
public void moveDown(){
this.l_y += speed;
}
public void moveLeft(){
this.l_x -= speed;
}
public void moveRight(){
this.l_x += speed;
}
public void setName(String input){
this.name = input;
}
public String getName(){
return this.name;
}
public void setSprite(BufferedImage m){
this.sprite = m;
}
public BufferedImage getSprite(){
return this.sprite;
}
}
РЕДАКТИРОВАТЬ: Я такой идиот. Когда я объявлял новый экземпляр Player, я помещал
Игрок игрока = ...
Вместо:
player = ....