# 大富翁 Document ## 完整版Demo影片 https://youtu.be/YnqnBqD97M4 ## 檔案樹 ``` . ├── CMakeLists.txt ├── Dice │   ├── Dice.cpp │   └── Dice.h ├── Handler │   ├── EventHandler │   │   ├── eventHandler.cpp │   │   ├── eventHandler.h │   │   └── eventHandlerGetterSetter.cpp │   └── MapHandler │   ├── mapHandler.cpp │   └── mapHandler.h ├── Hospital │   ├── Hospital.cpp │   └── Hospital.h ├── ItemCard │   ├── Base │   │   ├── ItemCard.cpp │   │   └── ItemCard.h │   ├── RoadblockCard │   │   └── RoadblockCard.h │   └── RocketCard │   └── RocketCard.h ├── Land │   ├── Land.cpp │   └── Land.h ├── Map │   ├── map.cpp │   └── map.h ├── MiniGames │   ├── DragonGate │   │   ├── DragonGate.cpp │   │   └── DragonGate.h │   └── HorseRacing │   ├── HorseRacing.cpp │   └── HorseRacing.h ├── MovePoint │   ├── MovePoint.cpp │   └── MovePoint.h ├── Player │   ├── Player.cpp │   └── Player.h ├── Resources │   ├── images │   │   ├── Chang.png │   │   ├── Chiang.png │   │   ├── Horses │   │   │   ├── horse1.png │   │   │   ├── horse2.png │   │   │   ├── horse3.png │   │   │   └── horse4.png │   │   ├── Tuan.png │   │   ├── Wu.png │   │   ├── building.png │   │   ├── card.png │   │   ├── cheat.png │   │   ├── cheat_1.png │   │   ├── grass_real.jpg │   │   ├── house.png │   │   ├── money.png │   │   ├── roadBlock.png │   │   └── shop │   │   ├── background.png │   │   ├── index0.png │   │   ├── index1.png │   │   ├── index2.png │   │   ├── index3.png │   │   └── index4.png │   ├── json │   │   ├── card.json │   │   ├── command.json │   │   ├── config.json │   │   ├── country.json │   │   └── event.json │   └── resourse.qrc ├── Shop │   ├── shop.cpp │   └── shop.h ├── StateDisplay │   ├── StateDisplay.cpp │   └── StateDisplay.h ├── UI │   ├── Bankruptcy_popUp.qml │   ├── BuyLand_popUp.qml │   ├── CardOpenBtn.qml │   ├── CardPopup.qml │   ├── CheatCommandLine.qml │   ├── CheatCommandOpenBtn.qml │   ├── Dice.qml │   ├── DragonGate.qml │   ├── EndPopUp.qml │   ├── HorseRacing.qml │   ├── Hospital_popup.qml │   ├── Main.qml │   ├── Message_popUp.qml │   ├── RefreshPopup.qml │   ├── ShopPopup.qml │   ├── StateContainer.qml │   ├── Turntable.qml │   ├── UpgradeOrSell_popUp.qml │   └── baseWidget │   ├── CostumBtn_Rec.qml │   └── Standard_Text.qml ├── UseCardSetting │   ├── UseCardSetting.cpp │   └── UseCardSetting.h ├── include │   └── nlohmann │   └── json.hpp ├── README.md └── main.cpp ``` ## 醫院 (Hospital) ![image](https://hackmd.io/_uploads/H1nZvqNGgx.png) `Hospital.h` `Hospital.cpp` 處理醫院入住 / 提早出院 等相關操作 `/UI/Hospital_popup.qml` 顯示醫院剩餘天數的Popup,可以選擇付錢提早出院,或者擲骰子免費提早出院 (點數 >= 8) ## 道具卡 (ItemCard) ![image](https://hackmd.io/_uploads/r1VGLcEMlg.png) ![image](https://hackmd.io/_uploads/S15NI5Vzel.png) ### 介紹 1. 路障卡 - 在指定地塊放置路障,阻擋玩家前進 2. 火箭卡 - 將指定玩家送入醫院N天(轉盤決定) 3. 隨機事件卡 - 觸發隨機事件 4. 控骰卡 - 控制骰子點數,指定前進格數 5. 拆除卡 - 拆出其他玩家之指定不動產 ### 檔案結構 `Base/ItemCard.cpp` `Base/ItemCard.h` 道具卡Class的基底Class `RoadblockCard/RoadblockCard.h` 路障卡的Class及使用 `RocketCard/RocketCard.h` 火箭卡的Class及使用 其餘的Code寫在`EventHandler.h` 及 `EventHandler.cpp`內 ## 小遊戲 ![image](https://hackmd.io/_uploads/ryd2I94Gex.png) ![image](https://hackmd.io/_uploads/S1t68qEfgl.png) ### 射龍門 (DragonGate) #### 遊戲規則 --- 系統抽出兩張牌(數字 1~13,不計花色),此時會有兩種情況 兩張數字不同 玩家猜下一張抽出的牌在兩張牌的開區間範圍內,還是不在開區間範圍內 如果抽出的牌被玩家猜對則贏得賭金,反之損失賭注 但如果抽出的牌數字與前面抽出的兩張牌相同(稱為撞柱),則損失兩倍賭注 情境一 : 兩張數字不同 抽到 3、9 範圍內 : 4、5、6、7、8 不在範圍內 : A(1)、2、10、J(11)、Q(12)、K(13) 撞柱 : 3、9 兩張數字相同 玩家猜下一張抽出的牌點數比這兩張的點數大還是小 如果抽出的牌被玩家猜對則贏得賭金,反之損失賭注 但如果抽出的牌數字與前面抽出的兩張牌相同(稱為撞柱),則損失三倍賭注 情境二 : 兩張數字相同 抽到 6、6 小於 : A(1)、2、3、4、5 大於 : 7、8、9、10、J(11)、Q(12)、K(13) 撞柱 : 6 #### 檔案結構 --- `DragonGate/DragonGate.h` `DragonGate/DragonGate.cpp` 處理遊戲基本邏輯,包含遊戲進入點、卡片猜測、輸贏判斷等 `/UI/DragonGate.qml` 射龍門遊戲UI ### 賭馬 (HorseRacing) #### 遊戲規則 --- 玩家設定賭注,並猜測贏家馬 #### 檔案結構 --- `HorseRacing/HorseRacing.h` `HorseRacing/HorseRacing.cpp` 處理遊戲基本邏輯,包含遊戲進入點、贏家猜測、輸贏判斷等 `/UI/DragonGate.qml` 賭馬遊戲UI ## 主畫面 ![image](https://hackmd.io/_uploads/SyVe8cNMle.png) ![image](https://hackmd.io/_uploads/rJKblUrzxg.png) ![image](https://hackmd.io/_uploads/S1UrP9NGge.png) ![image](https://hackmd.io/_uploads/rkULP94Mlx.png) ### main.qml #### 生成畫面與管理玩家移動動畫,以及包含多個彈出視窗與負責切換畫面的元件 ## 地圖處理 ![image](https://hackmd.io/_uploads/HkYKy8SMlx.png) ![image](https://hackmd.io/_uploads/B1a7eUSMge.png) ### mapHandler.h、 mapHandler.cpp #### 初始化、同步eventHandler內的資料至主畫面 ## 移動動畫 ![image](https://hackmd.io/_uploads/r1lhy8HGle.png) ### MovePoint.h、MovePoint.cpp #### 根據骰子點數處理玩家的移動動畫 ## 卡片互動視窗 ### CardOpenBtn.qml、CardPopup.qml #### 開啟玩家使用卡片的視窗、顯示玩家擁有的各種卡片數量,並在可使用時可讓玩家開啟下拉式選單。 ## 卡片視窗初始化 ### UseCardSetting.h、UseCardSetting.cpp #### 初始化卡片視窗與設定細部卡片使用方式 ## 作弊指令視窗 ![image](https://hackmd.io/_uploads/r1Hzc9Vzex.png) ![image](https://hackmd.io/_uploads/SJHXqcNGxx.png) ![image](https://hackmd.io/_uploads/BywVccEfxx.png) ### CheatCommandOpenBtn.qml、CheatCommandLine.qml #### 開啟作弊指令彈窗、作弊指令輸入處 ## 骰子 ![image](https://hackmd.io/_uploads/SJGJicEMel.png) ### Dice.qml #### 按下後開始動畫並持續一段時間,結束後顯示當前骰到的點數 ### Dice.cpp、Dice.h #### 進行亂數處理並將畫面回傳至Dice.qml中 ## 各類訊息視窗 ### EndPopUp.qml #### 結束視窗,可以選擇開始新遊戲或是結束遊戲 ### Message_popUp.qml #### 訊息視窗,顯示其他訊息 </br> ### StateContainer.qml #### 位於主畫面右上角,主要顯示當前回合玩家的訊息 </br> ### UpgradeOrSell_popUp.qml #### 玩家經過自己的地塊時會彈出,並可選擇升級或是賣出 ## 自製元件 ### CostumBtn_Rec.qml #### 自製的按鈕 </br> ### Standard_Text.qml #### 標準化的文字模板 ## 遊戲結束條件 ![image](https://hackmd.io/_uploads/HkfVWUHzee.png) #### 1. 其中一位玩家超過一百萬 #### 2. 只剩一位玩家存活(未破產或自殺) ## 彩蛋 `/refresh`有乖乖:) ## 評分總結 ### 68(基本)+40(進階)+10(自由)+15(其他)=133(理想分數) ![image](https://hackmd.io/_uploads/HkUtd5VMeg.png) ![image](https://hackmd.io/_uploads/rkxsu54flg.png) ![image](https://hackmd.io/_uploads/H16yisEzlg.png) ![image](https://hackmd.io/_uploads/B103ucEzgx.png) ## 想不到吧Document也有彩蛋:) ``` .................................................................................................... .................................................................................................... .................................................................................................... .................................................................................................... ...............-====--::::::::::::::::::::.::.:............................:::----=................. ...............-++++================--=========---==-=-----====================+***................. ...............:====-------------------------------------:::::-----------------==++................. ................=+==---------==+++==--:::::::-------:::::::::::::--------------=++-................. .................-+=====---=***++++++=-=**=+++++**++==------=======-------======+:.................. ..................:==--===-*=--=*=-==*#%##++%#*%+@#**##**+==--==+*#%%@@%*+===--=:................... ..................:==---=+*#+-+=*+-++*::#+++*+=*--+=:................:=*%@%#=-=+.................... ..................:+=--=*%%*######*##=...................................-+=++++:................... ..................:+=+==+*-..=#####+.......................................-+*%*:................... ..................-+##=--...................................:=++=...........:*%@-................... ..................-*@%+-.............................:+**+=-++*+=-...........+%@+................... ..................-#@%+:..............................-*++==-++==-...........=%@*................... ..................-#@%=...............................::-=....::::...........=%@+................... ..................:*@%=..............................::::....................+%%:................... ..................:+%%+:..................::::..............................:*%*:................... ..................:++#+=.....:::::.........................................:=**+:................... ..................:+=++==..................................................-+*++.................... ..................:+=====..................................................:+**+.................... ...................+=+++:.......................................:::.........=**+.................... ...................+=+++:...............................::::...............:+*++.................... ...................+==+*:.......................::::.......................-+==+.................... ...................+===*+...............::::........................:.:...-==-=+:................... ...................=+=-+%=......::...........................:--+--::....==---=+.................... ...................==---=#*..........................:-+:.=::.........:=+-:--=++.................... ...................==-----+#+:.................-:---:--:::......:::-+*+-:::::=+*:................... ...................==--------+++=-:...............:*#%###%%%**+*++*=-::::::::-+*:................... ...................==-------------==*=...........*%##########%%#****--:::::::-=+:................... ...................===--=---------=*:..-########%%##***#########%#**=::::::::-=+:................... ...................+=------------=+:...:*%%%#==%%%###############*==--:::::::-=+.................... ..................:++=--------===--==+-..=%%%%%%##%#**#%%%########+--::::::::-=*.................... ..................:+===========-------=+#%%%%%%=:-*-=:.:==#%%%#####---:::::::=+*.................... ..................:+==========----====++=+%%%%%+:-:--..+:.=%%%%%###%=--=*-::-=++.................... ..................:+=============-:...=*+-+%%%%%::*+:::=-:+-:-#%%%%%###**+::-=++.................... ..................:+========++::+==:::.=*-:-#%**::++*-*#:.::-+%%%%%%%%##*=::-==+.................... ..................-+=======*=..:--:::...=+:....+#::----::-#%%%%%%%%%%%%=:::--==+.................... ..................-+======+*....:====...:*--:..=*=--::--+%%%%**%%%%#+------:-==+.................... ..................-+======+*-+=-++**+-===+---=+*=:---:-**++...-+========--::-==+.................... ..................-+=======*+--::-::-.-+=-------+++*+=+*==+-....------==---:-===.................... ..................-+=========+-......==---------*++*++++*=--=-::==----===--:--==.................... ..................:===========--===-------------=********+------------====----=-.................... ..................:+==========--------------====-=+*+-+**++=======----=====---=:.................... ..................:+==========-----------===++++++**+====**++++++++==========-=:.................... ..................:+======================+******+*+-========+++++==============:................... .................:++====================-==-=--=-=-:::-=-======================++=.................. ................-+++=================------=---------------=====--=============+++=................. ................+++++=================---=======================---===========++**=................. ................+**++==========================-==-===========================++**=................. ...........................................................................:.:::--:................. .................................................................................................... .................................................................................................... ....................................................................................................```