您的位置:首页 > 移动开发 > Android开发

android游戏开发之我的小小游戏2——连连看游戏2之绘制基本的界面及触摸相关

2012-11-27 21:04 477 查看
通过PieceManager获得的一个9*9的二维方块Piece类的数组,其中我们值绘制1-8的格子,因为最外层的格子我们将会用来,画线,效果如下图



现在我们可以通过这个数组来绘制基本的界面了

我们会使每一块的小方块之间有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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐