所以我想知道如何创建一个高分系统。我用得分做了一个简单的游戏,但是我希望将高分保存在一个文件中,所以当应用程序运行时你可以看到名字的高分。 到目前为止我的游戏代码,如果需要的话:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Guess_the_number_1
{
public partial class Form1 : Form
{
int randomNumber;
int score;
Random random;
public Form1()
{
InitializeComponent();
random = new Random();
}
private void Form1_Load(object sender, EventArgs e)
{
score = 0;
label1.Text = score.ToString();
}
private void buttonCheckGuess_Click(object sender, EventArgs e)
{
randomNumber = random.Next(0, 10);
if (Convert.ToInt32(textboxGuess.Text) == randomNumber)
{
MessageBox.Show("Your Guessed Correctly! The Number Is: " + textboxGuess.Text);
score += 10;
}
else if (Convert.ToInt32(textboxGuess.Text) < randomNumber)
{
MessageBox.Show("The Number Is Larger Than: " + textboxGuess.Text);
score -= 2;
}
else if (Convert.ToInt32(textboxGuess.Text) > randomNumber)
{
MessageBox.Show("The Number Is Smaller Than: " + textboxGuess.Text);
score -= 2;
}
else
{
MessageBox.Show("Your Guessed Incorrectly. The Random Number Is Not: " + textboxGuess.Text);
}
label1.Text = score.ToString();
}
private void buttonScore_Click(object sender, EventArgs e)
{
MessageBox.Show("Your score is " + score);
}
private void listScore_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void label1_Click(object sender, EventArgs e)
{
}
}
}
答案 0 :(得分:3)
我这样做的方法是将其序列化为XML。这将允许您保存几个高分,此外,存储其他信息,例如播放器的首字母。要做到这一点,首先要创建一个这样的类:
[Serializable()]
public class HighScore {
public int Score { get; set; }
public string Initials { get; set; }
}
public List<HighScore> _highScores = new List<HighScore>();
您将把所有分数添加到集合类中:
// To save a high score
var score = new HighScore() { Score = 100, Initials = 'MAJ' };
_highScores.Add(score);
// ... add more scores if needed
然后,当您的应用程序退出时(或者只要您想保存高分),就可以将您的高分数序列化为XML:
var serializer = new XmlSerializer(_highScores.GetType(), "HighScores.Scores");
using (var writer = new StreamWriter("highscores.xml", false))
{
serializer.Serialize(writer.BaseStream, _highScores);
}
最后,当您的应用程序加载(或随时)时,您可以使用此代码将XML反序列化为高分集合:
// To Load the high scores
var serializer = new XmlSerializer(_entities.GetType(), "HighScores.Scores");
object obj;
using (var reader = new StreamReader("highscores.xml"))
{
obj = serializer.Deserialize(reader.BaseStream);
}
_highScores = (List<HighScore>)obj;
答案 1 :(得分:1)
要加载最佳分数,请使用以下功能
using(System.IO.StreamReader sr=new System.IO.StreamReader("fileYouHaveSavedTheScore.txt")
this.label1.Text=sr.ReadLine();
要保存分数,您可以执行以下操作:
System.IO.StreamReader sr = new System.IO.StreamReader("fileYouHaveSavedTheScore.txt");
if(Convert.ToInt32(sr.ReadLine())<Convert.ToInt32(this.label1.Text)
{
sr.Close();
using(System.IO.StreamWriter sw=new StreamWriter("fileYouHaveSavedTheScore.txt",false))
sw.WriteLine(this.label1.Text);
}
修改强>
不要使用Convert.ToInt32(string)
的所有内容,最好使用方法int.TryParse(string, int out)
。 Here您可以找到此方法的参考资料
答案 2 :(得分:0)
我使用了两种简单的方法来保存游戏中使用的高分。 这两种方法都使用TextWriter和TextReader。这很简单,可能会帮助您,或者至少会帮助您。希望对您有所帮助,请在下面链接。顺便说一句,我正在创建Galaga和Space Invaders的混搭,这对我来说很方便。