纯代码实现2048各种版本
来源:互联网 发布:数据割接 编辑:程序博客网 时间:2024/06/13 14:57
背景: 在看了极客学院 的Android 实战视频教程之后,觉得受益匪浅.我在上面加了一些东西,做了一些优化.现在游戏分为几个版本:经典版(2 4 8 16 …) 情侣版,逆向版,丧病版,朝代版,甲乙丙丁版.
架构: 1.游戏主界面类(MainActivity)
2.游戏二级界面(SecondActivity 可以玩游戏的那个界面,根据配置类选择不同版本进去)
3.卡片类( Card LayoutParams,根据配置信息显示不同界面,一个数字既是一张卡片)
4.卡片移动动画实现类(AnimLayer)
5.游戏逻辑实现类(GameView)
6.配置类(Config)
7.关于作者(About)
具体说明:
MainActivity:选择不同的版本进入游戏
Config:控制游戏行数和列数,版本
SecondActivity:显示当前分数.保存分数(保存到文件中): Editore = getPreferences(MODE_PRIVATE).edit();
e.putInt(SP_KEY_BEST_SCORE,s);
e.commit();
获得文件中的最高分: getPreferences(MODE_PRIVATE).getInt(SP_KEY_BEST_SCORE, 0); 其他就是显示卡片呈现给用户.
GameView:游戏的主要逻辑.用一个卡片数组,记录卡片信息. 设置监听器,当用户触摸屏幕时,调用触发以下监听器,判断用户想要的方向(setOnTouchListener),获取用户按下时的坐标,再获取用户离开屏幕时坐标即可知道用户想滑动的方向,但是注意判断一个x方向的相差大还是y方向上的差距大.用户如果左滑,则写一个左滑的函数,实现左滑应该做什么.滑动函数实现:比如从做往右,左边有值的卡片往右滑过去,遇到空格就跳过,遇到相等的就相加.游戏结束:在没有空格并且相邻两个不相等时即为游戏结束
Card:一个卡片就是一个LayoutParams,上面放一个文本控件,这个类就是美化这个卡片的,颜色,显示的文字等,根据Config的配置信息显示不同的内容.
AnimLayer:继承自FrameLayout.滑动特效:从一个点到另一个点,在其间产生划痕的效果 这里是从当前位置移到上下左右的其中一个.需要用到一个函数, TranslateAnimation 位移动画效果
*TranslateAnimation(float fromXDelta, floattoXDelta, float fromYDelta, float toYDelta)
* floatfromXDelta 动画开始的点离当前View X坐标上的差值
float toXDelta 动画结束的点离当前View X坐标上的差值
float fromYDelta动画开始的点离当前View Y坐标上的差值
float toYDelta 动画开始的点离当前View Y坐标上的差值
常见方法:
animation.setDuration(longdurationMillis);//设置动画持续时间
animation.setRepeatCount(inti);//设置重复次数
animation.setRepeatMode(Animation.REVERSE);//设置反方向执行
特效实现方法:从一个点到下一个点,如果下一个点是空的则先把下一个设置为不可见,在利用移动动画函数将动画实现,再显示下一个点.
生成卡片时的缩放效果:用到了Android缩放动画效果的一个函数android中提供了4中动画:
AlphaAnimation透明度动画效果
ScaleAnimation缩放动画效果
TranslateAnimation位移动画效果
RotateAnimation旋转动画效果
ScaleAnimation(floatfromX, float toX, float fromY, float toY,int pivotXType, float pivotXValue, intpivotYType, float pivotYValue)
floatfromX 动画起始时 X坐标上的伸缩尺寸
floattoX 动画结束时 X坐标上的伸缩尺寸
floatfromY 动画起始时Y坐标上的伸缩尺寸
floattoY 动画结束时Y坐标上的伸缩尺寸
intpivotXType 动画在X轴相对于物件位置类型
floatpivotXValue 动画相对于物件的X坐标的开始位置
intpivotYType 动画在Y轴相对于物件位置类型
floatpivotYValue 动画相对于物件的Y坐标的开始位置
- 纯代码实现2048各种版本
- 纯C++实现2048 AI版本
- 纯代码实现TabHost
- 纯代码实现 AutoLayout
- 纯代码实现AutoLayout
- 纯代码实现dialog
- 纯css实现各种方向小箭头
- 纯代码实现md5算法
- 纯CSS代码实现翻页
- 纯CSS代码实现翻页
- 纯Java代码实现UI
- 纯代码实现基本控件
- UI 纯代码实现计算器
- 纯代码实现图片预览
- 纯代码实现绘制文本
- IOS 纯代码实现界面
- 纯C代码实现重定位
- 纯代码实现timer控件的功能
- iOS访问https ssl和tls双向加密
- char,short,int,long等数据类型
- HDU1429 胜利大逃亡(续)(BFS)
- Struts2自定义拦截器
- Xcode常见崩溃问题
- 纯代码实现2048各种版本
- poj_1005
- codeforce 631C report
- ArrayList和LinkedList区别
- Android单元测试的配置
- XML使用总结(二)
- Switch Fall Through
- 过滤器
- LeetCode207. Course Schedule