Android&java的成长之路之六(2048小游戏②)
来源:互联网 发布:sas软件正版价格 编辑:程序博客网 时间:2024/04/30 01:15
紧接着上一章,我们说到了要把卡片部署到GridLayout上。我们玩正规的2048游戏的时候,看上去是卡片移动来叠加数字,实则不然,它只是添加了动画效果,其实是之前已经全部铺满地卡片,只是能够重叠的时候数字发生了改变而已。接下来说下添加卡片的方法:
这个方法主要写在GameView类中的:
//改变布局的宽高 @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); int cardWidth = (Math.min(w, h) - 10) / 4;//得到每一张卡片的宽高 addCards(cardWidth, cardWidth); startGame(); } //添加卡片 private void addCards(int cardWidth, int cardHeight) { Card c; for (int y = 0; y < 4; y++) { for (int x = 0; x < 4; x++) { c = new Card(getContext()); c.setNum(0); addView(c, cardWidth, cardHeight); cardMap[x][y] = c; } } }
其中 addCards()函数是简单的添加 但是并没有限制每一张卡片的宽高 所以在onSizeChanged函数中 获得GridLayout这个控件的宽高,用来得出每一张卡片的边长。
卡片添加成功之后就可以开始游戏了 就是startGame函数:
//开始游戏 private void startGame() { MainActivity.getMainActivity().clearScore(); for (int y = 0; y < 4; y++) { for (int x = 0; x < 4; x++) { cardMap[x][y].setNum(0); } } //随机添加两个卡片 addRandomNum(); addRandomNum(); }开始游戏的时候又要随机添加两张卡片(addRandomNum) 这玩过2048的都懂得:
//添加随机数字并且只添加一张卡片 private void addRandomNum() { emptyPoints.clear(); for (int y = 0; y < 4; y++) { for (int x = 0; x < 4; x++) { if (cardMap[x][y].getNum() <= 0) { emptyPoints.add(new Point(x, y)); } } } Point p = emptyPoints.remove((int) (Math.random() * emptyPoints.size())); cardMap[p.x][p.y].setNum(Math.random() > 0.1 ? 2 : 4); setCardBGColor(); }
当然了 这些步骤实现的时候还要有很多的变量和辅助功能性的函数:
用来存放每张卡片的数字 :
private Card[][] cardMap = new Card[4][4];//用来存放每张卡片 private List<Point> emptyPoints = new ArrayList<>();
还有函数:
//循环遍历 然后根据每个卡片的数字来设置背景颜色 private void setCardBGColor() { for (int x = 0; x < 4; x++) { for (int y = 0; y < 4; y++) { cardMap[x][y].setBGColor(cardMap[x][y].getNum()); } } }
这些主要实现了卡片类的部署以及相关功能。其主要核心功能在下节会详细说明。
0 0
- Android&java的成长之路之六(2048小游戏②)
- Android&java的成长之路之五(2048小游戏①)
- Android&java的成长之路之七(2048小游戏③)
- JAVA的成长之路(自勉)
- java的成长之路!
- Android&java的成长之路之三(Android引导页面和欢迎界面)
- Android&java的成长之路之八(Android短信验证 亲测)
- Android&Java的成长之路之二(服务端最基本的)
- Android&java的成长之路之四(自定义字母索引)
- java成长之路
- Java成长之路
- JAVA成长之路
- Java成长之路
- java 成长之路
- Java 成长之路
- java成长之路
- Android&Java的成长之路之一(java服务器搭建)
- Java小游戏之控制台小游戏
- fragment管理
- 修改oracle用户密码永不过期
- poj 1733 Parity game(带权并查集)
- WindowsAPI - Net - WSAStartup - Baidu.com
- SQLAlchemy 笔记 ORM方式访问数据库
- Android&java的成长之路之六(2048小游戏②)
- 交换机工作原理
- linux 根文件系统组成部分
- jQuery 操作导航栏
- Apache Thrift 下篇(2)
- jQuery.Validate验证库
- Ubuntu 14.04, Apache vhost 配置
- JQuery给动态加载的节点绑定有效事件
- 11个强大的Visual Studio调试小技巧