热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

微信答题小程序的设计与实现详解

本文详细介绍了如何设计和实现一个微信答题小程序,包括题库的设计和题目的呈现。通过抽取题目编号和使用全局变量记录当前题目的信息,实现了题目的刷新和显示。同时,还介绍了题目的展示方式和容器的创建。本文适合零基础的小白学习微信答题小程序的开发。

嗨!大家好,我是小蚂蚁。在上一节里,我们了解了如何设计答题小程序中的题库——表格,并且知道了如何从题库中随机抽取指定数量的不重复的题目编号。这一节,我们将分享一下如何利用这些题目编号,获取到指定的题目信息,然后将题目呈现出来。

在上一节中我们将随机抽取到的不重复的题目编号记录在了一个“随机选题列表”中。接下来,我们将从列表中挨个取出题目编号,然后显示出当前的题目。

为了记录当前从列表中取出的是第几项,以及当前的题目编号,我们创建两个新的全局变量。

选题列表项:记录当前显示的是第几道题。

抽取的题目编号:记录当前要抽取的题目的编号。

接着来看一下我们是如何设置这两个全局变量的。

这是场景启动后(开始答题时)要执行的一段积木逻辑,重点关注红线框出的两块积木,第一块,我们根据当前的“选题列表项”从“随机选题列表”中取出了一个题目编号,然后把它记录在了“抽取的题目编号”变量中。第二块积木向所有人发送了一个“刷新题目”的通知。这个通知将会由合适的精灵接收到并进行处理。

在游戏开始时,“选题列表项”会被设置成 1,即从列表中的第一项开始,之后当点击下一题按钮时,只需要将“选题列表项”的值增加 1 ,就可以使用它访问到列表中的下一项了。

一道要展示的题是由两部分组成的,题目选项,先来看一下如何显示题目。

显示题目

创建一个如下的容器用于展示题目,它由一个背景框和一个基础文字组成,我们将会使用基础文字显示题目的信息。

来看一下题目容器上的积木逻辑。

逻辑很简单,在接收到“刷新题目”的通知后,根据“抽取的题目编号”变量中的值,在对应的题库表格中获取某一行第 1 列的题目信息,并把它设置到基础文字上。

还记得我们创建的题库表格吗?第 1 列是题目信息,“抽取的题目编号”变量中保存的就是当前题目的行号

这样我们就实现了题目信息的显示,接下来再看一下如何显示选项信息。

显示选项

一道题目需要有多个选项,跟题目类似,我们也使用容器来作为选项。

一个选项容器包含 3 个部分,一个背景框,一个用于显示 ABCD 的文字,以及一个用于显示选项信息的文字。

因为需要为一道题目创建多个选项,所以这里我们使用克隆来根据需求创建指定数量的选项。除此之外,还需要两个新的变量。

全局变量当前选项:借助它为克隆体上的局部变量进行设置。

局部变量选项:记录当前的选项是 ABCD 中的哪一个。

接下来看一下选项容器上的积木逻辑。

这里有两点需要注意的地方,一个是“全局-当前选项”这个变量是从 2 开始的,因为在题库表格中选项对应的是 2~5 列,从 2 开始,循环 4 次,刚好遍历列  2,3,4,5 列。第二个是在克隆选项之前,判断了当前的选项内容是否为 0 ,如果不为 0 的话,就创建一个选项。

我们在上一节中做过这样的一个约定:如果选项中的内容是 0 ,就证明当前没有该选项,这是为了解决不同的题目包含不同数量的选项的问题,例如有的题目包含 4 个选项,有的题目包含 3 个选项,此时就可以将第 4 个选项设置为 0 ,这样第 4 个选项就不会被创建了。

接着来看一下选项克隆体启动后的积木逻辑。

看起来有点儿长,但其实并不复杂,首先根据全局变量“当前选项”的值,设置克隆体的局部变量“选项”,这里一共预留了 A~F 的 6 个选项。接着,还是根据全局变量“当前选项”的值,设置了自己的位置,因为选项是从上向下依次排列的,所以“全局-当前选项”的值越大,选项的位置也越向下。接下来根据“选项”变量的内容设置了“基础文字_2”,最后从对应的题库中获取到执行选项的信息,设置了“基础文字_1”。

这样,我们就实现了题目和选项的创建和显示,看起来像是这样的。

如何创建多选题的选项

对于多选题的选项,其实和单选题都是一样的逻辑,只不过多创建几个选项克隆体而已。

看起来就像是这样。

题目的切换

用户在答题的过程中需要能够切换题目,切换到下一题或者是上一题。这个如何实现呢?

还记得本文最开始的那个全局变量“全局-选题列表项”吗?它记录的就是当前的题目是“随机选题列表”中第几项,其实也就是当前答题过程中显示的第几道题。所以,切换题目时,我们只需要将这个“选题列表项”的变量增加 1 或者减少 1 就可以了。

看一下上一题按钮被点击的积木逻辑。

下一题被点击的积木逻辑。

这里一共有多少道题是根据“随机选题列表”的项目数决定的,如果随机从题库中抽取了 10 道题目的编号,那其实就意味着这次答题一共包含 10 道题了。

最后,再来看一下题目的展示以及切换过程。

今天的分享就到这里了,我们了解了如何将题库中的题目信息展示出来,并且知道了如何切换题目。下一节我们继续学习如何答题,怎样实现单选题的答题处理以及多选题的答题处理。


 我是会做游戏也会教你做游戏的小蚂蚁,关注公众号【小蚂蚁教你做游戏】,备注“学子做游戏”可免费领取全网最全的微信小游戏开发教程资料。获取答题项目模版工程,可添加小蚂蚁vx:xiaomayi6669,备注“答题模版”获取。  


推荐阅读
  • 区块链的兴起:恰逢其时,犹如1996年的互联网
    本文探讨了区块链技术的发展阶段,将其与1996年互联网的兴起进行对比,分析了当前区块链技术的现状及其未来潜力。 ... [详细]
  • 自己用过的一些比较有用的css3新属性【HTML】
    web前端|html教程自己用过的一些比较用的css3新属性web前端-html教程css3刚推出不久,虽然大多数的css3属性在很多流行的浏览器中不支持,但我个人觉得还是要尽量开 ... [详细]
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • 2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ... [详细]
  • 本文作者分享了在阿里巴巴获得实习offer的经历,包括五轮面试的详细内容和经验总结。其中四轮为技术面试,一轮为HR面试,涵盖了大量的Java技术和项目实践经验。 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • 在使用Netty 4.1.48版本运行自带的HTTP服务器示例时,观察到大量本地IP环回连接。本文将探讨这些环回连接的原因,并解释其与TCP连接的关系。 ... [详细]
  • 使用JS、HTML5和C3创建自定义弹出窗口
    本文介绍如何结合JavaScript、HTML5和C3.js来实现一个功能丰富的自定义弹出窗口。通过具体的代码示例,详细讲解了实现过程中的关键步骤和技术要点。 ... [详细]
  • 微信小程序中实现位置获取的全面指南
    本文详细介绍了如何在微信小程序中实现地理位置的获取,包括通过微信官方API和腾讯地图API两种方式。文中不仅涵盖了必要的准备工作,如申请开发者密钥、下载并配置SDK等,还提供了处理用户授权及位置信息获取的具体代码示例。 ... [详细]
  • 本文详细介绍Python编程的基础知识,涵盖从安装环境到编写简单程序的核心内容,并深入探讨网络编程的基本概念和实践。提供多种资源下载方式,帮助读者快速上手。 ... [详细]
  • 探讨在微信小程序环境中是否能够获取到全局this对象,并分析其背后的技术实现。 ... [详细]
  • 智慧城市建设现状及未来趋势
    随着新基建政策的推进及‘十四五’规划的实施,我国正步入以5G、人工智能等先进技术引领的智慧经济新时代。规划强调加速数字化转型,促进数字政府建设,新基建政策亦倡导城市基础设施的全面数字化。本文探讨了智慧城市的发展背景、全球及国内进展、市场规模、架构设计,以及百度、阿里、腾讯、华为等领军企业在该领域的布局策略。 ... [详细]
  • 微信小程序koa获取微信accesstoken ... [详细]
  • 鸿蒙系统实战:打造高效聊天辅助应用
    通过鸿蒙系统开发一款高效的聊天辅助应用,本教程将详细展示从零开始构建这一实用工具的全过程,旨在为开发者提供全面的技术指导。 ... [详细]
  • 微信小程序实现拍照与图片上传功能
    本文介绍如何在微信小程序中实现用户通过拍照或从相册选择图片,并将图片上传至服务器的功能,包括调用相关API和处理上传响应。 ... [详细]
author-avatar
与XUE一起中意JJ的小杨杨_746
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有