基于Android的趣味拼图的实现

2020-08-16 13:48陆毅军黄俊彭巧珍
商情 2020年35期

陆毅军 黄俊 彭巧珍

【摘要】本文基于Android操作系统,根据软件工程的设计思想,以Androidstudio等为开发工具,设计出一款能够开发青少年智力并对其进行海洋生物知识科普的拼图游戏。本游戏包括游戏设置界面,海洋生物图片导读及选择页面,并能显示玩家的当前游戏所用时间和步数。本软件以培养兴趣及科普知识为主。

【关键词】Android   拼图游戏  知识科普

一、引言

目前随着智能手机的全面深入普及,青少年也成为手机app开发的新兴对象。对于青少年而言,寓教于乐的app非常有助于其的智力开发与兴趣培养。实现一款海洋生物科普类的趣味拼图app便是本次的课题。

二、需求分析

在这个迅猛发展的互联网时代,智能手机的普及已经涉及青少年,对此我们设想设计一款能让青少年在游戏过程中学到科普知识并且得到智力开发与兴趣培养的app。由此,我们设计了此款趣味拼图,使青少年在游戏的过程中学习到海洋生物科普知识。

此款app面向的用户为7岁到14岁间的青少年,其基本功能:(1)能对一些海洋生物的基本图片进行浏览。(2)展示页面根据海洋生物的栖息深度进行不同的归类。(3)当点击对应的海洋生物的图片后,将进入新的页面,此页面将展示此海洋生物的相关科普信息,青少年可以自由浏览并进行记忆熟悉。(4)可以根据情况进行游戏困难度的选择。

三、系统设计与实现

(一)游戏设置

用户通过游戏设置按钮进入后,可选择难度设置和背景音乐的设置,难度设置分为3X3、4X4、5X5等适应不同层次用户的选择,给用户带来不同的难度挑战。背景音乐可以试听,在试听后选择自己喜欢的音乐作为背景音乐。

(二)知识展示

用户在海洋生物分类中选择了自己感兴趣的生物后,点击图片即可跳转到有关该动物的科普知识展示页面,用户可以在这个页面自由浏览或者记录,了解和学习相关的知识。

(三)拼图游戏

用户浏览完科普知识后可选择进入游戏,游戏环节中的图片就是我们知识展示页面中的生物图片,而用户进入游戏后图片已被智能分块,在游戏过程中用户发挥自己的智慧,通过移动方块,将智能分块并打乱的图片拼成它原来的模样即为成功,当然在游戏过程中可点击查看原图协助游戏。

(四)核心功能

//判断分割的数据是否能还原成原图

public static boolean canSolve(List data) {

//获取空格Id

int blankId = mBlankItemBean.getmItemId();

// 可行性原则

if (data.size() % 2 == 1)

return getInversions(data) % 2 == 0;

else {

// 从底往上数,空格位于奇数行

if (((blankId - 1) / PuzzleActivity.TYPE) % 2 == 1)

return getInversions(data) % 2 == 0;

else // 从底往上数,空位位于偶数行

return getInversions(data) % 2 == 1;

}

}

//计算倒置和算法

public static int getInversions(List data) {

int inversions = 0;

int inversionCount = 0;

for (int i = 0; i < data.size(); i++) {

for (int j = i + 1; j < data.size(); j++) {

int index = data.get(i);

if (data.get(j) != 0 && data.get(j) < index)

inversionCount++;

}

inversions += inversionCount;

inversionCount = 0;

}

return inversions;

}

//判断拼图是否成功复原

public static boolean isSuccess() {

for (ImageItemBean tempBean : mItemBeans) {

if(tempBean.getmItemId() != 0 && tempBean.getmItemId() == tempBean.getmBitmapId()

continue;

else if(tempBean.getmBitmapId() == 0 &&tempBean.getmItemId() == PuzzleActivity.TYPE * PuzzleActivity.TYPE)

continue;

else  return false;

}

return true;

}

}

四、相關知识

核心算法:计算倒置和算法。拼图的实现是将一张完整的图片切成n等分,如果随机切割排列会导致图片无法还原,使用计算倒置和算法得到图片生成的情况,然后判断拼图是否有解。

五、小结

本文利用Android studio 等开发工具设计了一款立足于青少年智力开发及海洋知识科普的趣味拼图游戏。由于经验不足,该应用仍存在一些不足的地方,功能方面还可以后续拓展。

参考文献:

[1]郭霖.第一行代码Android(第2版)人民邮电出版社,2016.

[2]李兴华.名师讲坛——Java开发实战经典(第2版),2018.

基金项目:课题资助:南昌航空大学第14届“三小”课题。