2018年12月3日 星期一

[筆記] Python - 應用 decorator 實作函式開關

  最近為了課程撰寫遊戲的 server 端 (專案於 Github),主要提供遊戲資訊跟進程控制的功能,client 端是一群擁有通訊功能的迷宮車,兩邊靠既定的指令溝通。在設計遊戲功能時,有些指令希望只在遊戲開始後才有作用,但又不可能讓 client 端乖乖在遊戲開始後才發送指令。最直觀的作法就是在每個處理指令的函式中檢查遊戲是否開始:
def game_command(...):
    if not game_is_started:
        return
    # Other jobs
但很快發現充滿重複的程式碼,而且影響程式碼的簡潔與維護的不方便。於是上網查找有無類似 C# 的 function attribute 的寫法,只要在函式的定義前加上像是 game_started 的 attribute,就可以控制該函式的行為。於是找到了 decorator (裝飾器)

  本篇主要介紹我如何在專案中使用 decorator,先簡單介紹 decorator,接著是本篇主題 ─ 利用 decorator 來實作函式開關,與在類別中使用 decorator,最後是如何進一步強化 decorator 的能力。以下講解皆使用 python 3。

2018年3月4日 星期日

[桌遊/心得] 百鬼陰陽譚 與 棋幻爭霸

  介紹由硬盒子桌遊所設計的兩款募資桌遊。當初因為陰陽百鬼譚而知道硬盒子桌遊,個人頗喜歡百鬼譚的角色,再加上募資的組合中有奇幻爭霸,這位西洋棋控的手就忍不住了。(計畫通)

2018年2月19日 星期一

[桌遊/心得] 鋼鐵與火藥 ─ 文藝復興 與 歷史長流

  鋼鐵與火藥 ─ 文藝復興 與 歷史長流 這兩款桌遊都是由摩埃創意工作室設計出品的桌遊,這兩款桌遊的共同點為都是經營類型且擁有時代演進的概念。

2018年2月18日 星期日

[桌遊/心得] PANDEMIC 瘟疫危機 - 原版、The Cure (骰子板)、Contagion (病毒擴散)

  這次來介紹瘟疫危機系列的其中三款 ─ 原版、The Cure、Contagion。這是我第一款接觸到的合作遊戲,所有玩家共享勝利或失敗,有時候競爭類型玩多了,也可以嘗試每個人都是隊友的桌遊。
2018年2月17日 星期六

[桌遊/心得] RETREAT 系列 - 波波夫 popov

  身為一名喜好桌遊的傢伙,居然沒有想過要發一下自己的心得文(打頭)。因此趁著過年空閒的時間,打算整理出自己目前擁有的桌遊的心得文,也一起推廣桌遊與尋找同好。

  這系列的文章以項目式對每一款桌遊做介紹。「介紹」部分會簡述該桌遊的核心玩法與故事背景,並不會介紹詳細的玩法,方便直接了解這款桌遊。「心得」與「喜好程度」部分則是個人對於這款桌遊的感想,我喜歡策略類型的桌遊,因此心得這部分不會是客觀的。「類型」的策略量度是:輕度,局勢簡單,行動不會太繁雜;中度,局勢需要經過推理思考,行動稍微複雜;重度:就像權力遊戲桌遊那樣重吧。