2016-01-07 23 views
0

我在c#中製作了一個遊戲,有很多關卡,每次丟失的時候,我都想要一個能夠給你許多選擇的表單,包括「重試」。
我知道如何訪問該表單並重新加載失敗的級別,但是我不知道是否有任何方法可以創建該選項表單,並且每次點擊Retry以重新載入PREVIOUS表單。回到以前的表格很多次

+2

[如何提出問題](http://stackoverflow.com/questions/ask)你也可以顯示代碼..總是有一種方法來做一些事情,當涉及到編碼 – MethodMan

回答

1

你有很多選擇之一是使用Singleton Pattern。這是一個非常快和過於簡單的例子,但你會做這樣的事情:

public class OptionsForm : Form 
{ 
    private static OptionsForm _instance; 
    public static OptionsForm Options 
    { 
     get 
     { 
      if (_instance == null) _instance = new OptionsForm(); 
      return _instance; 
     } 
    } 

    private int ActualLevel; //variable to hold the level to "go back to/retry" 

    public void ShowOptions(int actualLevel) 
    { 
     ActualLevel = actualLevel; 
     //do any processing required 
     Show(); // or ShowDialog(); depending on your needs 
    } 
} 

你會那麼做這樣的事情:

public void OnLevelFailed() //whatever you call when the user loses the level 
{ 
    OptionsForm.Options.ShowOptions(thisLevel); 
} 
1

查找到的對象的範圍在C#中,例如去MSDN。該網頁是古老的,但教好的概念。

您基本上需要將您的選項表單設置爲保持範圍。一種方法是將該表單的對象設置爲靜態。然後,您可以儘可能多地重複使用它。

這增加了很多併發症。你將不得不趕上Form.Closing事件,並取消關閉,而不是表單。完成後,您可能需要手動輸入表格的Dispose

如果你只想這樣做,因爲它可以節省每次創建表單的努力,不要這樣做。 .NET非常擅長創建表單,並不介意這樣做。做這一切的唯一好理由是保持用戶在每次打開表單時設置相同的選項,並且有一些方法可以被認爲是更好的編碼實踐,例如模型視圖控制器 - 概念是保持數據(用戶的選項)與數據視圖(顯示這些選項的表單)分開。

開始編寫遊戲是雄心勃勃的。祝你好運!