如何在开始新游戏后存储分数

时间:2015-09-18 03:14:32

标签: c# visual-studio-2012 store

我正在制作一个猜数字游戏的项目。到目前为止,一切都很顺利,但我仍然在努力开发新游戏后存储得分的方法。例如,当用户获胜或失败时,分数将记录结果。用户可以单击按钮以在游戏期间查看分数。程序将询问用户是否要继续。如果是这样,程序将重新启动但不会重置分数。在用户关闭程序之前,分数将保持不变。这就是我想要的,但我仍然坚持让它发挥作用。如果有人可以提供帮助,将不胜感激。

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);
    }

}

2 个答案:

答案 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);

在猜测点击事件处理程序的开头