微信小程序開發(fā)之實現(xiàn)別踩白塊游戲
一、項目展示
別踩白塊是一款微信小游戲
分為無盡模式、計時模式、急速模式三種模式
用戶需要點擊不斷移動的黑色方塊
若點擊到白色方塊則游戲結(jié)束

二、無盡模式
無盡模式下可以一直進行游戲
直到失敗為止
其中方塊的生成和點擊計數(shù)代碼如下:
<!--play.wxml-->
<view class="score">{{score}}</view>
<view class="play-box">
<block wx:for="{{blockData}}" wx:for-index="i" wx:key="i">
<view class="block-line" id="line-{{blockData[i].id}}">
<block wx:for="{{blockData[i].block}}" wx:key="*this" wx:for-index="j">
<view wx:if="{{blockData[i].block[j] == 0}}" id="block-{{blockData[i].id}}-{{j}}-{{0}}" class="block" bindtap="handleClick"></view>
<view wx:else class="block black" id="block-{{blockData[i].id}}-{{j}}-{{1}}" bindtap="handleClick"></view>
</block>
</view>
</block>
</view>
// play
var app = getApp()
Page({
data: {
typeName: '無盡模式',
silding: false,
score: 0,
blockData:[]
},
onReady: function(){
var array = [];
// 先生成一個10個長度的數(shù)組
for(var i = 0; i < 10; i++){
// 生成一個隨機位數(shù)為1的數(shù)組
var orderArray = [0,0,0,0];
var randomNum = Math.floor(Math.random() * 4);
orderArray[randomNum] = 1;
array.push({id: i, block: orderArray});
}
this.setData({
blockData: array.reverse()
});
},
handleClick: function(events){
var id = events.currentTarget.id;
var line = id.split("-")[1];
var column = id.split("-")[2];
var isBlack = id.split("-")[3];
var blockData = this.data.blockData.reverse();
var score = this.data.score;
var orderArray = [0,0,0,0];
// 判斷是否是第一行
if(line != blockData[0].id){
this.handleWrong(0, score);
return;
}
// 判斷是否正確
if(isBlack != 1){
this.handleWrong(1, score);
return;
}
// 正確下一個
// 分數(shù)++
// 最后一個小塊的id為分數(shù)+10
score++;
orderArray[Math.floor(Math.random() * 4)] = 1;
blockData.push({id: score+10, block: orderArray});
blockData.shift();
this.setData({
silding: true,
score: score,
blockData: blockData.reverse()
});
},
handleWrong: function( type , score){
const titleArr = ["請點擊第一個白塊!游戲結(jié)束", "別點白塊!游戲結(jié)束"];
wx.showToast({
title: titleArr[type],
icon: 'cancel',
duration: 2000,
complete: function(){
// 將此分數(shù)存入全局變量
app.globalData.currentScore = score;
// 若此分數(shù)比最高分數(shù)還高 將其存入本地
if(score > app.globalData.endlessScore){
app.globalData.endlessScore = score;
wx.setStorageSync('endlessScore',score);
}
var timer = setTimeout(function(){
wx.redirectTo({
url: '../end/end?type=endless&score=' + score
})
clearTimeout(timer);
}, 2000);
}
})
},
onLoad: function(){
var that = this;
wx.setNavigationBarTitle({
title: that.data.typeName
});
}
})
具體的代碼和實現(xiàn)效果如下

三、計時模式
計時模式下
用戶將在指定時間內(nèi)點擊黑塊
時間到則結(jié)束游戲

四、急速模式
急速模式下
黑塊的移動速度提升

到此這篇關(guān)于微信小程序開發(fā)之實現(xiàn)別踩白塊游戲的文章就介紹到這了,更多相關(guān)小程序別踩白塊游戲內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解TypeScript中type與interface的區(qū)別
在寫 ts 相關(guān)代碼的過程中,總能看到 interface 和 type 的身影。它們的作用好像都一樣的,相同的功能用哪一個都可以實現(xiàn),也都很好用,所以也很少去真正的理解它們之間到底有啥區(qū)別,因此本文將詳細講解二者的區(qū)別,需要的可以參考一下2022-04-04
關(guān)于js二維數(shù)組和多維數(shù)組的定義聲明(詳解)
下面小編就為大家?guī)硪黄P(guān)于js二維數(shù)組和多維數(shù)組的定義聲明(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10
js利用與或運算符優(yōu)先級實現(xiàn)if else條件判斷表達式
利用與或運算符優(yōu)先級實現(xiàn)if else運算,讓你的代碼更精簡。2010-04-04
javascript中style.left和offsetLeft的用法說明
本篇文章主要是對javascript中style.left和offsetLeft的用法進行了說明介紹,需要的朋友可以過來參考下,希望對大家有所幫助2014-03-03

