У меня проблемы с сортировкой системы подсчета очков для моей игры. Проблема возникает, когда я сортирую массив «HighScoresPointsLevel1», потому что, несмотря на отображение массива в правильном порядке, он не имеет связи с «HighScoresNameLevel1». Другими словами, высокий балл за игру присваивается случайному имени игрока.
Возможное решение? Я думал, что если бы мне удалось передать два параметра (HighScoresPointsLevel1, HighScoresNameLevel1) внутри array.sort / array.reverse, но проблема в том, что array.reverse dosent принимает два параметра. Причина, по которой я думал, что это сработает, заключается в том, что при вызове 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);
}
}