android游戏开发之我的小小游戏2——连连看游戏2之绘制基本的界面及触摸相关
2012-11-27 21:04
477 查看
通过PieceManager获得的一个9*9的二维方块Piece类的数组,其中我们值绘制1-8的格子,因为最外层的格子我们将会用来,画线,效果如下图
现在我们可以通过这个数组来绘制基本的界面了
我们会使每一块的小方块之间有6个像素点的距离
绘制的代码如下
现在我们可以通过这个数组来绘制基本的界面了
我们会使每一块的小方块之间有6个像素点的距离
绘制的代码如下
protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawBitmap(background, 0, 0, null); for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { if(pieces[i][j] != null) { Bitmap curImage = pieces[i][j].getImage(); canvas.drawBitmap(curImage, startX + betweenLength/2 + i * (pieceWidth + betweenLength), startY + betweenLength/2 + j * (pieceHeight + betweenLength), null); } } }现在主要就是判断,我们到底点击的是哪一个图片了,首先我们根据点击的范围获得点击的方块是数组中的哪一个元素,并对该点击的方块进行一系列的处理。我们会用一个长度为2的一维数组lastClick记录我们上一次点击的方块在我们的二维数组中的脚标,如果我们是刚开局,或是已经消去了两个时,我们会把上次点击的记录lastClick设置成初始化的值,lastClick中的两个元素的值均为-1,否则,就把我们刚才点击的方块的脚标赋值给lastClick,当我们再次点击一个方块区域时,我们会根据此次点击的区域的脚标来获取在这个位置上Piece以获取该位置上图片的Id,然后对比上次点击的方块区域中的图片Id是否和本次的Id一样,如果一样,就消去,否则,lastClick就变为当前点击的位置
public boolean onTouchEvent(MotionEvent event) { float touchX = event.getX(); float touchY = event.getY(); //当点击在图片区域才会有响应 if(touchX > startX && touchX < startX+(pieceWidth+betweenLength)*columnNum && touchY > startY && touchY < startY+(pieceHeight+betweenLength)*rowNum) { int x = (int)((touchX-startX)/(pieceWidth+betweenLength)); int y = (int)((touchY-startY)/(pieceHeight+betweenLength)); //首先判断点击的位置不是已经消失了的图片的位置 if(pieces[x][y] != null) { //如果是刚开始玩或者已经销毁了一对 if(lastClick[0] == -1 && lastClick[1] == -1) { lastClick[0] = x; lastClick[1] = y; } else { //两次点击的不是同一张图片 if(x != lastClick[0] || y != lastClick[1]) { //若果两个图片相同 if(pieces[x][y].getId() == pieces[lastClick[0]][lastClick[1]].getId()) { pieces[x][y] = null; pieces[lastClick[0]][lastClick[1]] = null; lastClick[0] = -1; lastClick[1] = -1; invalidate(); }//如果两次点击的图片不相同,则把此次点击的方块的位置赋值给lastClick else if(pieces[x][y].getId() != pieces[lastClick[0]][lastClick[1]].getId()) { lastClick[0] = x; lastClick[1] = y; } } } } } else System.out.println("哥们点跑偏了!... ..."); return super.onTouchEvent(event); }
相关文章推荐
- android游戏开发之我的小小游戏2——连连看游戏1之游戏的基本模块设计
- android游戏开发之我的小小游戏2——连连看游戏6连线绘制问题
- Android游戏开发系列教程第二讲(基本图形绘制)
- android游戏开发之我的小小游戏1——五子棋游戏之界面的优化、代码整理
- android游戏开发初学之SurfaceView绘制界面
- Android 游戏开发中绘制游戏触摸轨迹的曲线图
- Android游戏开发中绘制游戏触摸轨迹的曲线图
- android游戏开发之我的小小游戏1——五子棋游戏1之绘制棋子与棋盘
- 【COCOS2DX-ANDROID-游戏开发之二三】 界面中嵌入Android的WebView
- Android游戏开发之地图编辑器的使用以及绘制地图 (四)
- Android游戏开发之单点触摸与多点触摸的响应方式(二十三)
- android游戏开发之我的小小游戏1——五子棋游戏4之电脑下棋、人机对战算法
- Android游戏开发之单点触摸与多点触摸的响应方式(二十三)
- android游戏开发框架libgdx的使用(三)--中文显示与汉字绘制
- Android基于box2d开发弹弓类游戏[二]-------------游戏界面的搭建&移动游戏场景
- Android游戏开发25:Android中贝塞尔曲线的绘制方法
- android游戏开发初学之SurfaceView绘制图片
- (转)Android游戏开发之地图编辑器的使用以及绘制地图 (四)
- Android实现疯狂连连看游戏之开发游戏界面(二)
- android游戏开发之我的小小游戏1——五子棋游戏5之蓝牙对战