程式功能分析:
本部分將要介紹副程式PR_Calculate與PR_End的功能。
PR_Calculate是計算玩家所輸入的運算式,並判斷遊戲是否有達成結束的前置條件。
PR_End是判斷遊戲是否結束。
接續GotMath(3) - 副程式(一),將會完成副程式方塊的介紹。
步驟四(續)
Step 4.5 PR_Calculate:本程式目的是為了進行計算,擁有兩個參數
參數input為Button的Text,參數sign為Button的Component
呼叫者:BN_N1~BN_N6、BN_Add、BN_Sub、BN_Mul、BN_Div
Step 4.3.1 PR_Calculate第一部分:儲存
1.把按鈕傳入的input與sign值,也就是按鈕的Text與Componet值分別儲入CalculateList與
CalculateProcessList
2.為了顯示計算過程,把input值即時儲入對應該運算式Label的Text中
以Function為LB_FList的index,撈出當前運算式所對應的Lable,將這個Lable的Text設定
為Lable原本的Text與input合併的字串
(Function的值介於0~4,由於App Inventor 2的List第一個元素之index為1,需要把
Function加1才可得到正確的index值)
CalculateProcessList
2.為了顯示計算過程,把input值即時儲入對應該運算式Label的Text中
以Function為LB_FList的index,撈出當前運算式所對應的Lable,將這個Lable的Text設定
為Lable原本的Text與input合併的字串
(Function的值介於0~4,由於App Inventor 2的List第一個元素之index為1,需要把
Function加1才可得到正確的index值)
Step 4.3.2 PR_Calculate第二部分:計算
if的條件式為判斷該運算式是否完整
1.如果變數index為3時,代表這個運算式已經有兩個運算元與一個運算子,即可進行運算
a.把第一個運算元與運算子從CalculateList中撈出來,分別存入sign與operator
範例是採用Function乘3加1與加2的方式求出它們的index
(假如CalculateList有15個元素,因為一個運算式有兩個運算元與一個運算子,則1~3為第
一個運算式的資料,則4~6為第二個運算式的資料,以此類推。由於Function值介於0~4
,所以如果要求第四個運算式的最後兩個資料可分別以Function乘3加1與加2的方式求出
它們的index)
b.判別運算子為何後分別下去對sign與operator進行計算,並把結果存入preSol
c.為了顯示計算結果,需把結果顯示於Label上。由於運算式等號左邊皆已存入Label的Text
中,故只需再把Label原本的Text與=和preSol合併在一起即可
(由於加減乘除的程式碼皆同,故以加減為例)
2.如果變數index不為3時,由於運算式不完整,所以變數index值加1
(圖顯示在PR_Calculate第三部分的最後)
Step 4.3.2 PR_Calculate第三部分:GUI和變數更新與遊戲結束判斷、index不為3時
1.將第一個運算元所在的Button,將其Text清空與Enable設為false
2.第二個運算元所在的Button,將其Text設為preSol的值
3.變數index設為1
4.變數Function值加1
5.判斷變數Function值是否大於等於4:
a.等於4,代表已完成五個運算式,呼叫PR_End副程式,判斷遊戲是否結束
b.不等於4,尚未完成五個運算式,
6.最後如果在PR_Calculate第二部分判斷變數index值不為3時,變數index值加1
if的條件式為判斷Sol與preSol是否相等
1.如果條件成立,代表玩家已經通過五個運算式獲得與題目一致的答案
a.呼叫PR_BNshow副程式並給予傳入值false,將GUI設定為遊戲結束的狀態
b.將BN_Ready的Text設為恭喜
2.如果條件不成立,代表玩家尚未以五個運算式獲得與題目一致的答案
將BN_Ready的Text設為有誤
GotMath程式第四部分 - 副程式(二)完成
沒有留言:
張貼留言