微信小程序开发的游戏《拼图游戏》
代码直接考进去就能用
pintu.js
// pintu.js
Page({
/**
* 页面的初始数据
*/
data: {
},
initGame: function () {
this.setData({
cards: {
card1: { num: 3, hidden: false },
card2: { num: 7, hidden: false },
card3: { num: 5, hidden: false },
card4: { num: \'\', hidden: true },
card5: { num: 4, hidden: false },
card6: { num: 6, hidden: false },
card7: { num: 2, hidden: false },
card8: { num: 8, hidden: false },
card9: { num: 1, hidden: false }
}
});
},
card1: function () {
this.moveCard(\'1\', \'2\');
this.moveCard(\'1\', \'4\');
},
card2: function () {
this.moveCard(\'2\', \'1\');
this.moveCard(\'2\', \'3\');
this.moveCard(\'2\', \'5\');
},
card3: function () {
this.moveCard(\'3\', \'2\');
this.moveCard(\'3\', \'6\');
},
card4: function () {
this.moveCard(\'4\', \'1\');
this.moveCard(\'4\', \'5\');
this.moveCard(\'4\', \'7\');
},
card5: function () {
this.moveCard(\'5\', \'2\');
this.moveCard(\'5\', \'4\');
this.moveCard(\'5\', \'6\');
this.moveCard(\'5\', \'8\');
},
card6: function () {
this.moveCard(\'6\', \'3\');
this.moveCard(\'6\', \'5\');
this.moveCard(\'6\', \'9\');
},
card7: function () {
this.moveCard(\'7\', \'4\');
this.moveCard(\'7\', \'8\');
},
card8: function () {
this.moveCard(\'8\', \'5\');
this.moveCard(\'8\', \'7\');
this.moveCard(\'8\', \'9\');
},
card9: function () {
this.moveCard(\'9\', \'6\');
this.moveCard(\'9\', \'8\');
},
moveCard: function (n1, n2) {
var cards = this.data.cards;
var c1 = cards[\'card\' + n1];
var c2 = cards[\'card\' + n2];
if (c1.num && !c2.num) {
var num1 = c1.num;
var hidden1 = c1.hidden;
var num2 = c2.num;
var hidden2 = c2.hidden;
cards[\'card\' + n1].num = num2;
cards[\'card\' + n1].hidden = hidden2;
cards[\'card\' + n2].num = num1;
cards[\'card\' + n2].hidden = hidden1;
var isGameOver = true;
for (var i = 1; i < 9; i++) {
if (cards[\'card\' + i].num != i) {
isGameOver = false;
break;
}
}
if (isGameOver) {
cards.card9.num = 9;
cards.card9.hidden = false;
}
this.setData({
cards: cards
});
if (isGameOver) {
wx.showModal({
title: \'恭喜\',
content: \'你简直太厉害了\',
showCancel: false,
})
}
}
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.initGame();
}
})
pintu.json
{
"navigationBarTitleText": "《拼图游戏》",
"enablePullDownRefresh": false
}
pintu.wxml
<!--pintu.wxml-->
<view class="container">
<view class="pintu-wrap">
<view class="pintu-line">
<view class="pintu-item-wrap">
<button class="pintu-item" type="primary" hidden="{{cards.card1.hidden}}" bindtap="card1">{{cards.card1.num}}</button>
</view>
<view class="pintu-item-wrap">
<button class="pintu-item" type="primary" hidden="{{cards.card2.hidden}}" bindtap="card2">{{cards.card2.num}}</button>
</view>
<view class="pintu-item-wrap">
<button class="pintu-item" type="primary" hidden="{{cards.card3.hidden}}" bindtap="card3">{{cards.card3.num}}</button>
</view>
</view>
<view class="pintu-line">
<view class="pintu-item-wrap">
<button class="pintu-item" type="primary" hidden="{{cards.card4.hidden}}" bindtap="card4">{{cards.card4.num}}</button>
</view>
<view class="pintu-item-wrap">
<button class="pintu-item" type="primary" hidden="{{cards.card5.hidden}}" bindtap="card5">{{cards.card5.num}}</button>
</view>
<view class="pintu-item-wrap">
<button class="pintu-item" type="primary" hidden="{{cards.card6.hidden}}" bindtap="card6">{{cards.card6.num}}</button>
</view>
</view>
<view class="pintu-line">
<view class="pintu-item-wrap">
<button class="pintu-item" type="primary" hidden="{{cards.card7.hidden}}" bindtap="card7">{{cards.card7.num}}</button>
</view>
<view class="pintu-item-wrap">
<button class="pintu-item" type="primary" hidden="{{cards.card8.hidden}}" bindtap="card8">{{cards.card8.num}}</button>
</view>
<view class="pintu-item-wrap">
<button class="pintu-item" type="primary" hidden="{{cards.card9.hidden}}" bindtap="card9">{{cards.card9.num}}</button>
</view>
</view>
</view>
<view class="btn-wrap">
<button type="warn" bindtap="initGame">重新开始</button>
</view>
</view>
pintu.wxss
/* pintu.wxss */
.container {
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
padding: 20px 0 0;
box-sizing: border-box;
color: #4e4b4b;
}
.btn-wrap {
width: 80%;
padding: 20px 0;
text-align: center;
margin: auto;
}
.pintu-wrap {
width: 90%;
align-items: center;
}
.pintu-line {
display: flex;
}
.pintu-item-wrap {
height: 100px;
width: 30%;
margin: 5px;
}
.pintu-item {
line-height: 100px;
height: 100%;
width: 100%;
}