我的當前代碼有問題。我想寫一個簡單的類似壟斷的遊戲來練習。沒有太多要完成它,但我堅持一件事。識別類別本身後使用類功能
我有一個由Luck,Property和Service類擴展的Field類。運氣和服務幾乎是一樣的。
package field;
public class Luck extends Field {
private final int price;
public Luck(int price) {
this.price = price;
}
public int getPrice() {
return price;
}
}
我有以下問題。我創建並存儲在一個列表(如地圖推移,在列表0元素是地圖上的1場,1元是2場等),現在如果一個
List<Field> fields = new ArrayList<>();
選手們隨後會移動,我應該檢查他是否踩上了運氣或服務區域,這樣我就可以拿到錢。
Field f = fields.get(player.getPosition());
if (f.getClass().equals(Luck.class)) {
player.income(fields.get(player.getPosition()).getPrice());
} else if (f.getClass().equals(Service.class)) {
player.expense(fields.get(player.getPosition()).getPrice());
} else {}
玩家看起來是這樣的:
public abstract class Player {
String name;
private int wealth;
private int position;
public Player(String name) {
this.name = name;
wealth = 10000;
position = 0;
}
public void expense(int price) {
wealth -= price;
}
public void income(int price) {
wealth += price;
}
我怎麼會用運氣類的功能,下面的代碼後?
if (f.getClass().equals(Luck.class)) {
player.income(fields.get(player.getPosition()).getPrice());
}
錯誤是它找不到價格符號,我明白了。它沒有在Fields.java中聲明(因爲並不是所有的3字段都有價格標籤),但是我應該能夠在我已經檢查過類是否等於Luck後使用它了,不是嗎?