我正在制作一个猜数字游戏的项目。到目前为止,一切都很顺利,但我仍然在努力开发新游戏后存储得分的方法。例如,当用户获胜或失败时,分数将记录结果。用户可以单击按钮以在游戏期间查看分数。程序将询问用户是否要继续。如果是这样,程序将重新启动但不会重置分数。在用户关闭程序之前,分数将保持不变。这就是我想要的,但我仍然坚持让它发挥作用。如果有人可以提供帮助,将不胜感激。
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);
}
}
答案 0 :(得分:0)
不确定我理解。这不是你想要的吗?
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
}
}
答案 1 :(得分:0)
不确定我是否正确但我认为你所面临的问题当你调用application.restart方法时,int wins再次变为0 解决这个问题不止一个: 首先使用文件流或使用非常小的sql compact数据库将int wins和int loses保存到文件中,这样即使重新启动用户的pc后,你也可以随时保存得分并随时查看
一种非常非常简单的方法,您不必重新启动整个应用程序来开始新游戏..您可以使用go to keyword,它将从您想要的任何行重新执行您的代码< / p>
和btw你真的必须创建一个生成随机的整个方法 你可以这么说:
Random number = new Random();
int randomNumber = number.Next(1, 100);
在猜测点击事件处理程序的开头