重新启动游戏而不退出应用程序

时间:2019-04-03 11:52:15

标签: c#

我做了一个简单的冒险游戏,玩家必须杀死所有敌人。玩家有一个健康点,如果此健康点<= 0游戏结束,然后显示游戏菜单(有开始按钮,退出按钮,重新开始按钮)。如果游戏结束并且玩家选择重新开始,我希望游戏从头开始。其实我在Form游戏中有类似的东西

private void checkHitPoints(int playerHitPoints)
{
    if (game.PlayerHitPoints <= 0)
    {
        MessageBox.Show("You have been killed", "Opsss");
        menu.VisibleRestart();
        menu.ShowDialog();
    }
}

在带有菜单的“表单”中

private void restartButton_Click(object sender, EventArgs e)
        {
            this.Close();
            Dungeons dungeons = new Dungeons();
        }

如果我按下restartButton,我会尝试调用构造函数,但不幸的是,它无法正常工作。而且带有游戏的主类构造函数看起来像这样

public Dungeons()
        {
            InitializeComponent();
            this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint |
                ControlStyles.OptimizedDoubleBuffer, true);
            player30.Visible = true;
            CenterToScreen();
            this.Show();
            menu.ShowDialog();
        }

您能解释一下我哪里做错了吗?

2 个答案:

答案 0 :(得分:-1)

  

我在哪里弄错了?

您好像在这里做了一个

this.Close();
Dungeons dungeons = new Dungeons();

看一下这段代码!您创建dungeons变量,并在restartButton_Click函数结束时立即将其处置。最好将dungeons变量移出函数范围,如下所示:

Dungeons dungeons;
private void restartButton_Click(object sender, EventArgs e)
{
    dungeons = new Dungeons();
}

然后this.Close()会关闭您的应用程序(当前表单)。

答案 1 :(得分:-1)

只需致电Application.Restart()

    private void restartButton_Click(object sender, EventArgs e)
    {
        Application.Restart();
    }