"counting up" shown/animated 计分器

Score counter with the "counting up" shown/animated

我正在尝试创建一个计分器的可视化表示来计算玩家的分数,以达到 "retro" 的感觉。为了显示玩家的分数,我对计数器进行了很好的编程。我遇到的问题是 "counting up" 表示。我在 S/O 上四处搜索,希望能找到这样的东西,然而,也许是因为我搜索的措辞,我没有找到任何运气。

public class ScoreCounter {
  private Font font = null;
  private int width = 0;
  private long score = 0, targetScore = 0;

  public void setFont(Font newFont) {
    font = newFont;
  }

  public void increment(int increment) {
    for (int i = increment; 0 < i; i--) {
      score++;
    }
  }

  public void paint(Graphics g) {
    g.setFont(font.deriveFont(Font.PLAIN, 30));
    g.setColor(Color.WHITE);
    width = g.getFontMetrics().stringWidth(Long.toString(score));
    g.drawString(Long.toString(score), 764 - width, 30);
  }
}

您的游戏应该具有一些 'a cycle' IE 的概念:框架。您应该有一个包含在 'list of functions to call per cycle' 中的函数,可以为您计算新值。

public void calculateScore()
  {
    newScore = previousScore + SCORE_PER_CYCLE_ADDED;
    // then you add in the scores from 'whatever' they did in that cycle
    // such as killing enemies
    for(Enemy defeatedEnemy: EnemiesDefeatedThisCycle){
          newScore += defeatedEnemy.getScoreValue();
    }
    // collected points items
    for(Item itemCollected: CollectedItemsThisCycle){
          newScore += itemCollected.getScoreValue();
    }
}

然后在其他地方,您可以在 GUI 上更新玩家每帧的新分数。