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