# Monopoly in 虎尾 技術架構 v1.0 ## 系統流程控制 ``` 玩家加入官方帳號好友 →提示玩家使用條款以及遊戲規則 →等待玩家輸入字串 '好' →提示玩家選擇起始景點 →等待玩家輸入起始景點 →隨機幫玩家分隊,回傳結果與團隊社群網址 遊戲開始 →等待玩家輸入行動(骰子、隊伍、投資狀況、地圖、規則、Token、管理員特殊指令) ``` ``` 玩家選擇骰子 →隨機一個1~6的整數,判斷格子種類 商家格 →提示玩家商家資訊以及任務題目 →等待玩家輸入正確的任務答案 景點格 →提示玩家景點資訊 →等待玩家輸入是否進行投資 是 →提示玩家輸入投資金額 →等待玩家輸入投資金額 →在資料庫的景點格中的所屬團隊加入該金額 否 →什麼都不做 機會格 →發放優惠券給玩家 命運格 →提示玩家隨機一段資料庫中的話 ``` ``` 玩家選擇Token →提示玩家輸入從店家獲得的Token Code →等待玩家輸入正確的Token Code →在資料庫中查詢此Token Code 正確 →增加玩家在資料庫中的金錢100單位 失敗 →提示玩家Token Code無效 ``` ``` 玩家選擇隊伍 →提示所屬團隊與團隊社群連結 ``` ``` 玩家選擇投資狀況 →提示目前資料庫中各景點格的團隊投資狀況 ``` ``` 玩家選擇地圖 →提示地圖圖片 ``` ``` 玩家選擇規則 →提示規則文字 ``` ``` 特殊指令:週期結算 →計算勝利的團隊 →向團隊成員提示勝利訊息 →初始化資料庫 ``` ``` 特殊指令:增減商家 →等待管理員輸入商家名稱 →判斷資料庫中有無此商家 有 →資料庫中刪除商家資訊 無 →等待管理員輸入商家位置區間 →等待管理員輸入商家任務 →資料庫中新增商家資訊 ``` ## 系統如何選擇商家? 參與遊戲的商家預期會比商家格數量還多,那系統要如何決定選擇哪個商家顯示任務呢?商家資料中包含了他所位於的「景點區間」,也就是每個商家會決定位於哪兩個景點之間,系統會從景點區間中隨機抽取其中的一個商家。 但景點區間的數量和地圖上的格子數是不一樣的,因此遊戲進行時,**每一個商家格會對應到一個景點區間,但對應到哪個景點區間並不是固定的**。舉例來說,有1、2、3三個景點,玩家的將起點設為景點1,則第一個商家格所對應的景點區間為12區間,後面的景點格則為景點2。 ## 景點格的投資 玩家到達景點格時,可以選擇投資景點格,**請注意並不是投資「景點」**,也就是說,整張地圖僅有6個可投資的景點格。玩家是以團隊為單位進行對景點格進行投資。 結算時,首先統計各個團隊所佔領的景點格數,在各個景點格中累計Token最多的團隊即為佔領該格,若有若干個團隊佔領數相同,則比較他們的總Token數,最多的為勝利。 ## 字串辨識 與官方帳號溝通均使用事先約定的Rich menu按鈕與詞語,其餘不符合格式的訊息(如貼圖、照片、其他訊息等)均視為無效訊息。 # 資料庫維護 我們會需要維護以下幾個資料庫以及欄位: ## 玩家資料庫 - 玩家ID - 所在位置格子代號 - 任務答案 - 所屬團隊 - 所持Token數 ## 商家資料庫 - 商家名稱 - 商家介紹 - 任務題目 - 任務答案 - 所在區間起點 - 所在區間終點 ## 地圖資料庫 - 景點代號 - 景點名稱 - 景點類型 - 啟用/隱藏 - 景點介紹 ## Token Code資料庫 - Token Code - 是否已兌換 ## 景點格資料庫 - 景點格代號 - 各團隊投資總額 ## 命運資料庫 - 語句ID - 語句字串 # 特殊案例探討 ## 如果兩個景點之中沒有商家,遊戲會無法進行!? 商家加入遊戲時,會在20個景點區間中選擇一個最適合的,若景點之間無商家,玩家走到商家格時將會無任務可解。 因此,每當有商家加入或離開資料庫時,必須做一個檢查,統計這20個區間的商家數量,若有一個區間無商家,會將左或右其中一個景點標記為「disable」,暫時隱藏此景點。 至於應該隱藏左或右方景點,則依照先前問卷調查的景點人氣判斷,優先隱藏人氣低的景點。