安卓2048小游戏的构建

1、所需控件:

(1)自定义控件(对view的继承)

(2)Canvaspaintbitmap(画图控件)

(3)触屏监听器(OnTouchListener的实现)

2、过程实现:

(1)自定义控件:
view进行继承

Public MyView extends View{}

主要内容:

1)继承view的三个构造方法

public MyView (Context context,AttributeSet attrs,int defStyle){

super(context,attrs,defStyle);
}

public MyView (Context context,AttributeSet attrs){

super(context,attrs,0);
}

public MyView (Context context){

super(context);

  //显式调用父类的构造函数,完成viewview的父类及更高层父类的       //属性、方法的构建

2)重写view中的onDraw方法

创建4*4int型数组记录相应位置的分数

使用Canvaspaintbitmap等画图控件,画出你想要的MyView显示效果。

protected void onDraw(Canvas canvas){

super.onDraw(canvas); //canvas给父类方法,完成父类的重绘构建

Bitmap  mybitmap=Bitmap.createBitmap(this.getWidth(),

this.getHeight(),Config.ARGB_8888);

//新建位图

Mycanvas  mycanvas=new Canvas(mybitmap);

//连锁画布与位图,即将来画图画在位图上

Paint  mypaint=new Paint(); //新建画笔

//。。。。。。略

//设置画笔属性,如:设置轻灰色,无锯齿,线条粗细值1,实心画图(mypaint.setStyle(Paint.Style.FILL);

RectF r =new RectF();//  新建一个矩形范围

r.left=0;

r.top=0;

r.right=this.getWidth();

r.bottom=this.getHeight();

mycanvas.drawRoundRect(r,30,30,mypaint);

//画一个填充全屏的圆角矩形

。。。。。。。

//同理,利用该方法在屏幕中部画出16个圆角矩形

//接下来,根据数组的存值,在圆角矩形内,画上分值(216等)

mypaint.setColor(Color.WHITE);

//将画笔设置颜色为白色(要与上一次设置的颜色不同,否则显不出)

mypaint.setTextSize(40);//设置要画文字的字体大小

//画出相应位置的分数

//canvas.drawText(String  str,float  x,float  y,Paint  paint);

//str为将要画的文字,xy为文字左下角的坐标,paint为要传入的//画笔对象

//由于要传入String对象,需将int类型数据转为String类型

//1、用Integer 接收 int类型数据,再调用toString()方法转化:

//如:Integer  it=new  Integer();

//canvas.drawText(it.toString , x, y, paint);

//2、用字符串与int类型数据的加法(结果转为字符串型)

//int count=2;

//canvas.drawText(“”+count, x, y, paint);

//根据数字的不同(一位数、两位数、三位数、四位数)调整

//TextSize与左下角坐标位置x,y

。。。。。。

//诸如此法画出总分数

。。。。。。

//最后利用onDraw(Canvas canvas)方法里的canvasMyView

//画上位图,起始点坐标(0,0)             

Canvas.drawBitmap(mybitmap,0,0,mypaint);

}

(2)OnTouchListener的实现

1)传入MyView的对象,其中包含了要处理的数组

2)按下(DOWN)获取起始点的坐标,松开(UP)获取结束点的坐标

3)根据两次坐标确定滑动方向:

可以用数学三角函数的比较,如:

x2>x1&&Math.abs((y2-y1)/(x2-x1))<Math.tan(Math.PI/4)

x2>x1:表明有向右的分量,即可能向右;

后者:斜率的绝对值<tan(PI/4),表明滑动方向在右方向的正负45度范围内,

即:滑动方向为“右”;

其他类似判之。

4)根据方向处理数组,满足该游戏规则;

5)调用MyView.invalidate();使原有MyView显示失效,激活重绘;

(3)主界面与活动:

1)给界面添加MyView控件,

2)给MyView控件设置触屏监听器

posted on 2016-01-20 12:52  莫小江  阅读(277)  评论(0编辑  收藏  举报