我製作了一個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