基于Arduino和APPInventor2的“成语接龙”APP游戏

2021-11-28 12:20王星晨
电子制作 2021年20期
关键词:单人接龙列表

王星晨

(常州信息职业技术学院电子工程学院,江苏常州,213164)

0 前言

成语是中华民族历史文化的结晶,成语接龙也是老少皆宜的民间文化娱乐活动。目前针对小学低年级儿童的成语教授方法一般都是读、写,对于当代捧着电子设备长大并且普遍喜爱电子游戏的孩子来说,这样的成语学习方法既没有趣味性也没有对抗性。通过调研,我们发现,目前市场上还没有一款用手机游戏实现成语接龙游戏的双人对抗赛,因此找准了这一切入点进行创新设计,本文提出了基于Arduino和APPInventor2进行设计与实现,完成了一款供小学生及留学生的寓教于乐的“成语接龙”APP游戏。

1 系统总体设计与实现

系统总体设计我们选用APP Inventor2进行APP开发,这是一款采用拖拽操作的可视化编程语言基础的开发工具,摒弃了复杂的程序代码,使乐高积木式堆叠法来完成设计制作,大大的降低了开发的难度,提高了开发效率。

系统开发的是“成语接龙”APP,游戏规则为采用成语字头与字尾相连不断延伸的方法进行接龙,当有一方未在规定的时间内答题,就算失败。为了增加游戏的趣味性,游戏分为“单人挑战”和“双人对战”版。

设计流程:打开APP,系统主界面(图1)有两个按钮:“单人挑战”和“双人对战”。点击进入单人挑战界面,此界面为单人模式,由系统给出首个成语,自己单独完成成语接龙游戏,游戏时可有提示。点击进入双人对战界面,进入此界面后,需要选择自己为服务器或客户机端,服务器端需开启服务器,客户端需对服务器进行连接,这样服务器端与客户机端才能相连,最终完成蓝牙双人对战。下面,以“单人挑战”为例,介绍功能设计实现。

2 “单人挑战”成语接龙的设计与实现

■2.1 “单人挑战”成语接龙界面设计

“单人挑战”成语接龙游戏界面如图2所示,主要组件参数设计如表1所示。

图2 “单人挑战”成语接龙界面

表1 “单人挑战”组件设计表

■2.2 加载成语词典模块

因为本游戏是成语接龙游戏,因此在本程序中就要创建一个成语库,以便在程序运行时能够对相应的成语进行查找。首先我们需要加载一个成语词典库,成语词典文件为csv文件格式,其中内含30804个汉语成语词典,每一个成语为单独的一行,以便之后在APPInventor 2中创建列表,另外,还需要创建一个与成语列表相对应的成语解释字段,也是相同的csv文件。在处理成语词典库的过程中,由于通过Excel另存为的csv格式文件编码为ANSI,这种ANSI编码在App Inventor 2中打开会出现乱码,因此我们需要通过记事本打开,通过另存为把编码修改为UTF-8,如图3所示。

图3 文件编码修改

在逻辑代码编辑中,需要先初始化一个名为成语列表的全局变量,首先将它的值设置为空列表,当每次游戏所处界面被打开,程序就会调用文件管理库用来读取之前存储的csv文件,作为数据库来调用,当文件管理库获取到文本,用APPInventor 2,将文件管理库中的内容转为csv列表字符串,在APPInventor 2中,一个CSV文件实际上是被转换为一个二维列表。每一行先转换为一个列表,该行的每一列成为列表中的一个列表项,然后把每一行作为一个列表项形成一个列表。成语解释表与此是相同道理。

■2.3 检查词语是否为成语

在整个设计中,我们首先需要检查用户输入的文字是否为成语,因此就需要在成语词典中检索。首先在APPInventor 2中定义一个“检查是不是成语”的过程,过程中使用了“如果,则,否则”的逻辑关系。如果在成语列表中检查到用户输入的成语,则为真,否则为假。由于“成语列表”是个二维列表,每个列表项也是一个列表,虽然这个列表只有一个列表项。所以需要构造一个参数“词语”作为唯一列表的列表,然后再去检查。

下面就是检查阶段性的成果了,如图4所示,需定义初始化全局变量“成语字串”当用户按下确定键之后,程序即会对所输入词语进行检查,此时调用“检查是不是成语”过程,用来判断成语的正确性,若不是成语,则发出警告,若是成语则通过列表显示框显示成语,这里的列表显示框的单元项还可以通过设置“元素字串”属性来更新,元素字串是一个文本,每个单元项通过字符逗号进行分割。

图4 检查是否为成语逻辑图

■2.4 检查两个成语是否符合接龙规则

按照成语接龙规则,接龙成功是采用成语字头与字尾相连不断延伸的方法进行接龙,这样,就得需要对第二个成语的首字与对一个成语的尾字进行判断是否相同。

我们需要定义两个过程来完成判断,如图5所示,在“检查文本1的头是否和文本2的尾相等”过程中,通过比较,文本的逻辑进行判断两个字符是否相等,在主体过程中则运用了嵌套的如果,则的判断语句,并且调用了上面定义的“检查文本1的头是否和文本2的尾相等”过程判断成语接龙是否正确,正确则在列表显示框中显示,否则弹出对话框警告,并且游戏结束。

图5 检查是否接对成语图

■2.5 增加提示和解释功能

由于各人差异的问题,玩家可能成语量有限,到某一步就会卡壳,因此针对这个情况,在单人模式下增加了提示和解释的功能,一定情况下,对玩家也是练习,增加了玩家的成语词汇储备量,为此,我们需要在此创建一个全局变量“提示成语列表”,用来存放符合的成语,通过调用自定义的“查找获取某字开头的成语列表”过程,在对话框显示结果。在此过程中,循环对“成语列表”中的每个成语判断是否以传入的参数“开头的字”开头,满足条件的就加入在“提示成语列表”。由于数量较多,因此此过程耗时会较长。

解释模块,需要实现当玩家点击列表显示信息中的任何成语时,会弹出相应的解释信息。在整个过程中,原先每查找一次就需要对解释表做一遍的查找,这样的速度会很慢,经过修改我们可以在小的成语词典找到这个成语的位置,以此来缩减原本要依次检查的时间,记录下成语的位置,然后直接去词典中哪出想要的信息(这里大小词典的顺序是一致的),这样就是类似于索引的机制,速度就会有了大大的提升,比一个一个的去对比,速度会有很大的提升。

3 结语

本文我们提出了基于APP Inventor 2平台开发“成语接龙”App游戏的设计思路和具体方法。为在未来基于APP Inventor 2平台研发App提出和更好的研究方向、研究模式、研究办法。

猜你喜欢
单人接龙列表
韩国“单人洗浴店”生意火爆
韩国单人家庭占比首次超过30%
与外隔绝
扩列吧
词语接龙
列表法解分式方程问题探索
词语接龙
列表画树状图各有所长
成语接龙
2011年《小说月刊》转载列表