猿问

C# 数组评分系统

我在为我的游戏整理计分系统时遇到问题。当我整理“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);

        }

}


智慧大石
浏览 98回答 1
1回答

qq_笑_17

使用对象对数据进行分组,为您提供更多上下文public class Player {&nbsp; &nbsp; public string Name { get; set; }&nbsp; &nbsp; public int Points { get; set; }&nbsp; &nbsp; public int Level { get; set; }}然后你可以像这样使用它:var players = new List<Player>();var newPlayer = new Player {&nbsp; &nbsp; Name = "Some name",&nbsp; &nbsp; Points = 10,&nbsp; &nbsp; Level = 3};highscore.Add(newPlayer);如果你想获得一个领域的前十名球员:var topTenByLevel = players&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.OrderByDecending(x => x.Level)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.Take(10);
随时随地看视频慕课网APP
我要回答