我知道关于这个主题有很多类似的问题,但我找不到任何对我有帮助的答案。我创建了一个游戏,您必须在其中说明您的玩家编号(1、2、3 等)。完成游戏后,它将在记分牌中显示您的玩家编号和分数。我正在尝试使计分板工作,以便它将分数从高到低排序,并在每个旁边给出正确的玩家编号。我将这两个都保存为列表。我知道我可以使用 .Sort() 和 .Reverse() 将分数从高到低排序,但我如何确保它们仍然与正确的玩家编号相关联?我想出了下面的代码,它对分数进行了轻微但不完全的排序。例如,如果玩家 1 得分 2,玩家 2 得分 3,玩家 3 得分 5,则从高到低排序为;球员 2 得 3 分,球员 3 得 5 分,
列表初始化如下:
public static List<int> score = new List<int>();
public static List<int> player = new List<int>();
这是代码的一部分,如果您在游戏中失败,它会存储您的玩家编号和得分,然后打开记分牌表格。
else
{
MessageBox.Show("Final Score: " + sequence.Count, "Fail!");
score.Add(sequence.Count);
player.Add(Convert.ToInt32(PlayerNo.Text));
for (int i = 0; i < (player.Count - 1); i++)
{
if (score[i + 1] > score[i])
{
int hi = score[i];
int hi1 = player[i];
score[i] = score[i + 1];
player[i] = player[i + 1];
score[i + 1] = hi;
player[i + 1] = hi1;
}
}
number = 0;
sequence = new List<int>();
Score s = new Score();
this.Hide();
s.ShowDialog();
this.Close();
}
记分牌表格看起来像这样(我知道它很冗长,但我不知道有更好的方法来做到这一点——我用 C# 编码的时间不长)。
public Score()
{
InitializeComponent();
switch (Form5.player.Count)
{
case 1:
textBox1.Text = "Player " + Form5.player[0] + " scored " + Form5.score[0];
break;
case 2:
textBox1.Text = "Player " + Form5.player[0] + " scored " + Form5.score[0];
textBox2.Text = "Player " + Form5.player[1] + " scored " + Form5.score[1];
break;
case 3:
textBox1.Text = "Player " + Form5.player[0] + " scored " + Form5.score[0];
textBox2.Text = "Player " + Form5.player[1] + " scored " + Form5.score[1];
textBox3.Text = "Player " + Form5.player[2] + " scored " + Form5.score[2];
break;
case 4:
textBox1.Text = "Player " + Form5.player[0] + " scored " + Form5.score[0];
textBox2.Text = "Player " + Form5.player[1] + " scored " + Form5.score[1];
textBox3.Text = "Player " + Form5.player[2] + " scored " + Form5.score[2];
textBox4.Text = "Player " + Form5.player[3] + " scored " + Form5.score[3];
break;
case 5:
textBox1.Text = "Player " + Form5.player[0] + " scored " + Form5.score[0];
textBox2.Text = "Player " + Form5.player[1] + " scored " + Form5.score[1];
textBox3.Text = "Player " + Form5.player[2] + " scored " + Form5.score[2];
textBox4.Text = "Player " + Form5.player[3] + " scored " + Form5.score[3];
textBox5.Text = "Player " + Form5.player[4] + " scored " + Form5.score[4];
break;
记分牌表单本身只有 5 个文本框。关于如何解决/完成此问题的任何想法或新方法的建议?我见过有人提到 XML 文件,但我不知道如何使用这些文件。提前感谢您的任何建议。