android遊戲開發之我的小小遊戲2——連連看遊戲2之繪製基本的介面及觸摸相關

來源:互聯網
上載者:User

通過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();}//如果兩次點擊的圖片不相同,則把此次點擊的方塊的位置賦值給lastClickelse if(pieces[x][y].getId() != pieces[lastClick[0]][lastClick[1]].getId()){lastClick[0] = x;lastClick[1] = y;}}}}}elseSystem.out.println("哥們點跑偏了!... ...");return super.onTouchEvent(event);}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.