我制作了一个hang子手游戏,并且希望能够在您赢/输后重启它,而不是每次都要手动重启程序。应用程序不存在于C#控制台中,我想重新启动控制台
我在互联网上看到'应用程序',可以用来重新启动控制台。但是,它表示应用程序不存在。
Close();
System.Diagnostics.Process.Start(Application.ExecutablePath);
请帮帮我!
我制作了一个hang子手游戏,并且希望能够在您赢/输后重启它,而不是每次都要手动重启程序。应用程序不存在于C#控制台中,我想重新启动控制台
我在互联网上看到'应用程序',可以用来重新启动控制台。但是,它表示应用程序不存在。
Close();
System.Diagnostics.Process.Start(Application.ExecutablePath);
请帮帮我!
我不认为你真的需要重新启动你的控制台应用程序来重新开始你的游戏。这里是一个可能的游戏重新启动的情况,可用于:
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
并无痛地引入新功能。
难道你不能只是添加一些代码来重置应用程序,而不是实际重新启动它? – JLe
我想你听说过循环和东西?为什么需要重启程序有正当理由吗? –
请参阅Patrick关于如何获得执行/入口程序集的答案,但正如JLe所说,这不是解决实际问题的好方法。即你不应该每次都重新开始游戏。 考虑让你的状态重置为知道状态或将你的状态封装在单独的对象等方法 – Andre