實作規則引擎,重回去年的惡夢-事件迴圈
進度:
合併物件,因為有 @property 的關係,能夠很有效的遮蔽內部的變數,所以算是達到封裝的目的,然後也沒必要把簡單的物件拆分太多出來
仲裁者,這個物件負責處理 [pid, seleC, zid] 到 [objID, efctID, val] 這段過程。
它會根據遊戲場面上的狀態,計算出最後的結果
取用資料
O上家,P玩家,Q下家
P.isDizzy 合法性:判斷可否行動
O.hasCover, cover 有效性:蓋牌
Q.hasShell 有效性:剋陣
O.lastDeal,val 調整:幻化
O.nHand 調整:五流歸一
O.hasShell,P.zid 修正:防護罩
O.lastDeal,P.zid 修正:五行生剋
O.HP, P.HP 判斷遊戲是否繼續?
一樣去年也有寫事件模式,但感覺好像沒有寫到點,總覺得有點缺憾,跟一般在 js 用事件的感覺不一樣。然後也思考要怎麼調整現在的程式寫法
講到事件、callback、非同步、promise、aysnc 這些東西的時候,覺得腦袋常常處於冒煙的狀態。內心OS是如果語言本身就提供不錯的機制讓我寫就好了,但偏偏我在用的是 python 不是 javascript。
延續傳遞風格(Continuation-passing style, CPS) 使用事件的程式常常會變成這種 CPS 風格。我目前算是卡在這裡
python 現在有 aysnc/await 了,考慮在今年導入這種模式,希望能夠避開 callback ,CPS 帶給我的噩夢。
以上,謝謝大家縮看,繼續拚實作