为了账号安全,请及时绑定邮箱和手机立即绑定

C# 数组评分系统

C# 数组评分系统

C#
智慧大石 2022-10-23 15:59:14
我在为我的游戏整理计分系统时遇到问题。当我整理“HighScoresPointsLevel1”数组时出现问题,因为尽管数组以正确的顺序显示,但它与“HighScoresNameLevel1”没有链接。换句话说,游戏的高分将分配给随机玩家的名字。可能的解决方案?我在想,如果我能够在 array.sort/array.reverse 内部传递两个参数(HighScoresPointsLevel1,HighScoresNameLevel1),但问题是 array.reverse 接受两个参数。我认为这会起作用的原因是,通过第一次调用array.sort,我能够在数组“HighScoresLevel1”、“HighScoresNameLevel1”之间建立关系。这个问题有没有可能的解决方案。任何帮助,将不胜感激。谢谢。     string PlayersName = "Player's Name";     float[] HighScoresLevel1 = new float[5];     float[] HighScoresPointsLevel1 = new float[5];     string[] HighScoresNameLevel1 = new string[5];     public static void addLastScoreLevel1(       float newScore,       float newPoints,        float[] HighScoresLevel1,       float[] HighScoresPointsLevel1,        string[] HighScoresNameLevel1,        string PlayersName)     {        if (newScore < HighScoresLevel1[4])        {            HighScoresLevel1[4] = newScore;            HighScoresPointsLevel1[4] = newPoints;            HighScoresNameLevel1[4] = PlayersName;            Array.Sort(HighScoresLevel1, HighScoresNameLevel1);            Array.Sort(HighScoresPointsLevel1);            Array.Reverse(HighScoresPointsLevel1);        }     }编辑:查看“Kieran Devlin”的反馈后,我已经实施了更改,到目前为止效果很好,但我在打印列表时遇到了问题。因此,在我的其他表单中,当尝试在列表框中显示玩家列表的内容时,列表框仅显示 Game.Player。public partial class MainMenu : Form{    public static List<Player> GetPlayers(float newScore, float newPoints,     string PlayersName)    {        var players = new List<Player>();        var newPlayer = new Player        {            Name = PlayersName,            Points = newPoints,            Timer = newScore        };        players.Add(newPlayer);        var TopTenLevel1 = players.OrderByDescending(x => x.Timer).Take(10);        return players;    } }public partial class HighScoresMenu : Form{        foreach (var Player in MainMenu.GetPlayers(newScore, newPoints,         PlayersName))        {            ListBoxLevel1.Items.Add(Player);        }}
查看完整描述

1 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

使用对象对数据进行分组,为您提供更多上下文


public class Player {

    public string Name { get; set; }

    public int Points { get; set; }

    public int Level { get; set; }

}

然后你可以像这样使用它:


var players = new List<Player>();

var newPlayer = new Player {

    Name = "Some name",

    Points = 10,

    Level = 3

};

highscore.Add(newPlayer);

如果你想获得一个领域的前十名球员:


var topTenByLevel = players

                   .OrderByDecending(x => x.Level)

                   .Take(10);


查看完整回答
反对 回复 2022-10-23
  • 1 回答
  • 0 关注
  • 97 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信