Android群英传读书笔记——第十三章:Android实例提高

第十三章目录

13.1 移动迷宫——拼图游戏

  • 13.1.1 准备工作
  • 13.1.2 初始界面
  • 13.1.3 拼图界面
  • 13.1.4 效果预览与功能进阶

13.2 魔幻矩阵——2048

  • 13.2.1 2048概述
  • 13.2.2 2048游戏分析
  • 13.2.3 2048初始工作
  • 13.2.4 小方块设计
  • 13.2.5 全局设置
  • 13.2.6 游戏面板设计
  • 13.2.7 主程序设计
  • 13.2.8 功能进阶

13.3 实战经验总结

第十三章读书笔记

本来这章不想写了,但是还是把主要内容概括一下吧,一共两个实例

13.1 移动迷宫——拼图游戏

13.1.1 准备工作

13.1.1.1 获取屏幕相关属性

  • 创建了一个工具类,封装了获取屏幕宽高屏幕density的静态方法

13.1.1.2 美化按钮

  • 定义xml文件,shapeselector来对更改按钮外观和点击事件后的变化

13.1.2 初始界面

  • 一些基本的布局,此书作者用得是GridView,选择难度用得是PopupWindow

13.1.2.1 点击事件

  • 用到选择本地图库和相机拍照,然后在onActivityResult()方法中接受返回值并进行操作

13.1.3 拼图界面

  • 布局就不说了

13.1.3.1 拼图算法

  • 随机打乱图片后,有50%的几率将会是无解的,非常著名的算法——N Puzzle问题

13.1.3.2 图片Item实体类

  • 用于放在GridView的适配器当中的,存放id和bitmmap信息

13.1.3.3 图片工具

  • 涉及到2x2、3x3、4x4三种不同模式,封装两个方法:1、将bitmap分割,2、放大缩小到合适的位置

13.1.3.4 生成游戏

  • 去生成乱序的图片,去根据上面提到的那个算法并判断是否有解

13.1.3.5 移动图片

  • 点击事件:如果是空格图片周围的图片可以去点击
  • 交换:交换后判断是否还原成功,当前id与初始状态下的id是否相同
  • 成功:如果成功了,将最后一块图片补齐,提示成功
  • 计时:通过Timer进行计时,一秒去刷新一下TextView
  • 记步:在GridView的点击事件中记数
  • 重置:这个调一下初始的生成图片的方法
  • 返回:直接finish()
  • 显示原图:先Gone掉,然后通过一个动画的形式显示出来

13.1.4 效果预览与功能进阶

  • 还可以优化整个项目,添加新的内容,多人竞技,成绩记录等功能
  • 另外,还可以开发一些新的拼图模式,创新玩法等

13.2 魔幻矩阵——2048

13.2.1 2048概述

  • 这个游戏的开发者是2014年3月份一个20岁的男孩在一个周末完成的一款游戏,意外蹿红
  • 具体玩法:上下左右滑动,所有数字都将会向滑动方向靠拢,遇到相同的数字就相加、合并,移动成功后会在空白区域随机出现一个数字,2或者4,直到数字合并到2048,则挑战成功

13.2.2 2048游戏分析

13.2.2.1 确定布局

  • 面板:4x4的格子,作者使用的是GridLayout
  • 小方块:将小方块抽象成一个对象,拥有数值,颜色等属性

13.2.2.2 确定算法

  • 使用0来代表空格,如果某一行(列)为2204,先将224存入list中,然后2和2合并,为44,并将其作为该行(列)的返回值,从滑动的方向开始放置list中的数字

13.2.3 2048初始化工作

13.2.3.1 游戏主界面

  • 布局没什么说的,button背景还是用shape自定义

13.2.3.2 配置界面

  • 不光是4x4,也可选择5x5、6x6等类型,不光是2048,也可以是4096等等

13.2.4 小方块设计

  • 小方块设计为继承自FrameLayout,并添加一个TextView,然后提供一个setNum方法,设置数值,并根据数值判断颜色

13.2.5 全局设置

  • 创建一个Application类,在Mainifest文件中设置Application入口,在此类中完成对游戏的配置

13.2.6 游戏面板设计

13.2.6.1 初始化游戏矩阵

  • 初始化的时候,移除之前游戏的所有布局,首先将所有小方块都设置为0
  • 通过一个方法来添加随机数字2或者4

13.2.6.2 增加滑动事件

  • 在onTouch()方法中捕获按下和松开的事件,通过坐标来判断向哪个方向去滑动
  • 此书作者加了一个超级用户的权限,滑到一定的长度弹出对话框,想要什么数就是什么数
  • 判断好具体的滑动方向后,就可以通过封装好的四个swipeXXX()方法来执行小方块的合并操作
  • 合并的算法:对相同数字进行合并,加一个标志位,合并过一次就不再合并了

13.2.6.3 记录历史矩阵

  • 通过记录矩阵实现撤销的功能

13.2.6.4 判断游戏结束

  • 游戏成功意味着完成了2048,在每一次ACTION_UP操作都去调用一下判断的方法
  • 游戏失败意味着不能再移动了,需要去判断每一个小方块的数值在其上下左右都没有相同的了

13.2.7 主程序设计

13.2.7.1 添加游戏面板和游戏信息

  • 游戏记录,游戏分数什么的,比较简单吧

13.2.7.2 动画效果

  • 本书是通过对小方块做了一个简单的Scale变换

13.2.8 功能进阶

  • 换肤功能,多人一起玩的功能

13.3 实战经验总结

  • 通过这两个实例,抛砖引玉,让读者能够找到解决问题的方法
  • 在开发过程中,多总结、归纳所获得的学习经验

总结

这本书也就算看完了,起码笔记都过了一遍,但是仅看一次还不够,我还是认为无论什么书看第二遍、第三遍和看第一遍是完全不一样的,所以所以还是要多多回顾,才能学到更多的东西,有一句俗话说的好啊:“温故而知新”,学习的路程很漫长,坚持一定会有成果的,加油!

猜你喜欢

转载自blog.csdn.net/pengbo6665631/article/details/82529020