我做了一个简单的冒险游戏,玩家必须杀死所有敌人。玩家有一个健康点,如果此健康点<= 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();
}
您能解释一下我哪里做错了吗?
答案 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)
private void restartButton_Click(object sender, EventArgs e)
{
Application.Restart();
}