您的位置:首页 > 其它

小游戏:2048

2016-04-24 19:42 381 查看
刚刚写了一个2048,和大家说说,也算是自己的一个笔记吧,

首先我们先来看看效果图吧,最上面的score和最下面的重新开始太简单了,就是两个textview和一个button,我就不说了,我就只说中间部分了


中间很明显是一个网格布局,我们新建一个GameView类用来创建这个布局,setBackgroundColor设置背景颜色,setColumnCount设置网格数量


网格设计好之后要添加到xml文件中,layout_height=odp一般是和layout_weight一起使用,用来设置控件的比例


布局基本完成了,网格里面的数字也就是一个textview,当然,玩过的人都知道游戏中的2和4出现的比例是不一样的,所以我们需要用cardsmap[p.x][p.y].setNum(Math.random() > 0.1 ? 2 : 4);来设置2和4出现的比例,至于对上下左右滑动的判定,可以用setOnTouchListener获得点击前的坐标和点击后的坐标,从而判断出滑动方向。

接下来是最重要也是最复杂的逻辑,


这是左滑的代码,通过一个二重循环遍历所有位置,然后x1=x=1判断第二列第三列和第四列的值,如果有值就进行操作,没有值,那无论怎么划第一列都没有变化,所有我们不需要进行操作,接下来又可以分为2种情况,第一种第一列没有值,那么第二列与第一列的值进行交换,x--,重新遍历,如果第二列的值等于第一列,那么第一列的值乘2,第二列为0,其他的上下右类似,我就不写了。

最后还有成绩的显示和重新开始的按钮,这个比较简单我就不贴代码了,大致说一下,类似于单例模式,既然textview是私有的,那我们就可以创建一个借口来使用textview,在GameView中每次数字叠加就调用一次借口,按钮类似。

这个只是大致说了一下,具体实现下面的源码有,

源码下载地址:http://download.csdn.net/detail/qq794383252/9501236

第一次写博客,写的不好请海涵
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  游戏 控件