2009年3月27日 星期五

程式練習:顏色混合

應用Button ,checkBox,pictureBox、label




程式碼:僅列出主要撰寫部分


設計概念為顯示各種顏色混和,勾選欲混和的顏色按下Mix就會出現相對應之顏色



模擬啟始狀態



勾選藍色時顯示藍色



勾選紅色時顯示紅色



勾選黃色時顯示黃色



紅色+藍色 = 紫色






黃色+藍色 = 綠色







紅色+黃色 = 橘色







紅色+藍色+黃色 = 黑色








都無動作且按下Mix時




原本是想寫一個加法計算功能的程式,但苦於不知道如何讓PDA去辨認輸入的值當成一個變數只好作罷,後來改寫這個顏色混合的程式,原本是在主程式宣告兩個變數a、b並且設定當有勾選或無勾選時a=1~6,而b=1~5設計為當a同時為一個以上變數所代表的可能性(例如同時勾選藍以及黃),模擬出來的結果是可以顯示單獨以及混合出來的顏色,但是卻有一個BUG,當顏色呈現為混合的顏色時,而後再去單獨勾選顯示紅黃藍一種顏色圖形卻無法顯示,至今我還想不出為什麼,最後我改用最原始的方法,不宣告變數,僅在Button列的程式碼列出各種情況並針對每一種情況去讓程式作反應,果然這種方法就能把所有的情況都顯示出來。

2 則留言:

  1. 辨認輸入的值好像有一個readline()的用法。
    GOOGLE一下 "c# readline()" 就會有一些說明


    你一開始的想法b應該只有1~4吧(紫、綠、橙、黑),你如果只用2個變數控制迴圈可能要改成用for,這樣程式才會一直去判斷你現在a、b的值,還是要看一下你原始程式碼我才知道。

    你現在的作法也可以改良一下,用if、elseif跟else,讓程式先判斷藍色勾選沒,假如有再看看有沒有勾其他的,如果沒有再判斷紅色,紅色有就看看有沒有黃,假如也沒紅再判斷有無黃;這樣做的好處是你的程式不用每次執行都把所以情況都跑一遍,可以提昇執行速度,當然一定還有更好的辦法,這就是寫程式的經驗跟技巧。

    回覆刪除
  2. b1~4(紫、綠、橙、黑)以外,我還預設一種都不勾選按下MIX的label會顯示"Nothing"情況,所以才設為5。

    另外我會研究一下 for迴圈還有 if、else if的寫法,如你所說程式當然是越精簡越好(前提是同樣效能),每失敗一次就越往目標前進一次。

    感謝指導。

    回覆刪除