2017-01-16 74 views
0

我是編程新手,因此有一個相當簡單的問題。我想應該可以顯示50次兩張不同的圖片,讓我們說出兩個不同的彩色圓圈,按照隨機順序一秒鐘或直到用戶按下某個鍵,但我不知道如何開始。有沒有簡單的方法?以隨機順序重複顯示兩張圖片

也許更容易入手的動作列表(可以顯示圓或顯示圓圈B)和隨機選擇喜歡從不同的問題,以下修改後的代碼它的一個:

class Program 
{ static void Main(string[] args) 
{ 
    List<Action> actions = new List<Action>(); 

    actions.Add(() => Program.circleA()); 
    actions.Add(() => Program.circleB()); 

    Random random = new Random(); 

    int selectedAction = random.Next(0, actions.Count()); //what does this line do? 

    actions[selectedAction].Invoke(); // and this one? 
}  

後來我有來定義Program.circleA和Program.circleB的功能,對吧?

我應該在循環中實現這個嗎?如果是的話,我如何指定每個圈子在滿足突破標準之前必須顯示50次?

我搜索了對於類似的問題,在互聯網,但無法找到一個解決方案或者只是無法理解他們,所以這就是爲什麼我#m的問你們和女孩:)

+0

讓我們從基礎知識開始......您想使用WinForms,WPF還是其他一些GUI框架?我個人推薦WPF,但其他人可能對此有不同的看法。但是,你聲明你是編程新手。根據新的「新」,你可能會更好地編寫幾個控制檯應用程序,然後再轉到GUI,然後在顯示圖像的地方寫一個新的簡單GUI應用程序,然後嘗試使圖像顯示基於時間的和隨機的。 – grek40

+0

好吧,我想保持它非常基本,並在WinForms的低水平。我認爲顯示紅色圓圈或黃色圓圈很簡單,並計算用戶按下某個鍵的次數。 – druce

+0

要點是:你應該首先嚐試顯示一個圓圈,而沒有任何花哨的額外。當你成功後,你可以轉向兩個圈子和其他附加功能。但是,你現在的代碼並沒有顯示基礎知識,所以一個潛在的答案需要涵蓋很多不相關的事情,這些事情應該屬於不同的問題。 – grek40

回答

0

如果我明白你的問題正確地說,你的問題基本上是「如何調用隨機動作/方法?」和「我的行爲邏輯好嗎?」。

從第二個開始(因爲它更簡單),答案將與對這個簡單問題的答案相同:「它是否在做它的工作?」。意思是說你的邏輯表現得像你想的那樣,答案是肯定的。如果它不,那麼不。

隨着第一個...這有點棘手,因爲你可以有許多不同的解決方案。您可以使用ReflectionActionFunc,定製delegate小號...

恕我直言)所以,「易」的方式(如果你有SH ..噸的方法)是使用反射和自定義屬性,像這樣:

public class RandomCircleMethodAttribute : Attribute 
{ 
    public RandomCircleMethodAttribute() : base() { } 
} 

然後將此Attribute分配給您要調用的方法。然後,使用Reflection只得到MethodInfo指着這些方法,並呼籲他們像這樣:

public class RandomCircleMethods 
{ 
    [RandomCircleMethod] 
    public void circleA() { //.. your logic here 
    } 

    [RandomCircleMethod] 
    public void circleB() { //.. your logic here 
    } 

    // add as many as you want 
} 

那麼你的入口點內(Main(string[] args)):

List<MethodInfo> methods = typeof(RandomCircleMethods).GetMethods().Where(method => Attribute.IsDefined(method, typeof(RandomCircleMethod))).ToList(); 
int selectedAction = new Random().Next(0, methods.Count); 
methods[selectedAction].Invoke(new RandomCircleMethods(), null); 

這樣你就不必創建Action名單。但這與你目前完成工作的方式一樣好。

我會堅持你目前的邏輯,儘管因爲它不那麼容易混淆,然後使用Reflection