这一篇的内容主要是在上一篇的基础上,加入分数计算(包括当前分数和最高分数)、游戏结束的判断以及游戏界面的重置这三个部分的功能。
一、分数的计算和保存
首先,2048这个游戏的分数包括,两个部分当前游戏分数和最高分,当前的游戏分数我们可以保存在程序的变量中,因为它只对当前这盘游戏有用,游戏结束就可以清空;而最高分则需要以一种方式保存在手机中,这样当我们下次再打开游戏时,还能读取到之前操作的最高分。
1、当前分数
当前分数的计算还是很简单。我们只需要在每次发生合并的时候,将产生的分数加到我们声明的分数的变量中,然后更新一下用于显示当前分数的控件即可。
我参考了一下目前大多数2048游戏的积分规则是,合并后格子的分数是多少,就增加多少分。比如2和2合并成4,那么就加4分。
2、最高分
最高分需要保存在手机中,这样即使我们把游戏的程序关掉,最高分的数据也不会丢失。就我目前知道的Android保存数据的方式有这么几种:1、保存在Android自带的sqlite这个数据库中 2、通过java以文件的形式保存在手机存储中 3、使用Android提供的SharePreferences类来保存 等等(当然实际可用的方法肯定不止这么多,这只是我目前了解到的)
比较了几种方式,我在这个2048程序中,选用了相对比较简单的SharePreferences类来保存最高分。SharePreferences是Android提供的一个轻量级的用于数据保存的类,它保存的方式是以XML的格式保存在\data\data\<package name>\shared_prefs\目录下面。我查了一下,大多数使用这个类的情景是用于保存一些比如设置信息之类的,不太适合保存太复杂,或者太多的数据。但是对于我们来说,正好用来保存最高分。