g2048游戏1-android
来源:互联网 发布:php获取ajax传的参数 编辑:程序博客网 时间:2024/06/01 19:07
g2048游戏1-android
《2048Numberpuzzlegame》是一款数字益智游戏,而《2048》的初始数字则是由2+2组成的基数4。在操作方面的不同则表现为一步一格的移动,变成更为爽快的一次到底。相同数字的方况在靠拢、相撞时会相加。系统给予的数字方块不是2就是4,玩家要想办法在这小小的16格范围中凑出「2048」这个数字方块。——【百度百科-2048游戏】
g2048介绍
游戏规则很简单,每次可以选择上下左右其中一个方向去滑动,每滑动一次,所有的数字方块都会往滑动的方向靠拢外,系统也会在空白的地方乱数出现一个数字方块,相同数字的方块在靠拢、相撞时会相加。系统给予的数字方块不是2就是4,玩家要想办法在这小小的16格范围中凑出“2048”这个数字方块。
游戏的画面很简单,一开整体16个方格大部分都是灰色的,当玩家拼图出现数字之后就会改变颜色,整体格调很是简单。
在玩法规则也非常的简单,一开始方格内会出现2或者4等这两个小数字,玩家只需要上下左右其中一个方向来移动出现的数字,所有的数字就会想滑动的方向靠拢,而滑出的空白方块就会随机出现一个数字,相同的数字相撞时会叠加靠拢,然后一直这样,不断的叠加最终拼凑出2048这个数字就算成功。
下面使用android编程,g2048游戏个人编程经历
16格数据处理
如表格一般联想使用二维数组,但是基于对象最好自己动手编写对象类class,这样方便灵活增添需求数据和方法。
整个表格数据对象Grid,数据Grid分解为每个小格数据对象CellData,共有4*4=16个,数据CellData又可分解为数字int和坐标对象Cell。
坐标Cell
对应 i,j 坐标使用变量 x,y:
public class Cell { private int x; private int y; public Cell(int x,int y) { this.x = x; this.y = y; } public int getX() { return x; } public int getY() { return y; } public void setX(int x) { this.x = x; } public void setY(int y) { this.y = y; }}
小格数据CellData
public class CellData extends Cell { private int value; public CellData(int x, int y, int value) { super(x, y); this.value = value; } public CellData(Cell cell, int value) { super(cell.getX(), cell.getY()); this.value = value; } public void updatePosition(Cell cell) { this.setX(cell.getX()); this.setY(cell.getY()); } public int getValue() { return value; }}
整个表格Grid
Grid是对整个表格数据的处理,要考虑基本的数据增删改查,同时需要考虑到特殊的数据,比如g2048游戏需要生成随机数,randomAvailableCell()该方法是获取可填充随机数的位置。
public class Grid { private CellData[][] area; public Grid(int numX, int numY) { area = new CellData[numX][numX]; clearGrid(); } //随机数填充位置 public Cell randomAvailableCell() { ArrayList<Cell> availableCells = getAvailableCells(); if (availableCells.size() >= 1) { return availableCells.get((int) Math.floor(Math.random() * availableCells.size())); } return null; } public ArrayList<Cell> getAvailableCells() { ArrayList<Cell> availableCells = new ArrayList<Cell>(); for (int i = 0; i < area.length; i++) { for (int j = 0; j < area[0].length; j++) { if (area[i][j] == null) { availableCells.add(new Cell(i, j)); } } } return availableCells; } public boolean isCellsAvailable() { return (getAvailableCells().size() >= 1); } public CellData getCellContent(int x, int y) { if (isCellInBounds(x, y)) { return area[x][y]; } else { return null; } } public boolean isCellInBounds(int x, int y) { return 0 <= x && x < area.length && 0 <= y && y < area[0].length; } //清除全部数据 public void clearGrid() { for (int i = 0; i < area.length; i++) { for (int j = 0; j < area[0].length; j++) { area[i][j] = null; } } } //插入数据 public void insertData(CellData cellData) { area[cellData.getX()][cellData.getY()] = cellData; } //移除数据 public void removeData(CellData cellData) { area[cellData.getX()][cellData.getY()] = null; }}
连接下一篇g2048游戏2-android
- g2048游戏1-android
- g2048游戏2-android
- g2048游戏3-android
- android游戏开发(1)
- Android 游戏开发 之 1:Android游戏开发框架
- Android游戏开发 study 1
- Android实战1---猜拳游戏
- Android游戏
- android游戏
- Android游戏开发:游戏框架的搭建(1)
- Android游戏开发十日通(1)-游戏编程基础
- Android游戏开发:游戏框架的搭建(1)
- Android游戏开发实例第1步之:游戏策划
- Android游戏开发:游戏框架的搭建(1)
- android 游戏 实战打飞机游戏 菜单页面(1)
- Android真不适合做游戏 1
- android游戏个人经验1[转]
- android游戏个人经验1[转]
- Android音频数据抓取(杂音pop音定位必备)
- unity-编辑器扩展
- Linux调试常用命令
- php从入门到放弃.Day4
- hive架构设计及源码研究
- g2048游戏1-android
- 在Android Studio中的同一个工程下复制一份module而不改变原来的demo?
- 基于burp插件的安全测试 2016 /9/10 11:42
- 欢迎使用CSDN-markdown编辑器
- JQuery获取当前元素本身
- 博客十年,感谢有你!
- 和大家分享下干咳无痰的应对方法,…
- 学会平衡
- 学会平衡