//放一下之前實作過的內容,其實還缺很多東西
原始碼放在這裡[1]
程式碼稍微翻譯一下大概如下:
對手之前行動
# 處理蓋牌
if 對手之前行動==防禦 and 是攻擊(自身行動):
自身行動=無作用行動
elif 對手之前行動==封印 and 是術式(自身行動):
自身行動=無作用行動
elif 對手之前行動==封印 and 是攻擊(自身行動):
傷害反彈=True
# 處理幻化效果
if 自身行動==幻化 and 屬於基礎規則(對手之前行動):
自身行動=對手之前行動
else:
自身行動=無作用行動
對象ID = 取得對象ID(玩家人數, 自身的玩家ID, 自身行動) # 為了兩人以上對戰的擴充
數值 = 計算行動數值(出牌, 自身行動) # 五流歸一需要對手手牌數量
效果函式 = 效果列表[自身行動] # 查表
if 是攻擊(自身行動):
if 傷害反彈:
數值 = 數值/2 # 小數點要消掉,在此省略
傷害扣血(對手ID, 自身行動, 數值)
傷害扣血(自身的玩家ID, 自身行動, 數值)
else:
傷害扣血(對手ID, 自身行動, 數值)
else:
效果函式(對象ID, 數值)
更新玩家上回合行動(自身玩家ID, 自身行動)
當時寫到這的時候只有先確立邏輯,但是對應的數值資料還沒定義和串接,只是很模糊的用 PlyStat 和 env 代表。在當時的問題是沒辦法跑測試,只是概念,但沒辦法餵資料看程式邏輯對不對?在更後面是因為還要再塞更複雜的系統進來,覺得if-else的階層數會無止盡地長下去,程式很難維護,於是這作法就沒再繼續用了
老實說 if-else 的作法不是不行,寫的時候腦袋清楚也可以,所有的情況都有考慮到,也跑得起來。
這實作其實只差光芒和混沌的實作就能算完成了。光芒的部份跟遊戲流程有關,gameLoop那時候沒作出來。
混沌的話,要看對手牌、然後抽兩張,這些動作需要把整個遊戲環境資料弄起來。
後來我改了其他的寫法,目前還寫到一半[2]
前面東西交代完了,之後日誌的重心會比較轉往實作開發的部份
[1] pyCFE/t.effect.py at feat-randAction · outshaker/pyCFE
https://github.com/outshaker/pyCFE/blob/feat-randAction/t.effect.py
[2] pyCFE/t.rAction.py at feat-randAction · outshaker/pyCFE
https://github.com/outshaker/pyCFE/blob/feat-randAction/t.rAction.py