我做了一个刽子手游戏,我希望能够在你赢了/输了之后重启它,而不是每次都要手动重启程序。
我在互联网上看到“应用程序”可以用来重启控制台。但是,它说应用程序不存在。
Close();
System.Diagnostics.Process.Start(Application.ExecutablePath);
请帮助我!
答案 0 :(得分:1)
您可以通过here找到它:
您需要添加System.Windows.Forms
程序集并添加using
using System.Windows.Forms
但对于控制台应用,我更喜欢使用this(在您的控制台程序集中):
System.Reflection.Assembly.GetExecutingAssembly().Location
就像安德烈所说的评论一样,你甚至可以更好地使用Assembly.GetEntryAssembly()
,因为它获得了第一个被调用的程序集(当然是控制台应用程序中的可执行程序)
而且,就像先前已经删除的答案一样,首先重新打开,然后关闭应用程序。
答案 1 :(得分:0)
我认为你真的不需要重新启动你的控制台应用程序来重启你的游戏。这是一个可以使用的游戏重启场景:
class Program
{
static void Main(string[] args)
{
Game game = new Game();
Menu menu = new Menu(game);
game.Finished += menu.AskAndRun;
menu.Welcome();
}
}
class Menu
{
public readonly IRunnable runnable;
public Menu(IRunnable runnable)
{
this.runnable = runnable;
}
public void Welcome()
{
Console.WriteLine("Welcome, Player!");
AskAndRun();
}
public void AskAndRun()
{
Console.WriteLine("\nTo play a new game, press [ENTER]");
Console.ReadLine();
Console.Clear();
runnable.Run();
}
}
interface IRunnable
{
void Run();
}
class Game : IRunnable
{
public event Action Finished;
public void Run()
{
Console.WriteLine("Game started here...");
Console.WriteLine("Oops! Game finished already");
if (Finished != null)
{
Finished();
}
}
}
如您所见,Game
类与重启逻辑分开,现在由Menu
类处理。现在,引入诸如退出和计算已开始游戏数量等新功能是微不足道的。
请注意Menu
不依赖于Game
的事实。这取决于IRunnable
,这有助于您更改Game
,测试Menu
并轻松引入新功能。