---
# System prepended metadata

title: Monopoly in 虎尾 技術架構 v1.0

---

# 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」，暫時隱藏此景點。
至於應該隱藏左或右方景點，則依照先前問卷調查的景點人氣判斷，優先隱藏人氣低的景點。