这一分类,我打算自己做一些简单易做小游戏。一方面可以巩固自己学的知识,一方面做出来也可以自己玩。自己玩自己做的游戏相信别有一番风味~想到什么游戏里的好点子可以立即更新游戏,这种感觉想必是pangpang的!
游戏简介
2048我就不多说了,大家应该都知道。
项目流程
我打算先实现游戏功能,界面什么的先一切从简~所以大体的界面流程就是一开始的点击开始游戏之后直接跳转到游戏界面。
开始行动
新建一个项目,在里面新建两个Activity,分别为StartActivity和GameActivity
开始界面
在activity_start里面就只放一个Button用来跳转到GameActivity
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="start"
android:text="开始游戏"
android:textSize="20sp" />
</LinearLayout>
然后在StartActivity把start方法写好:
package com.example.a2048;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
public class StartActivity extends AppCompatActivity {
@Override
public void onCreate( Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
}
public void start(View view)
{
startActivity(new Intent(this,GameActivity.class));
}
}
那么这样子我们就成功写好了两个界面之间的跳转。到这一步我们应该没有什么问题。下面我们来分析分析GameActivity应该怎么写。
游戏界面
一般的2048应该是由16个格子构成,一开始游戏随机两个格子出现两个数字,随着手指的滑动,这两个格子会向屏幕一侧偏移直至边缘,如果两数字相同且随着手指移动方向摆放则把两个数字相加。
我们先把上述的功能实现吧。
layout
用最笨的方法就是在布局中使用GridLayout(网格布局),里面写16个TextView。
由于原生的GridLayout只支持API21以上的手机,所以我们这里为了兼容性就用v7包里面的GridLayout,在gradle里面加一句compile 'com.android.support:gridlayout-v7:25.3.1'
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:columnCount="4"
app:rowCount="4">
<TextView
android:id="@+id/tv1"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_columnWeight="1"
app:layout_rowWeight="1"
android:textSize="20sp"
android:gravity="center"
android:text="1" />
<TextView
android:id="@+id/tv2"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_columnWeight="1"
app:layout_rowWeight="1"
android:textSize="20sp"
android:gravity="center"
android:text="1" />
<TextView
android:id="@+id/tv3"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_columnWeight="1"
app:layout_rowWeight="1"
android:textSize="20sp"
android:gravity="center"
android:text="1" />
<TextView
android:id="@&