【问题标题】:Adding a score function添加评分函数
【发布时间】:2019-05-16 12:52:22
【问题描述】:

我需要在顶部添加某种分数,但我不确定如何。

我尝试过使用一些函数并在分数函数中移动,但我没有合适的分数计数器。

这是用户玩家类:

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 类中的 score 方法:

public void score()
{
        int score = 0;
}

我还没有得分,但我希望猪得 1 分,羊得 3 分,奖金得 10你吃的东西,你应该得到相应的积分。分数应该进入 int score 对象,但分数不会显示在第一个代码中。

【问题讨论】:

  • 这是评分类——这是一个方法,而不是一个类。
  • 不相关:遵循 java 命名约定:变量名采用驼峰命名法。只有类名是大写的!
  • 实际的问题/问题是什么?
  • 为什么World farm;farm = getWorld() 在两行? (我知道这与您的要求无关),为什么不将其设为World farm = getWorld() 以使其更易于阅读?

标签: java greenfoot


【解决方案1】:

嘿,看来您仍在为基本的 Java 概念而苦苦挣扎。但我认为您正在尝试以下内容。您有三种类型可以为您的乐谱对象添加一个点。在 java 和其他面向对象的语言中,您通常会使用 baseClass 或 Interface 来处理此类行为。在这种情况下,例如接口 ScoreAble:

 interface ScoreAble {
    int score();
}

您的三个类PigSheepBonus 将实现此接口:

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();

我对greenfoot不熟悉,所以如果有什么不好或不清楚的,不要害怕问

【讨论】:

    猜你喜欢
    • 2023-04-01
    • 2016-05-29
    • 2021-12-24
    • 2015-01-03
    • 1970-01-01
    • 2014-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多