2 回答

TA贡献1868条经验 获得超4个赞
由于平均值的工作方式,您无法存储平均分数。虽然您可以通过每次游戏结束时将计数器简单地增加一个来计算用户玩过的游戏,但是没有分析形式来提高平均值。
但是,如果您存储了游戏总数和总得分,那么您将能够提高所需的所有指标。
class User
{
public int HighScore { get; private set; } = 0;
public double AverageScore =>
this.GamesPlayed > 0 ? this.TotalScore / (double)this.GamesPlayed : 0;
private int GamesPlayed { get; set; } = 0;
private int TotalScore { get; set; } = 0;
public void GameOver(int score)
{
this.HighScore = Math.Max(this.HighScore, score);
this.GamesPlayed += 1;
this.TotalScore += score;
}
}

TA贡献1772条经验 获得超6个赞
您可以存储平均值,然后在游戏结束后重新计算。这样你就不需要存储一个会导致溢出问题的值(totalscore)(迟早)。
class User
{
public int HighScore { get; private set; } = 0;
public double AverageScore { get; private set; } = 0;
private int GamesPlayed { get; set; } = 0;
public void GameOver(int score)
{
this.HighScore = Math.Max(this.HighScore, score);
// get the prev total score then increase with the current score and get the new average in the end (also increase the GamesPlayed)
this.AverageScore = ((this.AverageScore * this.GamesPlayed) + score) / ++this.GamesPlayed;
}
}
- 2 回答
- 0 关注
- 74 浏览
添加回答
举报