最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

微信小程序?qū)崿F(xiàn)2048小游戲的詳細過程

 更新時間:2021年09月30日 09:33:49   作者:詩一樣的代碼  
這篇文章主要給大家介紹了關(guān)于微信小程序?qū)崿F(xiàn)2048小游戲的相關(guān)資料,文中將實現(xiàn)的代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用微信小程序具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

效果圖

實例代碼

今天我們要用微信小程序?qū)崿F(xiàn)2048小游戲,效果圖如上面所示。游戲的規(guī)則很簡單,你需要控制所有方塊向同一個方向運動,兩個相同數(shù)字方塊撞在一起之后合并成為他們的和,每次操作之后會隨機生成一個2或者4,最終得到一個“2048”的方塊就算勝利了。

 // 構(gòu)造一個空的矩陣[[null,..,size.length],[]]
    empty: function() {
        var cells = [];

        for (var x = 0; x < this.size; x++) {
            var row = cells[x] = [];

            for (var y = 0; y < this.size; y++) {
                row.push(null);
            }
        }

        // [[{x:0,y:0},{x:0,y:1}],[]]
        return cells;
    },

首先我們需要做的是把游戲主體分成16個格子。用Grid代表這些格子,然后這些格子還有一下這些操作:

   // 在空格子中隨機挑選出一個格子
    randomAvailableCell: function() {
    
    // 獲取可填充的格子坐標(biāo)
    availableCells: function() {
    
    // 是否存在空單元格
    cellsAvailable: function() 
    
    /* 
     * 獲取單元格內(nèi)容
     * @param {object} cell {x:0,y:0} 單元格坐標(biāo)
     */
    cellContent: function(cell) {

上面的函數(shù)都是為了使接下來開發(fā)更加簡便,這樣子就可以直接操作了。

 // 初始化數(shù)據(jù)
    addStartTiles: function() {
        for (var x = 0; x < this.startTiles; x++) {
            this.addRandomTiles();
        }
    },

    // 在一個隨機單元格中隨機填充2或4
    addRandomTiles: function() {

        if (this.grid.cellsAvailable()) {
            var value = Math.random() < 0.9 ? 2 : 4;
            var cell = this.grid.randomAvailableCell();
            var tile = new Tile(cell, value);
            this.grid.insertTile(tile); // 插入一個單元格
        }

    },

一開始進行初始化數(shù)據(jù),以90%機率產(chǎn)生2,以10%機率產(chǎn)生4。

touchStart: function(events) {

        // 多指操作
        this.isMultiple = events.touches.length > 1;
        if (this.isMultiple) {
            return;
        }

        var touch = events.touches[0];

        this.touchStartClientX = touch.clientX;
        this.touchStartClientY = touch.clientY;

    },

    touchMove: function(events) {
        var touch = events.touches[0];
        this.touchEndClientX = touch.clientX;
        this.touchEndClientY = touch.clientY;
    },

    touchEnd: function(events) {
        if (this.isMultiple) {
            return;
        }

        var dx = this.touchEndClientX - this.touchStartClientX;
        var absDx = Math.abs(dx);
        var dy = this.touchEndClientY - this.touchStartClientY;
        var absDy = Math.abs(dy);

        if (Math.max(absDx, absDy) > 10) {
            var direction = absDx > absDy ? (dx > 0 ? 1 : 3) : (dy > 0 ? 2 : 0);

            var data = this.GameManager.move(direction) || {
                grids: this.data.grids,
                over: this.data.over,
                won: this.data.won,
                score: this.data.score
            };

        }

進行游戲手勢開始移動和移動結(jié)束的操作,上面這一段主要是進行了手指移動方向的判斷,最后是判斷出了direction,傳入this.GameManager.move(direction)進行移動操作。

這里面的難點在于數(shù)據(jù)結(jié)構(gòu)的構(gòu)建,只要把格子弄明白就比較好辦。然后就是手指滑動的判斷了,上面代碼也比較清楚地展現(xiàn)了。

總結(jié)

到此這篇關(guān)于微信小程序?qū)崿F(xiàn)2048小游戲的文章就介紹到這了,更多相關(guān)微信小程序2048小游戲內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談JS和Nodejs中的事件驅(qū)動

    淺談JS和Nodejs中的事件驅(qū)動

    這篇文章主要介紹了JS和Nodejs中的事件驅(qū)動,對事件驅(qū)動感興趣的同學(xué),可以參考下
    2021-05-05
  • 微信小程序?qū)崿F(xiàn)搜索功能并跳轉(zhuǎn)搜索結(jié)果頁面

    微信小程序?qū)崿F(xiàn)搜索功能并跳轉(zhuǎn)搜索結(jié)果頁面

    這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)搜索功能并跳轉(zhuǎn)搜索結(jié)果頁面,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 如何進行微信公眾號開發(fā)的本地調(diào)試的方法

    如何進行微信公眾號開發(fā)的本地調(diào)試的方法

    這篇文章主要介紹了如何進行微信公眾號開發(fā)的本地調(diào)試的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06
  • JavaScript封裝axios的實現(xiàn)詳解

    JavaScript封裝axios的實現(xiàn)詳解

    這篇文章主要介紹了JavaScript封裝axios的實現(xiàn),Axios是一個開放源代碼庫,使我們可以輕松地發(fā)出HTTP請求。 實際上,它是通過額外的超能力來fetch
    2022-09-09
  • js實現(xiàn)tab欄切換效果

    js實現(xiàn)tab欄切換效果

    這篇文章主要為大家詳細介紹了js實現(xiàn)tab欄切換效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • js實現(xiàn)鼠標(biāo)跟隨小游戲

    js實現(xiàn)鼠標(biāo)跟隨小游戲

    這篇文章主要為大家詳細介紹了js實現(xiàn)鼠標(biāo)跟隨小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Cropper.js 實現(xiàn)裁剪圖片并上傳(PC端)

    Cropper.js 實現(xiàn)裁剪圖片并上傳(PC端)

    本案例是參考cropper站點實例,進行修改簡化。接下來通過本文給大家分享Cropper.js 實現(xiàn)裁剪圖片并上傳(PC端) 功能,需要的朋友參考下吧
    2017-08-08
  • 如何正確理解javascript的模塊化

    如何正確理解javascript的模塊化

    模塊化在項目中十分的重要,一個復(fù)雜的項目肯定有很多相似的功能模塊,如果每次都需要重新編寫模塊肯定既費時又耗力。但是引用別人編寫模塊的前提是要有統(tǒng)一的“打開姿勢”,如果每個人有各自的寫法,那么肯定會亂套,下面介紹幾種JS的模塊化的規(guī)范。
    2017-03-03
  • 微信小程序控制view隱藏顯示的5種方法匯總

    微信小程序控制view隱藏顯示的5種方法匯總

    在微信小程序開發(fā)時,經(jīng)常要用到一個控件會根據(jù)不同的情況和環(huán)境動態(tài)顯示與隱藏這種情況,下面這篇文章主要給大家介紹了關(guān)于微信小程序控制view隱藏顯示的5種方法,需要的朋友可以參考下
    2022-04-04
  • JavaScript中英文字符長度統(tǒng)計方法示例【按照中文占2個字符】

    JavaScript中英文字符長度統(tǒng)計方法示例【按照中文占2個字符】

    這篇文章主要介紹了JavaScript中英文字符長度統(tǒng)計方法,涉及javascript針對中英文字符的匹配與運算相關(guān)操作技巧,需要的朋友可以參考下
    2017-01-01

最新評論

乌兰浩特市| 黄山市| 海林市| 黔南| 金寨县| 湘潭县| 祁门县| 新津县| 镇江市| 来安县| 荣成市| 华池县| 鸡西市| 新河县| 锡林郭勒盟| 香格里拉县| 阿克| 轮台县| 运城市| 渭源县| 绵阳市| 永德县| 垦利县| 康平县| 社会| 盘锦市| 班玛县| 昂仁县| 乐安县| 高邑县| 封丘县| 夏河县| 江口县| 正定县| 华安县| 萨迦县| 龙岩市| 德江县| 九龙城区| 荣成市| 洪湖市|