湖南科技大学本科生毕业设计(论文)
} } int t = getTile(i, j); //取出当前格子处的数字 c[t - 1] ++; //取出的数字作为数组c的下标,对应数组元素加1 if(c[t - 1] > 1) { //测试数组元素值是否大于1 } return 1; //竖排错误 …… //同样方法检测横排和小方格中数组,不符合要求时分别返回2和3 …… } 判断isGameOver的返回值,当返回值为4时,表示玩家成功完成当前谜题。启动游戏成功界面时,传入游戏完成时间,游戏填入数字次数,本次游戏所得分数,本游戏关卡的最高分数,以及游戏关卡的数值。
游戏计分规则:游戏所用时间—游戏填入数字次数+游戏需要填空的次数。 最高分数记录方法:当游戏完成时,取出使用SharedPreferences存储的对应关卡的最高分数,与当前分数比较,若小于当前分数,则将当前分数赋值给最高分数,并再次使用SharedPreferences存储,其流程图如图4.11所示。
游戏结束判断此关卡是否存储过最高分是取出当前关卡已存储的最高分最高分} return 4;//所有检测都通过时,返回数值4 否设置最高分为默认值0将当前得分赋值给最高分是完成存储最高分否判断最高分是否大于当前得分图4.11 最高分数记录流程图
Succeed.java类负责游戏成功信息显示,布局文件采用LinearLayout与
-27-
湖南科技大学本科生毕业设计(论文)
RelativeLayout相结合。LinearLayout顾名思义表示这个容器把它的子视图按照垂直或者水平方向单向排列;RelativeLayout即为相对布局,比线性布局更加灵活,也同样更加复杂[8]。其布局结构图如图4.12所示,实际显示效果如图4.13,4.14所示
图4.12 游戏成功布局结构图
图4.13 游戏成功效果图一 图4.14 游戏成功效果图二
-28-
湖南科技大学本科生毕业设计(论文)
获得GameActivity传入的值显示到布局文件指定的位置,并且比较游戏最高分和当前分数,分别显示“你创造了最高分!”和“你离最高分还有一些距离哦!”,提高游戏的趣味性与挑战性。
另外“返回”按钮可以返回相同等级的关卡选择界面,重新开始另一盘游戏。“下一关”按钮根据当前关卡数值选择合适的关卡进行跳转,增加了游戏的体验感与便利性。
4.9游戏设置模块
在Android开发过程中,有时候我们需要保存一些简单的软件配置等数据的信息,而如果我们直接用数据库存储的话又不太方便,在这里我们使用SharedPreferences。SharedPreferences保存的数据主要是类似于配置信息格式的数据,因此保存的数据主要是简单类型的键值对(key/value),它保存的是一个XML文件。
(1)音乐控制实现
Android提供了方便的工具来定义所有程序的首选项,并定义在几乎不需要编写代
码的情况下如何显示这些首选项[9]。本游戏提供了音乐控制,中英文选择,颜色提示,键盘提示四个设置项。下面是res/xml/settings.xml的资源文件中的部分内容。
湖南科技大学本科生毕业设计(论文)
} addPreferencesFromResource(R.xml.setttings); /*获取音乐的当前值*/ public static boolean getMusic(Context context) { } 通过Prefs中对应的方法即可知道玩家对游戏的设置,比如音乐播放,通过return PreferenceManager.getDefaultSharedPreferences(context). getBoolean(OPT_MUSIC,OPT_MUSIC_DEF); Prefs.getMusic()方法,我们就可以获得玩家希望播放音乐或者关闭音乐的意愿,从而控制游戏过程中音乐的播放。音乐播放控制通常放在Activity的onPause()和onResume()方法中。 //播放音乐 } //停止音乐的播放 public static void stop(Context context) { } (2)语言选择实现
语言切换是衡量一个软件是否考虑周全,是否成熟的标准之一。数独游戏通过设置项中对中英文的选择,可以方便的切换游戏语言环境。偏向于使用者的喜好,本游戏没有根据手机操作系统当前语言环境更换游戏语言环境的操作。
要想实现Android语言本地化,首要前提是在UI中展示文本时需要使用字符串资源,即res/values/strings.xml资源文件里的字符串。本游戏创建了两个语言版本的
-30-
public static void play(Context context,int resource){ stop(context); if(Prefs.getMusic(context)){ } mp = MediaPlayer.create(context, resource); mp.setLooping(true); mp.start(); if(mp != null){ } mp.stop(); mp.release(); mp = null; 湖南科技大学本科生毕业设计(论文)
strings.xml文件。Android会从不同的strings.xml文件中混合并匹配字符串,若找不到对应语言版本的字符串资源文件,则系统调用默认的字符串资源文件显示。
通常,我们使用Eclipse的Android XML Values File工具创建多语言文件夹。填入需要创建的资源文件名称后,点击“Next”,在弹出的窗口中设置“Language”为“ch”,“Region”为“CN”,Eclipse即会在/res目录下新建一个values-ch-rCN文件夹,文件夹里有一个strings.xml文件,我们只需将/res/values/strings.xml中的内容复制到新建的文件中,并将相应字符串改成需要的中文,Android本地化的第一步即完成。图4.15为多语言文件夹创建示例图。
图4.15 多语言文件夹创建示例图
事实上,此时,数独游戏已经可以实现语言切换,当Android系统语言设置为中文时,游戏语言显示也为中文。不过为了改变游戏的语言环境,而去改变系统的语言环境,看起来不是一个很好的解决办法。下面介绍可以只改变应用程序语言环境,不影响系统语言环境的一种实现方法。 /********* 中英文切换 *********/
public void SwitchLanguage(Locale locale) { -31-