微信小程序开发的游戏《拼图游戏》
代码直接考进去就能用
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%;
}