最近一款游戏在android和ios端,甚至web端都非常火,这款游戏就是2048。相信不少朋友都玩过了。
这款游戏易上手,可玩度高,对配置的要求可忽略不计,让它迅速占领了各项下载排行榜的显眼位置。
我特意琢磨了一下该款游戏,以前在github上也看见过开源的源码。这一次总结经验,用最简单的方式,让大家迅速开发出属于自己的2048游戏。
下面我从三个大点来写开发步骤,将游戏分解成几个关键的步骤之后,就发现开发一个2048其实并不困难。如果你还会PS/AI/DS/3D,设计一款自己的动画、图片,应用就更完美了。
废话不多说,马上开始开发之旅!
【开发过程】
为了方便,我把必要工具类没有另外新建包,按正规程序而言,大家应该建立util工具包,把这些工具类方法统一保管。
开发过程思路是
界面设计→事件实现→算法判断→过程处理
第一步:
◆『界面设计』
由于主要为了展示游戏,界面上我只提供给大家核心思路,具体的外层布局,怎么好看大家可以怎么设计。
这里我使用了最外层的linearlayout布局。
在该布局下,我们先使用一个GirdView布局。使用GirdView的好处就是,它是著名的九宫棋的布局形式。而我们的2048可以看成是4X4的一个棋盘。每个棋盘位上填充了不同的数字。这就是思路。
GirdView的布局形式确定下来后,为了方便,我们不妨自定义一个GridView控件,方便后面更多的自由度高的操作。
我们在src主包下新建一个类:
gameview,让它继承GirdLayout
接着把它的构造方法都实现了:
public class gameView extends GridLayout {
public gameView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public gameView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public gameView(Context context) {
super(context);
}
我们顺便把布局文件里的girdview控件名字改为我们的类:
<com.fengzhengfang.game2048.gameView
android:id="@+id/GView"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1" >
</com.fengzhengfang.game2048.gameView>
前面的"com.fengzhengfang.game2048"是包名,大家自己替换为自己命名的包名即可。
接着,为了记录游戏分数,我们在girdview控件上定义两个textview:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/score" />
<TextView
android:id="@+id/tvScore"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
这样我们的布局文件基本构建完毕,我们这时可以考虑给游戏加一个最高分的记录功能,为此再添加两个控件:
<TextView
android:id="@+id/highs"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="50dp"
android:text="@string/highscore" />
<TextView
android:id="@+id/highscore"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/highs"
/>
*注意,我在这里,为了界面实现美观,在最外层线性布局的情况下又嵌套了一层相对布局,大家可以根据具体情况自己设计。
好了,第一步就算实现完了,我们在Manifest清单文件中配置一下新的activity,并且把屏幕方向指定(为了游戏界面设计时参考数值要么为高,要么为宽,恒定):
<activity
android:name="com.fengzhengfang.game2048.splash"
android:label="@string/app_name"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.fengzhengfang.game2048.gameView"
>
</activity>
OK,第一步完成。要继续开发,请看我的下一篇《手把手教你开发2048!〖二〗》