这期内容当中小编将会给大家带来有关如何在Android应用中利用数据模型实现一个连连看小游戏,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、定义数据模型连连看的界面是一个NxM的“网格”,每个网格上显示
这期内容当中小编将会给大家带来有关如何在Android应用中利用数据模型实现一个连连看小游戏,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
1、定义数据模型
连连看的界面是一个NxM的“网格”,每个网格上显示一张图片。而这个网格只需要一个二维数组来定义即可,而每个网格上所显示的图片,对于底层数据模型来说,不同的图片对于着不同的数值即可。
对于上图所示的数据模型,只要让数值为0的网格上不绘制图片,其他数值的网格则绘制相应的图片,就可以显示出连连看的游戏界面了。
本程序采用Piece[][]来保存游戏的状态模型,因为Piece对象封装的信息不仅包含了该方块的左上角的X、Y坐标。而且还包含了该Piece所显示的图片、图片ID,这个图片ID就是该Piece的数据。
2、初始化游戏状态数据
为了初始化游戏状态,程序需要创建一个 Piece[][]数组,为此程序定义一个AbstractBoard抽象类,该抽象类代码如下:cn\oyp\link\board\AbstractBoard.java
package cn.oyp.link.board; import java.util.List; import cn.oyp.link.utils.GameConf; import cn.oyp.link.utils.ImageUtil; import cn.oyp.link.view.Piece; import cn.oyp.link.view.PieceImage; public abstract class AbstractBoard { // 定义一个抽象方法, 让子类去实现 protected abstract List<Piece> createPieces(GameConf config, Piece[][] pieces); public Piece[][] create(GameConf config) { // 创建Piece[][]数组 Piece[][] pieces = new Piece[config.getXSize()][config.getYSize()]; // 返回非空的Piece集合, 该集合由子类去创建 List<Piece> notNullPieces = createPieces(config, pieces); // 根据非空Piece对象的集合的大小来取图片 List<PieceImage> playImages = ImageUtil.getPlayImages( config.getContext(), notNullPieces.size()); // 所有图片的宽、高都是相同的 int imageWidth = playImages.get(0).getImage().getWidth(); int imageHeight = playImages.get(0).getImage().getHeight(); // 遍历非空的Piece集合 for (int i = 0; i < notNullPieces.size(); i++) { // 依次获取每个Piece对象 Piece piece = notNullPieces.get(i); piece.setPieceImage(playImages.get(i)); // 计算每个方块左上角的X、Y座标 piece.setBeginX(piece.getIndexX() * imageWidth + config.getBeginImageX()); piece.setBeginY(piece.getIndexY() * imageHeight + config.getBeginImageY()); // 将该方块对象放入方块数组的相应位置处 pieces[piece.getIndexX()][piece.getIndexY()] = piece; } return pieces; } }
--结束END--
本文标题: 如何在Android应用中利用数据模型实现一个连连看小游戏
本文链接: https://www.lsjlt.com/news/224222.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0