葛文艳,王仁敏,高 雨,路程翔
(河南科技大学 软件学院,河南 洛阳 2021198)
随着社会不断发展和人们生活水平逐渐提高,大家对于教育不再局限于传统教育这一层面,而是开始追求让孩子综合全面发展。伴随着就业竞争的加剧,为了紧跟时代变化,获得更好的生活品质,越来越多的家长选择让孩子学习编程,从事与现代化科技发展更贴近的IT行业。紧随电子科技发展的步伐,少儿编程热逐渐兴起,众多少儿编程App不断出现在教育市场。但它们绝大多数内容较为传统,语言晦涩难懂,开发模式更适合青少年及以上群体,对于低龄儿童进行编程的学前教育市场依旧低迷。
基于上述问题,本团队开发出了一款适合低龄儿童使用的小游戏项目,本项目基于游戏化模式编程,能够让孩子在玩游戏的同时学习编程,更加符合儿童的思维方式。研究表明,人在少儿时期对于思维方式的培养非常关键。此项目可以让孩子在学习编程的过程中更好的训练孩子的逻辑思维。通过学习少儿编程,可以有效提高孩子的编程能力、综合学科能力、逻辑思维能力、未来职场竞争力和领导力等这些社会综合能力。编程能力已经成为未来孩子的基本技能。现如今,中小学生编程课程正在逐步发展成为未来教育事业的一项基本学科,让学生在学前进行编程学习,在未来,不论他的工作与计算机是不是直接相关,都可以用编程思维来提升效率,找到更好的解决方案。没有编程技能,孩子可能很难适应未来社会的要求。
(1)采用C/S架构进行系统开发。
(2)开发环境:操作系统要求:Windows 10;开发工具:Intellij IDEA、CocosCreator、微信开发者工具;数据库:MySQL 5.6。
(3)前端选择游戏引擎编程语言Cocos2d的升级版CocosCreator+JavaScript,对游戏进行开发,构建成微信小游戏。
(4)采用spring框架,基于SpringBoot进行javaWeb开发,利用maven对其进行管理。
(5)设计出的系统要保持较好的健壮性,为以后对系统的升级优化提供良好的基础。
(1)硬件需求。在Web端所需要的硬件配置:CPU:3.0 GHz;内存:8 G;硬盘:512 G;在移动端所需的硬件配置:CPU:2.2 GHz;内存:6 G;硬盘:64 G。
(2)软件环境。运行所需要的支持软件:微信版本8.0。
少儿编程微信小游戏在开发过程中使用到Cocos游戏引擎、Spring boot后台、微信小程序平台、JavaScript等当下先进成熟的技术,在技术上是完全可行的。由于借助了微信平台,依托于微信小程序进行游戏体验,对用户的硬件的水平要求较低。游戏的功能模块有:用户登录注册、游戏关卡模式、游戏进度读档存档、动作控制区等。
游戏总体设计主要以少儿编程启蒙思想为主,用户在玩游戏过程中,学习如何排序指令,编写程序,并利用循环、递归等思想简化行进步骤。通过由易到难的关卡设计以及四部分独立的模块功能设计,帮助少儿培养根据目标编写方案规划路线能力的同时,建立基本的编程思想。
下面通过部分具有代表性的功能模块进行具体详解,以及介绍所用到的技术实现。
用户通过在微信小程序中搜索易编程授权微信个人信息成为游戏用户。用户访问小程序,触发微信小游戏中的app.js中的wx.login方法,获取到微信用户的code并存储到app.globalData;当用户点击登录按钮,通过app.globalData获取微信用户code,同时发起request到微信服务器,微信服务器通过包装URL(包含用户code,appid,secret等信息)获取用户的openid,并将其返回给微信小程序;小程序获取用户的基本信息,并向微信服务器发起查询,如果该openid已经有注册用户,则直接登录。如果查询结果为未注册,则把用户信息录入数据库,再登录;作为唯一标识的openid,则存入微信小游戏缓存中。登录如图1所示。
图1 主界面
游戏设计模式主要采用最基本的通关模式,主要分为四大关卡:基础、递归、条件、综合。每个关卡有设置6个子关卡。用户需要为雪人的行进路线进行编程,设定前进、转弯、跳跃、点灯等动作。动作完成后,点击开始按钮,游戏角色就会按照设定的动作在生成的地图上移动。最终点亮所有青色格子就可以进入下一关。关卡难度逐关递增,后期的步骤会越来越多,会出现“动作序列”等操作。部分游戏关卡有格子限制,因此,用户必须合理安排机器人的行进步骤,使用编程逻辑来解决问题,并指导雪人“点亮”每一个青色格子,从而在游戏中获得对基本编码思想的实际理解。
第一部分为基本的顺序结构,主要是为了训练用户关于顺序执行算法思维的理解,用户需要正确设计并合理排序如前进、转弯、跳跃、点灯等动作指令。
第二部分是递归,主要是为了让用户初步理解有关递归算法的一些基本特性——自己调用自己。游戏关卡设置了障碍物,用户可以下达的指令是有限的,因此用户必须合理安排机器人的行进路线,并使用递归思想减少命令数量,简化步骤。
第三部分是条件,主要是循环判断条件的实现。主函数的命令数有限的情况下,用户可以将一组指令写成一个函数,即对这个函数进行封装,然后在主函数main中重复调用它。
第四部分是综合。主要是一些比较复杂的关卡,综合了以上3部分的概念,需要用户编写两段以上程序并灵活运用命令。
目前实现游戏存读档有3种方式:一是二进制方法,通过序列化和反序列化方法把数据存入服务器,简单但可读性差;二是使用XML扩展标记语言,用来标记数据和定义数据类型,可读性强,但文件庞大,冗余信息多;三是使用JSON数据,数据比较简单易于读写,但不直观,可读性比XML差。基于上述原因,我们使用json数据格式从而免去了对象序列化所带来的麻烦。
目前易编程小游戏实现了向前(forward)、向右(characterDirection)、向(characterDirection)、跳 跃(jump)、点灯(light)等动作控制功能的实现。根据生成的地图坐标,在地图上设置一个基点,根据这个基点,来控制游戏人物的移动坐标。
设计txt文件,记录需要点灯的坐标、地图砖块的高度、人物的坐标和方向。在加载地图的时候,会读取这些文件进行初始化地图数据和人物数据转换成数组存储,然后通过数组,加载地图和人物信息。地图和人物分别如图2和图3所示。
图2 地图
图3 人物
本项目是一个基于游戏化思想搭建的少儿编程思维训练平台。主要使用C/S模式,方便后期功能升级及调整,并增强了移动端的实用性和响应性。前端使用JavaScript为主要开发语言来实现友好用户界面,便于前台页面维护;针对页面图片及项目logo使用Adobe PhotoShop进行美化处理。后端选取Intellij IDEA为主要开发环境、数据库服务器采用MySQL数据库管理系统等构建良好的后台数据管理系统,提高了系统整体的健壮性和稳定性。除此之外,小游戏与后台程序使用了Ajax技术,采用json数据格式免去了对象序列化等麻烦。本编程游戏通过简单清晰的图形化游戏界面以及游戏闯关模式的设置,不仅满足了受众群体对于编程的好奇心,而且让玩家能直观地了解最基本的编程术语和编程思维,极大地激发受众群体对编程的兴趣,寓教于乐。