本文实例介绍了Android实现2048小游戏的相关代码,分享给大家供大家参考,具体内容如下
根据界面,主要实现4*4的格子方块比较麻烦,其他的都挺简单的.总体为实现4*4的格子,自定义GridLayout,并在其中添加触摸监听事件,进行一系列的操作,从而实现游戏的逻辑,最后再添加动画效果即可完成.
下面是设计思路:
一.GameView的设计
首先自定义一个类,继承GridLayout,添加两个构造方法
public class GameView extends GridLayout {
//两个必要的构造方法
public GameView(Context context) {
super(context);
initView();
}
public GameView(Context context, AttributeSet attrs) {
super(context, attrs);
initView();
}
}
接下来在initView()中实现设置GridLayout为四列,并且添加触摸事件监听.(监听方法还可以重写onTouchEvent(),返回值为true即可),判断触摸方向,主要是通过x轴和y轴的偏移量的比较
//初始化变量的方法
public void initView(){
//设置只有四列
setColumnCount(4);
//设置监听事件
setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
setX = event.getX();
setY = event.getY();
break;
case MotionEvent.ACTION_UP:
offsetX = event.getX() - setX;
offsetY = event.getY() - setY;
//判断滑动方向
if (Math.abs(offsetX) >= Math.abs(offsetY)) {
if (offsetX > 0) {
swipright();
} else if (offsetX < 0) {
swipleft();
}
} else {
if (offsetY > 0) {
swipdown();
} else if (offsetY < 0) {
swipup();
}
}
break;
}
return true;
}
});
}
监听事件实现后先放在那里,接下来把4*4的里面每个小格子设计成小卡片,每个卡片就是一个TextView,卡片设计很简单,需要什么就添加什么,默认数字为0,这个时候代表是空值,也就是空卡片.
public class Card extends FrameLayout {
public Card(Context context) {
super(context);
tvCard = new TextView(getContext());
tvCard.setTextSize(40f);
tvCard.setGravity(Gravity.CENTER);
LayoutParams lp = new LayoutParams(-1,-1);
lp.setMargins(15,15,0,0);
addView(tvCard, lp);
}
//卡片上的数字
private int num;
private boolean is2048 = true;
private void judgeIs2048(int num){
if (is2048){
if (2048==num){
Toast.makeText(getContext(),"恭喜赵莹达到2048",Toast.LENGTH_LONG).show();
is2048 = false;
}
}
}
public int getNum() {
<