[心得] [Xojo] 樂透號碼產生器

看板MacDev作者 (蕭易玄)時間12年前 (2013/06/14 23:07), 編輯推噓2(204)
留言6則, 3人參與, 最新討論串1/1
圖文版:http://xojo.tw/?q=node/9 http://i.imgur.com/ep7EtWi.jpg
(快速從MU空間下載: http://www.multiupload.nl/4G2MZCHT4E ) 這是另一個使用 Thread (執行緒) 運算,與配合 Timer (定時器) 更新的範例。 這個程式可以產生樂透的號碼,並且進行多次開獎模擬以取得客觀機率。 你甚至可以要求只要多少機率以上的。 我以每組數字模擬10萬次開獎(模擬越多次會愈接近真正的機率),要求 3% 以上, 結果目前已經產生超過 2221 組號碼,還沒有一組能達到… 這個原始碼有稍微把架構寫出來,如果你會改寫,可以加入各式彩券玩法的產生。 一樣可以支援機率模擬。 除了原始碼外,我也提供編譯好的版本,歡迎從MU空間下載。 http://www.multiupload.nl/4G2MZCHT4E Xojo 可以產生跨平台的程式,所以這個壓縮包, 包括了 Mac、Windows、Linux 的執行檔。 Windows 版抓圖 http://i.imgur.com/abd47Xd.jpg
Linux 版抓圖 http://i.imgur.com/4dUgLLF.jpg
寫點技術性的東西... 之前有提過,由程式語言本身來幫你在執行緒的多工中, 插空處理介面的控制項是很方便沒錯。 但是控制項的反應絕對比電腦的運算慢(即使從肉眼是看不出來的), 所以在進行足夠大量的運算時,就有可能發生兩種情況: 1.UI 跟不上多工,多工中的程式碼卻從 UI 中取值,結果取到舊的值。 2. 多工為了穩定,配合 UI 更新,結果拖累效能。 不管哪一種,在大量運算時,都不是我們想看到的。 所以最好的辦法是運算歸運算,介面歸介面。 由 Timer 定時器,以程式來控制介面的更新。 執行緒只跟全域變數互動,執行的進度及結果都存在變數中,定時會更新到介面。 人車分道(?)的寫法確實能兼顧效率及穩定。 每組 10 萬次的模擬開獎至今已經做完 2590 組,一點問題都沒有。 如果是以舊寫法在舊版 REALbasic 跑,跑到一定的數量是很容易出錯的。 然後提一下增加彩券玩法的方式。 首先,在 PopupMenu1 的 Open 事件中,加入新玩法。 //彩券種類 me.AddRow("大樂透") me.AddRow("威力彩") 從 Lottery_1 或 Lottery_2, 複製一個執行緒,依序取名 Lottery_?。 Counting_Method 模組中的方法,也要複製一份Lottery_?_Get 與 Lottery_?_Check。 參考原本的 Lottery_1、2 的 Get 與 Check,改寫產生條件,與檢查方式。 一個很好的練習是依照 Lottery_1 ,改寫成「今彩539」,因為產生的方式差不多。 然後,在「開始計算」按鈕的 Action 事件中, 依據你選擇的不同而載入不同的執行緒來運算,就照樣增加。 //視選擇的彩券不同,載入不同的功能執行緒。 If PopupMenu1.ListIndex=0 Then Dim t As new Lottery_1 t.run ElseIf PopupMenu1.ListIndex=1 Then Dim t As new Lottery_2 t.run End If 祝.好運~ -- 怒火燒盡九重天 去去去,武器走 迪歐加.古拉比冬 狠虎滅卻.震天動地 iLife 慈悲的王者 安哥爾摩亞 明聖劍法 iWork MAC_OS_X 禁千百貳拾式.八薙女 裏百八式.大蛇薙 iPod LanEVO 日月才子 藤原豆腐店 帝國歌劇團 鋼普拉 破邪劍征.櫻花放神 巴歐~薩喀爾嘎 共鳴 速速來,愛情 AE86 最終決戰奧義.無式 -蕭易玄- http://web.mac.com/eshen/iWeb -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.230.130.207

06/14 23:09, , 1F
程式碼有詳細(?)的註解喔 http://i.imgur.com/6diqUHa.jpg
06/14 23:09, 1F

06/14 23:10, , 2F
啊哈哈,一貼圖就看到錯誤 XD
06/14 23:10, 2F

06/16 16:27, , 3F
06/16 16:27, 3F

06/17 12:36, , 4F
推中間那段~(還在頭痛每秒table reload 3次+search引擎在
06/17 12:36, 4F

06/17 12:41, , 5F
在互相delay,ui等運算,等到運算完要reload時,又要運算了,導
06/17 12:41, 5F

06/17 12:43, , 6F
致,user在textfield卡卡的,鍵盤lag,被嫌到臭頭, T_T
06/17 12:43, 6F
文章代碼(AID): #1Hkp6kZf (MacDev)
文章代碼(AID): #1Hkp6kZf (MacDev)