程式功能分析:
本部分將要介紹程式中所有使用到的全域變數以及各個Button的程式碼。
接續GotMath(1) - GUI 介面設計,將會介紹程式使用的變數與按鈕的程式設計
步驟二:變數設計
當值為1或3時,只有運算元按鈕才會有反應;當值為2時,只有運算子按鈕才會有反應

2.儲存題目(系統由六個數字計算出的答案)

3.儲存玩家當前最後完成的運算式結果
假如玩家做出了以下的計算:
3 + 5 = 8
8 ÷ 4 = 2
2 × 10 = 20
20 -
程式會把20存入變數中

4.儲存當前運算式中所使用的運算子代碼,值介於1~4
值為1代表加號;值為2代表減號;值為3代表乘號;值為4代表除號

5.儲存當前運算式的編號,值從0~4

6.儲存程式一開始所提供的六個數字
程式會依序存入BN_N1、BN_N2、BN_N3、BN_N4、BN_N5、BN_N6的Text值

B1.依序儲存計算過程各運算式的解 (註1)

(註1) 本變數為實作Back按鈕功能才需使用,由於本範例將該實作交由各位同學挑戰,可略過。
7.依序儲存計算過程中所按過的運算元與運算子(以文字方式儲存)
假如依序按下了以下按鈕
BN_N1 (Text = 6)
BN_Add (Text = +)
BN_N2 (Text = 10)
BN_N5 (Text = 11)
程式會把6、+、10、11依序存入List
假如依序按下了以下按鈕
BN_N1 (Text = 6)
BN_Add (Text = +)
BN_N2 (Text = 10)
BN_N5 (Text = 11)
程式會把6、+、10、11依序存入List

8.文字類的暫存器

9.儲存系統的運算過程,主要為實作出答案的功能
假如系統使用了以下的過程得出題目:
3 + 5 = 8
8 ÷ 4 = 2
2 × 10 = 20
20 - 1 = 19
19 × 3 = 57
程式會把每個等式存成一個字串後,依序存入List

第三類:Component類

11.儲存五個運算過程紀錄標籤(LB_F1~LB_F5)的Component

12.依序儲存運算過程中所按過的按鈕之Component
假如依序按下了以下按鈕
BN_N1
BN_Add
BN_N5
程式會把這3個按鈕的Component依序存入List
步驟三:按鈕設計
所有本篇出現的副程式,將在 GotMath(3) 與 GotMath(4) 詳細介紹 (註2)
(註2) 可先由Blocks版面中的Procedure中拉出第一個方塊,命名對應的副程式名稱,如需添加傳入變數,點擊該副程式方塊左上的藍色方塊即可。App Inventor 2會自動添加該副程式的Call於Procedure中。
Step 3.1 BN_New
1.將BN_Ready按鈕的Text設為加油
2.執行PR_Set副程式
Step 3.2 BN_N1~BN_N6 (程式碼皆同,故以BN_N1與BN_N2示範)
1.if的條件式為判斷變數function值,如果變數function小於5,代表現在題目尚未做完,還可
以輸入
2.if的條件式為判斷變數index值,如果變數index為1或3,代表現在可以讓BN_N1~BN_N6的
按鈕輸入
3.如果條件成立
a.把該按鈕的Enabled設為false
b.呼叫PR_Calculate副程式
該副程式需要傳入兩個值input與sign,分別對應這個按鈕的Text與Component
Step 3.3 BN_Add、BN_Sub、BN_Mul、BN_Div (程式碼皆同,故以BN_Mul與BN_Sub示範)
1.if的條件式為判斷變數index值,如果變數index為2,代表現在可以讓BN_Add~BN_Div的
按鈕輸入
2.如果條件成立,則同樣呼叫PR_Calculate副程式,分別傳入這個按鈕的運算符號與
Component
Step 3.4 BN_Clean
1.把index值設為1,這裡要暫時將index做為NumberList的指標
2.迴圈主要目的為把BN_N1~BN_N6的初始值從NumberList中撈出來並設回對應的按鈕
(for each迴圈會把List中輪到的元素取出後存入item,重覆直至List結束)
3.將BN_Ready按鈕的Text設為「加油」
4.執行PR_Init副程式,給予傳入值false,將變數調整為遊戲初始狀態
5.執行PR_BNshow副程式,給予傳入值true,將GUI介面調整為遊戲初始狀態
Step 3.5 BN_Ans
1.把index值設為1,這裡要暫時將index做為LB_FList的指標
2.迴圈主要目的為把系統的計算過程從SystemAnsList中撈出來,並把撈出來的資料依序存入
LB_F1~LB_F5
(for each迴圈會把List中輪到的元素取出後存入item,重覆直至List結束)
3.執行PR_BNshow副程式,給予傳入值false,將GUI介面調整為Game Over狀態
Step 3.6 BN_Back
該部分將交由各位同學自行發揮~~
GotMath程式第二部分 - 變數與按鈕設計完成
沒有留言:
張貼留言