如何做一个微信答题小程序(四)

简介: 嗨!大家好,我是小蚂蚁。这一节里,我们继续分享如何在答完题后进行答案的比对,以及如何实现一个回顾功能。

嗨!大家好,我是小蚂蚁。这一节里,我们继续分享如何在答完题后进行答案的比对,以及如何实现一个回顾功能。


在上一节里我们提到过,为了记录玩家的答题数据,我们创建了一个新的表格——玩家答题选项表,里面记录的是玩家回答的题目编号,以及对应的答案。当所有的题目都回答完毕,玩家选择提交后,其实我们要做的,就是逐个的将“玩家答题选项表”中的数据与题库中的答案数据进行比对,来检查题目是答对还是答错。


因为题目中包含着单选题和多选题,所以针对不同的题型,需要做不同的判断处理。


单选题答案对比



首先来看一下单选题的答案对比。


640.png


单选题的对比比较简单,因为单选题的答案只包含 1 个字符,我们只需要对比玩家选择的选项与题库中正确答案的选项是否相同,即可判断当前的题目回答是否正确。


注意,在回答正确后,我们将“玩家答题选项表”对应的第 3 列的数字设置为 1。这里为“玩家答题选项表”又增加了一列,这一列用来记录当前这道题的回答结果。


1287869bba17d609eb84d9616d4ad000.png


在第三列的内容中我们做了这样的约定,如果当前的题目答对,则设置为 1。如果答错,又分为两种,一种是错选,设置为 0,一种是多选题中的漏选,设置为 2。第三列的内容我们需要在回顾功能中用到。


多选题答案对比



多选题的答案对比相对比较复杂,因为会涉及到这样的情况,例如当前题目的答案是 ABC,但是“玩家答题选项表”中对于多选题回答是根据用户当前选择选项的顺序记录的,也就是说如果用户先选了 B,后选了 C ,最后选了 A,那么记录的用户答题数据是 BCA。很明显如果直接将两个字符串做比较的话 “ABC”是不等于“BCA”的。所以,我们无法拿整个字符串做比较。


那该如何对比呢?假设当前答案是 ABC,玩家选择的是 BCA。我们可以这样进行比对,依次从玩家的选择中取出一个字符,然后看看它是否包含在正确答案中。过程就是这样:首先取出 B,看看 B 是否包含在 ABC 中,接着取出 C,看看 C 是否包含在 ABC 中,最后取出 A,看看 A 是否包含在 ABC 中。只有玩家选择中的每一个字符都包含在正确答案中,才能说明当前的回答正确。


但是,请再看一遍上方的比对逻辑,是否存在问题呢?如果答案是 ABCD,当前选了 ABD,按照上方的比对逻辑,ABD 三个字符确实答案中都有包含,但是很明显这道题没有答对,而是漏选了。


所以,对于多选题的比对,除了判断每个字符必须包含在正确答案中之外,还需要一个条件,就是当前比对正确的次数要等于正确答案的字符数。还以上方的正确答案 ABCD,玩家选择了 ABD 为例,共进行了 3 次比对,3 次比对都正确,但是因为不符合第二个条件,就是 3 次正确比对不等于正确答案的字符数 4,所以当前题目就不能判定为正确。


理解了上方的这个比对方法,我们再来看一下多选题答案比对的积木逻辑。


f265a65109dbe62a106097db538bffab.png


分为两个步骤,首先,逐个拿用户回答中的字符去与正确答案进行比对,其次对于满足第一个条件的选项,再进行第二个条件判断,只有同时满足两个条件,才能判定为回答正确,否则要么答错,要么漏选。


最后,在完成了所有的题目判断后,可以为用户显示最终的答题结果,预览一下。


fb77771afe749178e75c7014549f6377.gif


答题回顾功能的实现



要实现答题回顾功能,我们需要借助的最重要的一张表格就是“玩家答题选项表”。


1287869bba17d609eb84d9616d4ad000.png


再来看一下这张重要的表格,它有 3 列,第 1 列记录的是当前题目编号,第 2 列记录的是当前题目玩家的选择,第 3 列记录的是结果。答题回顾功能的作用就是呈现出每一道题目的回答情况,然后提示题目是答对还是答错,如果答错的话,提示正确答案是什么。最后,针对多选题的答错情况,还能借助表格的第 3 列给出进一步的提示,是错选还是漏选


来看一下回顾模式的具体实现,原有的答题过程无需修改,只需要在“选项”中做一些与回顾模式有关的处理即可。


首先,在创建选项时,增加如下的处理。


b805d604334a72f73298ead48424e1f1.png


这里我创建了一个“全局-回顾模式”的全局变量,用于标识当前是否是回顾模式。如果是回顾模式的话,向所有的选项发送一个“答案校对”的通知。


接着来看一下选项在接收到“答案校对”的通知后,都做了些什么。


dfbbe040db7f552e20c9b80876465a9b.png


这段长长的积木逻辑做了这样的一些事情:


对于单选题,如果回答正确,就将选项设置为绿色,如果回答错误,就讲选项设置为红色,并且将正确选项设置为绿色。


对于多选题,对于选对以及漏选使用的是相同的处理方式,就是都将所有的正确选项设置为绿色,对于错选的选项,将其显示为红色。


最后,我们还增加了一个“答题结果提示”,提示用户当前题目的回答结果。


2db0dedd14b7fb0da531216c1f2ece14.png


它的积木逻辑如下。


f3ccb939f3637729dfb80af825732747.png


根据“玩家答题选项表”第 3 列的数据,设置是答对错选还是漏选


最后,来看一下效果。


e4b8ab1a16672f11fa75bb5696c142b0.gif


好了,如何做一个微信答题小程序系列的教程到此就结束了。可见,微信小游戏制作工具除了能够做小游戏之外,也能够用于开发微信小程序。对于一个答题小游戏或者小程序来讲,其实实现原理并不复杂,实现起来也不算太难。如果你能把这个系列教程好好的研究明白了,那么以后所有的答题游戏或者应用对你来说就都不是问题了。原理搞明白了,吃透一个,就能一通百通了。


最后,不论你是以学习为目的,还是想要自定义改编一个自己的刷题小程序,都可以考虑一下购买这个“极简刷题”的模版。99 元永久性的获得一个微信刷题小程序,这个应该说是相当的超值了,对照着项目工程来学习这个系列教程会事半功倍,另外,也可以改编自己的刷题小程序直接上架到微信小程序平台。

相关文章
|
1月前
|
存储 JSON 小程序
微信小程序入门之新建并认识小程序结构
微信小程序入门之新建并认识小程序结构
48 1
ly~
|
2月前
|
存储 供应链 小程序
除了微信小程序,PHP 还可以用于开发哪些类型的小程序?
除了微信小程序,PHP 还可用于开发多种类型的小程序,包括支付宝小程序、百度智能小程序、抖音小程序、企业内部小程序及行业特定小程序。在电商、生活服务、资讯、工具、娱乐、营销等领域,PHP 能有效管理商品信息、订单处理、支付接口、内容抓取、复杂计算、游戏数据、活动规则等多种业务。同时,在企业内部,PHP 可提升工作效率,实现审批流程、文件共享、生产计划等功能;在医疗和教育等行业,PHP 能管理患者信息、在线问诊、课程资源、成绩查询等重要数据。
ly~
76 6
|
4月前
|
小程序
【微信小程序-原生开发】实用教程12 - 注册页(含获取用户微信昵称,原生form的表单提交,t-result 的使用)
【微信小程序-原生开发】实用教程12 - 注册页(含获取用户微信昵称,原生form的表单提交,t-result 的使用)
39 0
|
4月前
|
小程序 数据库
【微信小程序-原生开发】实用教程10 - 动态的新增、修改、删除(含微信云数据库的新增、修改、删除,表单弹窗、确认弹窗、日期选择器、单行输入框、多行输入框、滑动组件的使用)
【微信小程序-原生开发】实用教程10 - 动态的新增、修改、删除(含微信云数据库的新增、修改、删除,表单弹窗、确认弹窗、日期选择器、单行输入框、多行输入框、滑动组件的使用)
127 0
|
4月前
|
小程序 API 数据库
【微信小程序-原生开发】实用教程09 - 可滚动选项,动态列表-步骤条(含事件传参),动态详情(含微信云查询单条数据 doc)
【微信小程序-原生开发】实用教程09 - 可滚动选项,动态列表-步骤条(含事件传参),动态详情(含微信云查询单条数据 doc)
80 0
|
30天前
|
小程序 JavaScript API
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
这篇文章介绍了如何在uni-app和微信小程序中实现将图片保存到用户手机相册的功能。
465 0
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
|
1月前
|
小程序 前端开发 数据可视化
微信商城小程序WeiMall
微信商城小程序WeiMall
31 0
|
2月前
|
小程序 前端开发 API
微信小程序 - 调用微信 API 回调函数内拿不到 this 问题(解决方案)
本文讨论了在微信小程序中调用API回调函数时无法获取到`this`上下文的问题,并提供了解决方案。在回调函数中,使用一个变量(如`that`)来保存当前的`this`引用,然后在回调内部使用这个变量来访问当前页面的数据和方法。
|
3月前
|
移动开发 小程序 前端开发
|
3月前
|
JSON 小程序 JavaScript
超详细微信小程序开发学习笔记,看完你也可以动手做微信小程序项目
这篇文章是一份全面的微信小程序开发学习笔记,涵盖了从小程序介绍、环境搭建、项目创建、开发者工具使用、文件结构、配置文件、模板语法、事件绑定、样式规范、组件使用、自定义组件开发到小程序生命周期管理等多个方面的详细教程和指南。
下一篇
无影云桌面