vs哪个版本做网站好,建设网站视频教程,seo网站分析报告,网站建设什么经过前两章的内容#xff0c;背唐诗的功能基本可以使用了。然而#xff0c;仅有一种模式未免显得过于单一。因此#xff0c;在本章中对其进行扩展#xff0c;增加几种不同的玩法#xff0c;并且这几种玩法将采用完全不同的判断方式。
玩法一#xff1a;三分钟限时挑战—…经过前两章的内容背唐诗的功能基本可以使用了。然而仅有一种模式未免显得过于单一。因此在本章中对其进行扩展增加几种不同的玩法并且这几种玩法将采用完全不同的判断方式。
玩法一三分钟限时挑战——在规定的时间内比拼谁的得分更高。
在这种模式下需要在 tick 方法中判断时间是否已经结束。
玩法二五十题竞速挑战——限定为五十题比较谁的正确率更高。
在这种模式下需要在每回答完一题后判断总共已经回答了多少题。
玩法三零错误闯关挑战——只要出现错误就立即结束看谁能坚持的时间最长。
在这种模式下一旦回答错误就立即结束游戏。 现在我们开始。
1、现在菜单中加入三种模式的选项。
[{t: 三分钟限时挑战,i: -,d: 0,g: {},s: [{t: 语文,i: menu/yuwen.png,d: 0,g: {},s: [{t: 唐诗三百首,i: -,d: 302,g: {w:1, m:1},s: []}]},]},{t: 五十题竞速挑战,i: -,d: 0,g: {},s: [{t: 语文,i: menu/yuwen.png,d: 0,g: {},s: [{t: 唐诗三百首,i: -,d: 302,g: {w:2, m:1},s: []}]},]},{t: 零错误闯关挑战,i: -,d: 0,g: {},s: [{t: 语文,i: menu/yuwen.png,d: 0,g: {},s: [{t: 唐诗三百首,i: -,d: 302,g: {w:3, m:1},s: []}]}]},{t: 关于,i: menu/test16.png,d: 102,g: {},s: []}
]
通过在g属性中添加w属性把玩法传递进去。 2、在游戏初始化中获取玩法。
YuWenTs.cpp
int YuWenTS::scean_init(cJSON* param){
。。。winMode cJSON_GetObjectItem(param,w)-valueint;。。。start();return 0;
}
menu.cpp
SceanResult Menu::tick(u32 ticks){
。。。if(KEY_SEL){ //进入cJSON* item (cJSON*) ctlList-selectItem()-tag;int sceanId cJSON_GetObjectItem(item,d)-valueint;if(sceanId! 0){IScean *scean createScean(sceanId);if(scean !NULL){scean-scean_init(cJSON_GetObjectItem(item,g));ListPushBack(sceanList, scean);}return SceanResult_Done;}cJSON* sitem cJSON_GetObjectItem(item,s);if(cJSON_GetArraySize(sitem) 0){ListPushBack(menuList, sitem); showMenu();return SceanResult_Done;}return SceanResult_Done;}ctlList-tick(ticks);ran_max(10);return SceanResult_Done;
}
3、在需要进行结束判断的地方加入判断。
YuWenTs.cpp
SceanResult YuWenTS::tick(u32 ticks){if(KEY_EXIT) {printf(goto top menu from About.\n);return SceanResult_EXIT;}if(isFinished){if(KEY_SEL) {start();return SceanResult_Done;}}else{totalTimeticks;showTime();if(checkFinish()){return SceanResult_Done;}。。。 ran_max(10);}return SceanResult_Done;
}void YuWenTS::showTSAnswer(){Display_String(answerX, answerY, optionMiss, dataLine(answerIdx));for(int i0;i4;i)if(currentQuestion-ans !i)Display_Fill_Rectangle2(answerLocX, answerLocY[i]-2, SCREEN_WIDTH - answerLocX, 21 ,BLACK);
}void YuWenTS::correct(){correntCount;showScore();if(checkFinish()0){createTSQuestion();showTSQuetion();showTangshi();}
}void YuWenTS::wrong(){wrongCount;showScore();showTSAnswer();errorDelay(3);if(checkFinish()0){createTSQuestion();showTSQuetion();showTangshi(); }
}
4、实现checkFinish()
u8 checkFinish(){switch (winMode) {case 1:if(totalTime 180000) {finish();return 1;}break;case 2:if(correntCount wrongCount 50) {finish();return 1;}break;case 3:if(wrongCount0) {finish();return 1;}break;}return 0;
}在进行代码设计时要做好代码复用的考量扩展几个玩法实际上并不需要太多的代码。这里是第一次进行扩展0所以重点在于菜单传参的运用。 W801学习笔记十七古诗学习应用——上
W801学习笔记十八古诗学习应用——中