我需要在顶部添加某种分数,但不确定如何。
我尝试使用一些功能并移动计分功能,但是我没有合适的计分器。
这是用户播放器类:
Score myInt = new Score();
myInt.score();
if(Pig != null)
{
World farm;
farm = getWorld();
farm.removeObject(Pig);
}
if(Sheep != null)
{
World farm;
farm = getWorld();
farm.removeObject(Sheep);
}
if(Bonus != null)
{
World farm;
farm = getWorld();
farm.removeObject(Bonus);
}
这是Score类中的得分方法:
public void score()
{
int score = 0;
}
我还没有得分,但是我希望猪为1分,绵羊为3分,奖金为10分,随着游戏的进行和移动,吃东西,应该得到相应的分数。这些点应该进入int分数对象,但是分数不会显示在第一个代码中。
答案 0 :(得分:0)
嘿,看来您仍在与Java基本概念作斗争。但我认为您正在尝试执行以下操作。您可以使用三种类型将分数添加到得分对象。在Java和其他面向对象的语言中,通常将使用baseClass或Interface处理此类行为。在这种情况下,例如接口ScoreAble:
interface ScoreAble {
int score();
}
您的三个类Pig
,Sheep
和Bonus
将实现此接口:
public class Bonus implements ScoreAble {
public int score() {
return 10;
}
}
public class Sheep implements ScoreAble {
public int score() {
return 3;
}
}
public class Pig implements ScoreAble {
public int score() {
return 1;
}
}
我建议您更改
public void score()
{
private int score = 0;
}
到
public class Score {
int score = 0;
public void addScore(ScoreAble scoreAble) {
this.score += scoreAble.score();
}
public void addScore(int i) {
this.score += i;
}
public void lowerScore(int i) {
this.score -= i;
}
public int getScore() {
return this.score;
}
public void setScore(int score) {
this.score = score;
}
}
我不知道您的World班级如何,但我建议添加以下几行:
class World {
private List<ScoreAble> scoreAbles = new ArrayList<>();
public List<ScoreAble> getScoreAbles() {
return this.scoreAbles;
}
public void setScoreAbles(List<ScoreAble> scoreAbles) {
this.scoreAbles = scoreAbles;
}
public void addScoreAble(ScoreAble scoreAble) {
this.scoreAbles.add(scoreAble);
}
}
您现在可以将得分添加代码更改为:
World farm = getWorld();
for (ScoreAble scoreAble : farm.getScoreAbles()) {
score.addScore(scoreAble);
farm.removeObject(scoreAble)
}
farm.getScoreAbles().clear();
我对绿脚不熟悉,因此,如果某事不起作用或不清楚,请不要害怕