W801学习笔记十九:古诗学习应用——下
经过前两章的内容,背唐诗的功能基本可以使用了。然而,仅有一种模式未免显得过于单一。因此,在本章中对其进行扩展,增加几种不同的玩法,并且这几种玩法将采用完全不同的判断方式。
玩法一:三分钟限时挑战——在规定的时间内,比拼谁的得分更高。
在这种模式下,需要在 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{totalTime+=ticks;showTime();if(checkFinish()){return SceanResult_Done;}。。。 ran_max(10);}return SceanResult_Done;
}void YuWenTS::showTSAnswer(){Display_String(answerX, answerY, &optionMiss, dataLine(answerIdx));for(int i=0;i<4;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(wrongCount>0) {finish();return 1;}break;}return 0;
}
在进行代码设计时,要做好代码复用的考量,扩展几个玩法实际上并不需要太多的代码。这里是第一次进行扩展0,所以重点在于菜单传参的运用。

W801学习笔记十七:古诗学习应用——上
W801学习笔记十八:古诗学习应用——中
相关文章:
W801学习笔记十九:古诗学习应用——下
经过前两章的内容,背唐诗的功能基本可以使用了。然而,仅有一种模式未免显得过于单一。因此,在本章中对其进行扩展,增加几种不同的玩法,并且这几种玩法将采用完全不同的判断方式。 玩法一:三分钟限时挑战—…...
类加载器ClassLoad-jdk1.8
类加载器ClassLoad-jdk1.8 1. 类加载器的作用2. 类加载器的种类(JDK8)3. jvm内置类加载器如何搜索加载类--双亲委派模型4. 如何打破双亲委派模型--自定义类加载器5. 自定义一个类加载器5.1 为什么需要自定义类加载器5.2 自定义一个类加载器 6. java代码加…...
24年最新AI数字人简单混剪
24年最新AI数字人简单混剪 网盘自动获取 链接:https://pan.baidu.com/s/1lpzKPim76qettahxvxtjaQ?pwd0b8x 提取码:0b8x...
免备案香港主机会影响网站收录?
免备案香港主机会影响网站收录?前几天遇到一个做电子商务的朋友说到这个使用免备案香港主机的完整会不会影响网站的收录问题,这个问题也是站长关注较多的问题之一。小编查阅了百度官方规则说明,应该属于比较全面的。下面小编给大家介绍一下使用免备案香…...
低代码工业组态数字孪生平台
2024 两会热词「新质生产力」凭借其主要特征——高科技、高效能及高质量,引发各界关注。在探索构建新质生产力的重要议题中,数据要素被视为土地、劳动力、资本和技术之后的第五大生产要素。数据要素赋能新质生产力发展主要体现为:生产力由生产…...
代码随想录第三十八天(完全背包问题)|爬楼梯(第八期模拟笔试)|零钱兑换|完全平方数
爬楼梯(第八期模拟笔试) 该题也是昨天的完全背包排列问题,解法相同,将遍历顺序进行调换 import java.util.*; public class Main{public static void main (String[] args) {Scanner scnew Scanner(System.in);int nsc.nextInt(…...
idea常用知识点随记
idea常用知识点随记 1. 打开idea隐藏的commit窗口2. idea中拉取Git分支代码3. idea提示代码报错,项目编译没有报错4. idea中实体类自动生成序列号5. idea隐藏当前分支未commit代码6. idea拉取新建分支的方法 1. 打开idea隐藏的commit窗口 idea左上角File→Settings…...
(双指针) 有效三角形的个数 和为s的两个数字 三数之和 四数之和
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 文章目录 前言 一、有效三角形的个数(medium) 1.1、题目 1.2、讲解算法原理 1.3、编写代码 二、和为s的两个数字 2.1、题目 2.2、讲解算…...
力扣每日一题114:二叉树展开为链表
题目 中等 提示 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同…...
Linux系统下使用LVM扩展逻辑卷的步骤指南
Linux系统下使用LVM扩展逻辑卷的步骤指南 文章目录 Linux系统下使用LVM扩展逻辑卷的步骤指南前言一、逻辑卷管理(LVM)简介二、扩展逻辑卷步骤1. 检查当前的磁盘布局2. 创建新的分区3. 更新内核的分区表4. 初始化新的物理卷5. 将物理卷添加到卷组6. 调整逻…...
探索AI编程新纪元:从零开始的智能编程之旅
提示:Baidu Comate 智能编码助手是基于文心大模型,打造的新一代编码辅助工具 文章目录 前言AI编程概述:未来已来场景需求:从简单到复杂,无所不包体验步骤:我的AI编程初探试用感受:双刃剑下的深思…...
RustGUI学习(iced)之小部件(三):如何使用下拉列表pick_list?
前言 本专栏是学习Rust的GUI库iced的合集,将介绍iced涉及的各个小部件分别介绍,最后会汇总为一个总的程序。 iced是RustGUI中比较强大的一个,目前处于发展中(即版本可能会改变),本专栏基于版本0.12.1. 概述 这是本专栏的第三篇,主要讲述下拉列表pick_list部件的使用,会…...
【OceanBase诊断调优】—— Unit 迁移问题的排查方法
适用版本:V2.1.x、V2.2.x、V3.1.x、V3.2.x 本文主要介绍 OceanBase 数据集在副本迁移过程中遇到的问题的排查方法。 适用版本 V2.1.x、V2.2.x、V3.1.x、V3.2.x 手动调度迁移问题的排查 OceanBase 数据库的 RootService 模块负责 Unit 迁移的调度,如果…...
[极客大挑战 2019]PHP
1.通过目录扫描找到它的备份文件,这里的备份文件是它的源码。 2.源码当中涉及到的关键点就是魔术函数以及序列化与反序列化。 我们提交的select参数会被进行反序列化,我们要构造符合输出flag条件的序列化数据。 但是,这里要注意的就是我们提…...
数据结构之跳跃表
跳跃表 跳跃表(skiplist)是一种随机化的数据, 由 William Pugh 在论文《Skip lists: a probabilistic alternative to balanced trees》中提出, 跳跃表以有序的方式在层次化的链表中保存元素, 效率和平衡树媲美 —— …...
搜维尔科技:动作捕捉解决方案:销售、服务、培训和支持
动作捕捉解决方案:销售、服务、培训和支持 搜维尔科技:动作捕捉解决方案:销售、服务、培训和支持l...
数据库管理-第184期 23ai:干掉MongoDB的不一定是另一个JSON数据库(20240507)
数据库管理184期 2024-05-07 数据库管理-第184期 23ai:干掉MongoDB的不一定是另一个JSON数据库(20240507)1 JSON需求2 关系型表设计3 JSON关系型二元性视图3 查询视图总结 数据库管理-第184期 23ai:干掉MongoDB的不一定是另一个JSON数据库(20…...
刷代码随想录有感(58):二叉树的最近公共祖先
题干: 代码: class Solution { public:TreeNode* traversal(TreeNode* root, TreeNode* p, TreeNode* q){if(root NULL)return NULL;if(root p || root q)return root;TreeNode* left traversal(root->left, p, q);TreeNode* right traversal(r…...
[开发|安卓] Android Studio 开发环境配置
Android Studio下载 Android Studio下载地址 下载SDK依赖 1.点击左上角菜单 2.选择工具 3.打开SDK管理中心 4.下载项目目标Android版本的SDK 配置安卓虚拟机 1.打开右上角的设备管理 2.选择合适的手机规格 3.下载并选择项目目标Android系统 4.点击完成配置 …...
开发 Chrome 浏览器插件入门
目录 前言 一,创建插件 1.创建一个新的目录 2.编写清单文件 二,高级清单文件 1.编写放置右窗口 2.常驻的后台JS或后台页面 3.event-pages 短周期使用 三,Chrome 扩展 API 函数 1.浏览器操作函数 2.内容脚本函数 3.后台脚本函数 4…...
Linux命令行玩转CAN总线:像查日志一样用grep分析candump实时数据流
Linux命令行玩转CAN总线:像查日志一样用grep分析candump实时数据流 在Linux系统管理领域,日志分析是每个开发者都熟悉的日常操作。当面对CAN总线这样的专业数据流时,其实可以运用同样的思维——将candump视为持续输出的数据源,用g…...
告别Visio!用WPF+MVVM打造属于你自己的业务流程设计器(附完整源码)
基于WPFMVVM构建企业级业务流程设计器的实战指南 在当今企业数字化转型浪潮中,业务流程管理系统(BPM)已成为提升运营效率的核心工具。传统Visio等绘图工具虽然功能强大,但往往难以与企业内部系统深度集成,且缺乏动态交互能力。本文将带你从零…...
实测测评|零注册AI PDF翻译工具:保留排版\+OCR无损翻译,替代DeepL/谷歌翻译
在日常开发、学术科研、外文文献研读场景中,PDF翻译一直是高频刚需痛点。市面上主流的翻译工具普遍存在排版错乱、OCR收费、文件大小受限、强制登录注册等问题,尤其是学术论文、带表格/公式的技术手册、扫描版外文资料,翻译后的可用性极差。 …...
稳定币深度解析:从技术内核到生态未来
稳定币深度解析:从技术内核到生态未来 引言 在加密货币世界剧烈波动的浪潮中,稳定币如同一座坚不可摧的桥梁,连接着传统金融与去中心化未来。它不仅是DeFi乐高积木中最关键的基座,更在跨境支付、元宇宙经济等前沿领域扮演着核心…...
嵌入式开源项目高效学习指南:从筛选评估到深度贡献
1. 项目概述:为什么我们需要一份“开源项目精选”?如果你是一名嵌入式开发者,或者正在向这个领域转型,那么你一定经历过这样的时刻:GitHub上项目浩如烟海,技术论坛帖子日更千条,想找一个靠谱的、…...
毕业设计:基于springboot的林业产品推荐系统(源码)
4 系统设计当前,系统的类型有很多,从系统呈现的内容来看,系统的类型有社交类,有商业类,有政府类,有新闻类等。那么,在众多系统类型中,先明确将要设计的系统的类型才是系统设计的首要…...
番茄小说下载器终极指南:如何轻松下载EPUB、TXT和有声小说
番茄小说下载器终极指南:如何轻松下载EPUB、TXT和有声小说 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 你是否曾经在番茄小说上找到一部精彩的作品,…...
科研抢发期必看:Perplexity图书推荐查询速效组合技——3分钟生成带引用格式的跨学科书单
更多请点击: https://codechina.net 第一章:科研抢发期必看:Perplexity图书推荐查询速效组合技——3分钟生成带引用格式的跨学科书单 在论文投稿前的关键窗口期,快速定位权威参考文献是提升学术严谨性与跨学科说服力的核心能力。…...
别再只会if-else了!用状态机思路重构你的STM32寻迹小车代码(附工程源码)
从if-else到状态机:重构STM32寻迹小车的工程化实践 当三个红外传感器同时检测到黑色轨迹时,你的小车应该左转还是右转?当传感器短暂丢失信号时,是紧急刹车还是保持原有动作?这些问题在初学者用if-else堆砌的代码中往往…...
别再手动画框了!用CVAT的自动标注和插值功能,10分钟搞定一段视频标注
别再手动画框了!用CVAT的自动标注和插值功能,10分钟搞定一段视频标注 视频标注是计算机视觉项目中最耗时的工作之一。想象一下,你需要为一段30秒的交通监控视频(约900帧)标注所有车辆的位置——传统方法可能需要8小时以…...
