[code]游戏主逻辑:
// pages/game/programmer.js
var game2048 = require('../../utils/game2048.js');
var gameServer = require('../../utils/gameServer.js');
var util = require('../../utils/util.js');
var app = getApp()
// 胜利音效
const winAudio = wx.createInnerAudioContext()
winAudio.src = 'http://demo.infinitysia.com/dys/2048/assets/win.mp3'
winAudio.obeyMuteSwitch = false
// move音效
const moveAudio = wx.createInnerAudioContext()
moveAudio.src = 'http://demo.infinitysia.com/dys/2048/assets/move.mp3'
moveAudio.obeyMuteSwitch = false
// 失败音效
const failAudio = wx.createInnerAudioContext()
failAudio.src = 'http://demo.infinitysia.com/dys/2048/assets/lose.mp3'
failAudio.obeyMuteSwitch = false
Page({
data:{
// 游戏数组值
gridValue:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
// 游戏重新开始提示
restartPrompt:"再来亿把",
// 游戏难度:1.时间160ms;2.时间80ms;3.时间40ms;4.时间20ms;5.时间10ms;
gameLevel:[1,2,3,4,5],
// 游戏难度初始值 index of gameLevel
level: 3,
// 游戏难度提示
levelPrompt:"难度",
// 游戏模式:1.输出2,4;2.输出2.4.8;3.输出2.4.8.16;4.输出2.4.8.16.32;5.输出2.4.8.16.32.64;
gameMode: [1,2,3,4,5],
// 游戏模式初始值 index of gameMode
mode: 1,
// 游戏模式提示
modePrompt:"模式",
// 游戏运行时间
gameTime:"00:00:00",
// 游戏运行 开始时间
gameStartDate:0,
// 游戏运行 结束时间
gameEndDate:0,
// 游戏分数
gameScore: 0,
// 游戏触摸控制
gameTouchInfo: {
pointOrigin: {
x: 0,
y: 0
},
pointTarget: {
x: 0,
y: 0
},
isValid: false
},
// 游戏触摸控制阈值
gameDistanceThreshold:10,
// 排行榜
chartsUsers: [
{
avatar:"http://wx.qlogo.cn/mmopen/vi_32/l8W3SEfertzlK6csQd23scfZG30hXDVP0mT2ODFqoPlkmmeic1ZXoiczVicppy68kPiajjEIbA5Daf7d6erlRdib5uQ/0",
name:"chenxi****",
score:"2048",
level:"3级",
mode:"3",
time:"05:34"
}, {
name:"**********",
score:"4096",
level:"5级",
mode:"5",
time:"15:03"
}
],
// 胜利声音
winAudio: null
},
onLoad:function(options){
// 页面初始化 options为页面跳转所带来的参数
const winAudio = wx.createInnerAudioContext()
// winAudio.src = '../../assets/win.mp3'
winAudio.src = 'http://demo.infinitysia.com/dys/2048/assets/win.mp3'
// winAudio.autoPlay = true
winAudio.obeyMuteSwitch = false
// innerAudioContext.play()
console.log(options)
this.setData({
winAudio
})
winAudio.onPlay(() => {
console.log('playyyyy')
})
},
onReady:function(){
// 页面渲染完成
game2048.resetGame();
this.setData({
gridValue:game2048.getGameArray().slice()
});
// 用户数据获取
// this.inspectUserServer();
// time
console.log("gameStartDate:", this.data.gameStartDate);
var that = this;
setInterval(function() {
var _gameEndDate = Date.now();
var playTime = Math.floor((_gameEndDate - that.data.gameStartDate) / 1000);
that.setData({
gameEndDate: _gameEndDate,
gameTime: util.formatSecondsTime(playTime)
});
},1000);
},
onShow:function(){
// 页面显示
game2048.printAuthor();
// test
this.setData({
gameStartDate:new Date().getTime()
});
// 排行榜
// this.getRank();
},
onHide:function(){
// 页面隐藏
},
onUnload:function(){
// 页面关闭
},
handleRestart:function(event){
// 游戏重新开始
game2048.resetGame();
this.setData({
gridValue:game2048.getGameArray().slice(),
gameStartDate:new Date().getTime(),
gameTime:"00:00:00"
});
},
handleTouchMove:function(event){
// 游戏2048网格界面触摸移动
// console.log(event);
// game2048.playGame("moveButtom");
// this.setData({
// gridValue:game2048.getGameArray().slice()
// });
},
handleTouchStart:function(event){
// 游戏2048网格界面触摸开始
// console.log(event);
if (!this.data.gameTouchInfo.isValid) {
this.setData({
'gameTouchInfo.pointOrigin.x': event['changedTouches'][0].pageX,
'gameTouchInfo.pointOrigin.y': event['changedTouches'][0].pageY,
'gameTouchInfo.isValid': true
});
}
},
handleTouchEnd:function(event){
// 游戏2048网格界面触摸结束
// console.log(event);
if (this.data.gameTouchInfo.isValid) {
this.setData({
'gameTouchInfo.pointTarget.x': event['changedTouches'][0].pageX,
'gameTouchInfo.pointTarget.y': event['changedTouches'][0].pageY,
'gameTouchInfo.isValid': false
});
var direction = this.getTouchDirection(this.data.gameTouchInfo.pointOrigin,
this.data.gameTouchInfo.pointTarget, this.data.gameDistanceThreshold)
console.log(direction);
game2048.playGame(direction);
// 停止所有音频
// winAudio.stop()
// failAudio.stop()
// moveAudio.stop()
const that = this
if (game2048.getGameStatus() === 'end') {
failAudio.play()
wx.showModal({
title: '倔倔',
content: '没办法,被天克',
showCancel: false,
confirmText: '再来亿把',
success: function (res) {
if (res.confirm) {
// console.log('用户点击确定')
that.handleRestart()
failAudio.stop()
} else if (res.cancel) {
console.log('用户点击取消')
}
}
})
} else if (game2048.getGameStatus() === 'win') {
winAudio.play()
wx.showModal({[/code]
版权信息:本站所有资源仅供学习与参考,请勿用于商业用途,如有侵犯您的版权,请及时联系客服,我们将尽快处理。
分享链接 分享海报