cocos2d-x3.6 連連看連通畫線,cocos2d-x3.6連連看

來源:互聯網
上載者:User

cocos2d-x3.6 連連看連通畫線,cocos2d-x3.6連連看

我的部落格:http://blog.csdn.net/dawn_moon

網上看到很多人寫的連連看,都沒有畫連線的實現,其實要話連線挺簡單的。cocos2d-x 提供了一個很方便的畫圖形的類,DrawNode。這個類封裝了很多畫線條,多邊形的方法,很方便,很好用,很強大。

DrawNode的使用很簡單,我使用一個成員變數來儲存這個DrawNode,因為會一直重複使用。

mDraw = DrawNode::create();addChild(mDraw, 1000);

它的使用跟精靈一樣,create出來以後,add到當前層。

void GameScene::drawLine(){    // 畫線    if (mPath.size() >= 2) {        Vec2 *vecs = new Vec2[mPath.size()];        for (int i = 0 ; i < mPath.size(); i++) {            vecs[i] = indextoScreen(mPath.at(i).x, mPath.at(i).y);        }        // 隨機給線條一個顏色        auto color = CCRANDOM_0_1();        // 迴圈畫線段,只有線段可以設定線條寬度        for (int i = 0 ; i < mPath.size(); i++) {            if ( i > 0) {                mDraw->drawSegment(vecs[i-1], vecs[i], 5, Color4F(color, color, color, 1));            }        }        // 連通的兩個表徵圖對應的地圖數組置0        Vec2 p1 = mPath.front();        mMap[(int)p1.x][(int)p1.y] = 0;        Vec2 p2 = mPath.back();        mMap[(int)p2.x][(int)p2.y] = 0;        // 刪掉線段的頂點數組        delete []vecs;        // 清除連通的表徵圖,同時清除路徑點        scheduleOnce(SEL_SCHEDULE(&GameScene::clearMatched), 0.2);    }}

前面講了,我們將兩個表徵圖連通的路徑關鍵點存在了一個容器mPath裡面,至少會有2個點,最多4個點。

然後我們用DrawNode裡面的drawSegment()函數來畫連線。

這個函數是畫線段的,就是兩個點一條線,為什麼要用這個函數。DrawNode裡面還有一個函數可以用來畫多角形,原型如下:

void drawPoly(const Vec2 *poli, unsigned int numberOfPoints, bool closePolygon, const Color4F &color);

這個函數參數有個bool closePolygon,可以用來畫閉合或開放多角形,簡直一步到位了。但是它不能設定線條寬度,畫出來的線條很細,預設的寬度,不太合適。

然後我採用了畫線段的函數,將路徑裡面的點,迴圈取出來,兩個點畫一個線段,原型:

void drawSegment(const Vec2 &from, const Vec2 &to, float radius, const Color4F &color);

第一個參數,開始頂點,第二參數,目的頂點,第三個參數,線條寬度,第四個參數,線條顏色。

畫完連線以後呢,將兩個表徵圖的數組置0,表示這裡應該是消除掉了,是空格。

然後刪除掉頂點數組,然後調清理表徵圖的函數。

這個連連看的準系統就完成了。

後面還有倒計時,自動提示兩個功能,那麼一個完整的連連看就完成了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.