繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM