# 3小遊戲 ## 需求擷取 給我一個APP,希望可以玩到不止一個遊戲,可以的話能在玩的時候不要被媽媽發現。 ## 需求分析 1.有不同遊戲 2.防媽媽裝置 ### Use cases 使用案例 ```plantuml @startuml :User: --> (玩遊戲) :app:-->(輸出分數) @enduml ``` ### User Stories 使用者故事 日華是一名資訊老師,在課堂中把作業派給學生後,他覺得好無聊,於是希望有個app可以打發時間,但又不希望被學生看到他在課堂上玩手機,被發現是薪水小偷,因此也希望這個app可以有不讓學生發現他在玩遊戲的功能。 | 測資 | 輸入 | 輸出 | | -------- | -------- | -------- | | 測資1 | 無 | 分數| ## 流程圖 ### 1.井字遊戲 ```flow st=>start: Start cond1=>condition: 按按鈕 cond2=>condition: 是否連線 light=>inputoutput: 輸出結果 End=>end: 程式結束 st->cond1->cond2 cond1(yes)->cond2 cond1(no)->cond1 cond2(yes)->light->End cond2(no)->cond1 ``` ### 2.維尼的逆襲 ```flow st=>start: Start cond1=>condition: 按下方塊 cond2=>condition: 球是否碰觸維尼 cond3=>condition: 分數是否為64 cond4=>condition: 球是否碰到上、左、右中任意邊界 cond5=>condition: 球是否碰到方塊 cond6=>condition: 紅球是否碰到下邊界 op=>operation: 分數+1 op2=>operation: 紅球速度+0.2 op3=>operation: 紅球速度為20 op4=>operation: 球反彈 light=>inputoutput: 輸出結果 End=>end: 程式結束 st->cond1-> cond1(yes)->op3->cond6 cond1(no)->cond1 cond2(yes)->op->op2->cond3 cond2(no)->op4 cond3(yes)->light->End cond3(no)->cond6 cond6(yes)->light->End cond6(no)->cond4 cond4(yes)->op4->cond6 cond4(no)->cond5 cond5(yes)->op4->cond6 cond5(no)->cond2 ``` ### 3.煞氣卍賽車手 1.車車 ```flow st=>start: Start cond1=>condition: 是否碰到球 light=>inputoutput: 輸出成績 End=>end: 程式結束 st->cond1 cond1(yes)->light->end cond1(no)->cond1 ``` 2.球1 ```flow st=>start: Start op=>operation: 球1速度為10 cond1=>condition: 球1是否碰到邊界 op2=>operation: 分數+10 cond2=>condition: 球1速度是否<60 op3=>operation: 球1速度+10 st->op->cond1 cond1(yes)->op2->cond2 cond1(no)->cond1 cond2(yes)->op3->cond1 cond2(no)->cond1 ``` 3.球2 ```flow st=>start: Start op=>operation: 球2速度為10 cond1=>condition: 球2是否碰到邊界 op2=>operation: 分數+10 cond2=>condition: 球2速度是否<60 op3=>operation: 球2速度+5 cond3=>condition: 分數是否達到50 st->cond3 cond3(yes)->op->cond1 cond3(no)->cond3 cond1(yes)->op2->cond2 cond1(no)->cond1 cond2(yes)->op3->cond1 cond2(no)->cond1 ``` 4.球3 ```flow st=>start: Start op=>operation: 球3速度為10 cond1=>condition: 球2是否碰到邊界 op2=>operation: 分數+10 cond2=>condition: 球3速度是否<60 op3=>operation: 球3速度+7 cond3=>condition: 分數是否達到70 st->cond3 cond3(yes)->op->cond1 cond3(no)->cond3 cond1(yes)->op2->cond2 cond1(no)->cond1 cond2(yes)->op3->cond1 cond2(no)->cond1 ``` 5.球4 ```flow st=>start: Start op=>operation: 球4速度為10 cond1=>condition: 球4是否碰到邊界 op2=>operation: 分數+10 cond2=>condition: 球4速度是否<60 op3=>operation: 球4速度+4 cond3=>condition: 分數是否達到90 st->cond3 cond3(yes)->op->cond1 cond3(no)->cond3 cond1(yes)->op2->cond2 cond1(no)->cond1 cond2(yes)->op3->cond1 cond2(no)->cond1 ``` 6.球5 ```flow st=>start: Start op=>operation: 球5速度為10 cond1=>condition: 球5是否碰到邊界 op2=>operation: 分數+10 cond2=>condition: 球5速度是否<60 op3=>operation: 球5速度+3 cond3=>condition: 分數是否達到100 st->cond3 cond3(yes)->op->cond1 cond3(no)->cond3 cond1(yes)->op2->cond2 cond1(no)->cond1 cond2(yes)->op3->cond1 cond2(no)->cond1 ``` 7.球6 ```flow st=>start: Start op=>operation: 球6速度為10 cond1=>condition: 球6是否碰到邊界 op2=>operation: 分數+10 cond2=>condition: 球6速度是否<60 op3=>operation: 球6速度+1 cond3=>condition: 分數是否達到120 st->cond3 cond3(yes)->op->cond1 cond3(no)->cond3 cond1(yes)->op2->cond2 cond1(no)->cond1 cond2(yes)->op3->cond1 cond2(no)->cond1 ``` ## UI及元件說明 ### UI 使用者介面 #### 主頁面 ![](https://i.imgur.com/Vt3FH87.png) #### OOXX ![](https://i.imgur.com/5DjRnap.png) #### 煞氣卍賽車手 ![](https://i.imgur.com/EqAHlWC.png) #### 維尼的逆襲 ![](https://i.imgur.com/hLkXvTK.png) #### 媽媽來了 ![](https://i.imgur.com/oGEzKz1.png) ### 元件說明 #### 主頁面 1.標籤:標題 2.按鈕:頁面跳轉 #### OOXX 1.按鈕(開始遊戲):開始遊戲 2.按鈕(媽媽來了):頁面跳轉 3.按鈕(返回):返回主頁面 4.對話框:顯示勝負 5.按鈕(九宮格內):當被按下顯示O或X 6.標籤:顯示輪到誰 #### 煞氣卍賽車手 1.按鈕(開始):開始遊戲 2.按鈕(媽媽來了):頁面跳轉 3.按鈕(返回):返回主畫面 4.標籤(分數):顯示分數 5.對話框:顯示遊戲規則與分數 6.球形精靈:當球形精靈碰觸到圖像精靈遊戲即終止 7.圖像精靈:拖移畫布使其在畫布底層左右移動 #### 維尼的逆襲 1.按鈕(開始):開始遊戲 2.按鈕(媽媽來了):頁面跳轉 3.按鈕(返回):返回主畫面 4.標籤(分數):顯示分數 5.對話框:顯示遊戲規則與分數 6.球形精靈(紅球):當其碰觸下邊界遊戲即結束 7.球形精靈(不包含紅球):其碰觸下邊界遊戲不會結束 8.圖像精靈(BOSS):任意球形精靈碰觸其,分數增加,紅球速度增加 9.圖像精靈(方塊):任意球形精靈碰觸其,反射球形精靈,拖移畫布使其在畫布中左右移動 #### 媽媽來了 1.按鈕(返回):返回主畫面 2.標籤:顯示英文或中文 ## 程式截圖 ### 主頁面 ![](https://i.imgur.com/cRC07Pq.png) ### OOXX ![](https://i.imgur.com/hu5aWVN.png) ![](https://i.imgur.com/VIY5yRi.png) ![](https://i.imgur.com/ozcRlSJ.png) ![](https://i.imgur.com/3qbrXci.png) ![](https://i.imgur.com/qG5oslY.png) ![](https://i.imgur.com/M98Gd2X.png) ![](https://i.imgur.com/Jgy3nut.png) ### 煞氣卍賽車手 ![](https://i.imgur.com/xjjzL6q.png) ![](https://i.imgur.com/GJK2Q8G.png) ![](https://i.imgur.com/ZPmoLJF.png) ![](https://i.imgur.com/u24Bqc6.png) ![](https://i.imgur.com/le1hq2e.png) ![](https://i.imgur.com/xPdkBK2.png) ![](https://i.imgur.com/yXnMErP.png) ![](https://i.imgur.com/uxGdE82.png) ![](https://i.imgur.com/oTqO5FN.png) ![](https://i.imgur.com/JWPnB9e.png) ![](https://i.imgur.com/UQy9yMD.png) ### 維尼的逆襲 ![](https://i.imgur.com/oR1Ao9G.png) ![](https://i.imgur.com/PZTcatG.png) ![](https://i.imgur.com/ZaWCmDd.png) ![](https://i.imgur.com/STDPZaV.png) ![](https://i.imgur.com/5ubC0k2.png) ![](https://i.imgur.com/g9bT2JA.png) ![](https://i.imgur.com/EHiFC3q.png) ![](https://i.imgur.com/JuAULHg.png) ![](https://i.imgur.com/C2CaKnx.png) ![](https://i.imgur.com/m45ZFSu.png) ![](https://i.imgur.com/YzHV4an.png) ![](https://i.imgur.com/P5m3hwP.png) ### 媽媽來了 ![](https://i.imgur.com/EHVBBjx.png) ## 影片連結 https://youtu.be/irAGw290DuU ## 結論及心得 一開始原本是想寫很多遊戲,但後來發現時間不夠所以最後刪到剩三個,在寫第二個遊戲的時候,發現如果六顆球加速度相同,到最後會一坨掉下來,為了讓它不會一整坨球球掉下來,我把加速度改成不同的速度,這樣每顆球都會有高低落差,在寫第三個遊戲我發現如果球彈到右上角或左上角,球就會一直左上->方塊->右上無限循環,所以我就做了兩顆球當變因,讓其他球去改變紅球的指向,阿要是還卡那我也沒辦法,阿媽媽介面參考某R18遊戲,不知道的各位紳士們自己去查,在此聲明我絕對沒有玩....吧? ## 程式連結 https://gallery.appinventor.mit.edu/?galleryid=6c5d81ef-27b1-45e2-9c77-aeb420c8f16b