程式功能分析:
本部分將會介紹本程式中最重要的部分–出題。將會依序解釋以下副程式:
1.PR_Set為新遊戲設定的副程式
2.PR_Init為遊戲初始化設定的副程式
3.PR_CreateQuestion為產生題目的副程式
4.PR_BNshow為GUI控制的副程式
接續GotMath(2) - 變數與按鈕設計,開始介紹副程式方塊的安排。
步驟四:副程式實作
Step 4.1 PR_Set:本程式目的是為了讓遊戲開始運行。呼叫者:BN_New
Step 4.1.1 PR_Set第一區段:初始化
1.呼叫PR_Init副程式並給予傳入值true
2.將BN_N1~BN_N6的Text設為給予範圍內的隨機值
3.把BN_N1~BN_N6的Text存入NumberList,使得執行完BN_Clean可以將按鈕的初始值
重新取得(for each迴圈會把List中輪到的元素取出後存入item,重覆直至List結束)
Step 4.1.2 PR_Set第二區段:出題
1.呼叫PR_CreateQuestion副程式,將BN_N1~BN_N6的Text依序傳入,開始生成題目
2.變數Sol儲存上一次呼叫完PR_CreateQuestion所得結果
Step 4.1.3 PR_Set第三區段:GUI設定,讓按鈕可以使用
1.把系統計算所得的題目由變數Sol儲入LB_Question的Text
2.呼叫PR_BNshow並給予傳入值true,將GUI介面調整為遊戲初始狀態
3.將PR_Set執行過程中所用到的變數index與operator,將值設為初始值
Step 4.2.1 PR_Init第一部分:陣列與標籤初始化
首先判斷SystemAnsList是否為空:
1.若SystemAnsList不為空,代表遊戲已進行二次以上
執行then部分:
a.將CalculateList、CalculateProcessList、CalculateResultList清空 (註)
b.if的條件式為判斷傳入值Condition:
i.如傳入值Condition為true時,代表為PR_Set的呼叫,為一個新遊戲的開始
故需將SystemAnsList、NumberList清空
ii.如傳入值Condition為false時,代表為BN_Clean的呼叫,是把該回合重新開始
故不需執行if中的程式
c.最後把LB_F1~LB_F5的Text全部清除
2.若SystemAnsList為空,代表為第一次遊戲
執行else部分:
a.將LB_F1~LB_F5與BN_N1~BN_N5的component分別依序存入LB_FList與BN_BList
(註) CalculateResultList為實作Back功能時所需之變數,可略過
Step 4.2.1 PR_Init第二部分:變數初始化
1.if條件式為判斷傳入值Condition:
a.如果傳入值Condition為true時,代表為PR_Set的呼叫,為一個新遊戲的開始
變數Sol需要重設為0
b.如傳入值Condition為false時,代表為BN_Clean的呼叫,是把該回合重新開始
故不需執行if中的程式
2.把變數preSol、index、operator、Function、temp_text設為初始值
Step 4.3.1 PR_CreateQuestion第一部分:加、減、乘、除運算
Step 4.3.1.1 加法、減法、乘法部分
1.以隨機方式決定運算子並存入變數operator。1代表加、2代表減、3代表乘、4代表除
2.加、減、乘部分直接將兩個傳入值做對應的運算,並把結果存入變數Sol,同時將運算符號
存入變數temp_text
Step 4.3.1.1 除法部分
為了降低題目難度,if條件式先使用remainder方法檢查兩個傳入值相除是否會產生餘數:
1.不會則比照加、減、乘部分辦理
2.會則重新決定運算子(排除除法),後比照加、減、乘部分辦理
Step 4.3.2 PR_CreateQuestion第二部分:結果存儲
將運算完成的運算式以字串型態存入SystemAnsList,使得BN_Ans的功能得以執行
x為第一個運算元,temp_text為運算子,y為第二個運算元,Sol為運算結果
如果傳入值為true,代表為BN_Clean與PR_Set呼叫,為新遊戲或重新開始,則所有的按鈕皆要能使用
如果傳入值為false,代表為BN_Ans與PR_End呼叫,為遊戲結束,則所有的按鈕除了BN_New外皆不能使用
Step 4.3.1 PR_BNshow第一部分:按鈕的Enable設定
將除了BN_New外所有Button的Enable全部設為boolean的值
Step 4.3.1 PR_BNshow第二部分:按鈕的顏色設定
Step 4.3.1.1 boolean為true:新遊戲或重新開始
1.將BN_N1~BN_N6的TextColor全部設為黑色,BackgroundColor全部設為淡粉色
2.將BN_Add~BN_Div的TextColor全部設為黑色,BackgroundColor全部設為粉色
2.將BN_Back、BN_Clean、BN_Ans的BackgroundColor全部設為深灰色
Step 4.3.1.2 boolean為false:遊戲結束
1.將BN_N1~BN_N6與的TextColor全部設為白色,BackgroundColor全部設為淺灰色
2.將BN_Add~BN_Div的TextColor全部設為米白色,BackgroundColor全部設為淺灰色
3.將BN_Back、BN_Clean、BN_Ans的BackgroundColor全部設為淺灰色
GotMath程式第三部分 - 副程式(一)完成
沒有留言:
張貼留言