[英]How to store a score after starting new game
我正在做一个猜数字游戏的项目。 到目前为止,一切都很顺利,但是我在开始新游戏后仍在努力存储得分的方法。 例如,当用户获胜或失败时,分数将记录结果。 用户可以在游戏过程中单击按钮以查看分数。 该程序将询问用户是否要继续。 如果是这样,程序将重新启动,但不会重置分数。 分数将一直保留到用户关闭程序为止。 那就是我想要的,但是我仍然坚持使其工作。 如果有人可以提供帮助,将不胜感激。
public class Main: Form
int attempt;
int randomNumber;
int count;
private static int wins;
private static int loses;
private void Form1_Load(object sender, EventArgs e)
{
attempt = 0;
wins = 0;
loses = 0;
count = 10;
randomNumber = generateRandomNumber();
StartNewGameButton.Visible = false;
}
private void Guess_Click(object sender, EventArgs e)
{
int guess = 0;
guess = Convert.ToInt32(textBox1.Text);
attempt++;
label4.Text = "Guess Attempt: " + attempt;
if (guess == randomNumber)
{
wins++;
label4.Text = "Your guess is correct! Game Won";
label2.Visible = false;
label3.Visible = false;
GuessButton.Visible = false;
if (MessageBox.Show("Do you want to play again?", "Start a new game", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
{
Application.Restart();
}
else
{
Application.Exit();
}
}
else
if (guess < randomNumber)
{
label2.Text = "Too low!";
}
else if (guess > randomNumber)
{
label2.Text = "Too high!";
}
if (attempt == count)
{
loses++;
label4.Text = "Sorry, You missed it! Game Lost";
label2.Text = "The answer is " + randomNumber;
label3.Visible = false;
GuessButton.Visible = false;
StartNewGameButton.Visible = true;
}
}
private int generateRandomNumber()
{
Random number = new Random();
int randomNumber = number.Next(1, 100);
return randomNumber;
}
private void StartNewGameButton_Click(object sender, EventArgs e)
{
Application.Restart();
}
private void CheckScoreButton_Click(object sender, EventArgs e)
{
MessageBox.Show("Win: " + wins + "\nLose: " + loses);
}
}
不确定我是否理解。 难道这就是你想要的吗?
private void CheckScoreButton_Click(object sender, EventArgs e)
{
if ( MessageBox.Show("Win: " + wins + "\nLose: " + loses + "\n\nDo you want to Continue?", "Continue?",
MessageBoxButtons.YesNo) == DialogResult.No)
{
Form.Close();
}
else
{
// Reset as necessary
}
}
不确定我做对了吗,但是我认为您遇到的问题是,当您调用application.restart方法时,int wins再次变为0,有一个以上的方法可以解决此问题:首先将int wins和int Loss保存在一个文件中,使用文件流或使用非常小的sql压缩数据库,通过这种方式,即使重新启动用户的PC之后,您也可以随时保存分数并轻松查看分数
一种非常非常简单的方法,您不必重新启动整个应用程序即可开始新游戏..您可以使用go to关键字,它将从您想要的任何行中重新执行代码
顺便说一句,您是否真的必须创建一个完整的方法来生成随机数,您可以说:
Random number = new Random();
int randomNumber = number.Next(1, 100);
在猜测点击事件处理程序的开头
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.