日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java小程序 2048_微信小程序之游戏2048

發(fā)布時間:2023/12/2 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java小程序 2048_微信小程序之游戏2048 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

主要用來鍛煉邏輯思維能力

image.png

可以選模式

image.png

這里面主要解決的問題是:

1.判斷滑動方向

//在滑動塊級綁定滑動開始和滑動結(jié)束的方法

很原始的方法,startFn時保存開始的(x,y),endFn時保存結(jié)束的(x1,y2),根據(jù)這四個參數(shù) 判斷方向,算法在方法directionFn里

2.根據(jù)滑動方向進(jìn)行疊加

疊加方法在afterslider里

全部代碼如下

html代碼:

{{score}}分

{{step}}步

{{time}}s

{{v.number}}

{{item.name}}

規(guī)模

4*4

3*3

規(guī)模

{{item.name}}

Submit

js代碼:

Page({

/**

* 頁面的初始數(shù)據(jù)

*/

data: {

cellArr:[],

zhezhangc:true,

modal:3,

score:0,

toushstart:[],

toolindex:2,

step:30,

time:60,

tool: [{ 'name': '無限模式', 'status': 2, 'class': 'speed' },{ 'name': '計(jì)時模式', 'status': 0, 'class': 'time' }, { 'name': '計(jì)步模式', 'status': 1, 'class': 'speed' }]

},

formSubmit(e) {

console.log(e.detail.value.radiogroup);

this.setData({ modal: e.detail.value.radiogroup, zhezhangc:false});

this.initFn();

},

choosemodal: function (event){

this.setData({ toolindex: event.currentTarget.dataset.data.status});

},

openmenu:function(){

var this_ = this;

this.setData({ zhezhangc: !this_.data.zhezhangc });

},

// 初始化

initFn:function(){

var modal = this.data.modal;

var cellArr = [];

for (var i = 0; i < modal; i++) {

var iarr = [];

for (var j = 0; j < modal; j++) {

iarr.push({ coordinate: [i, j], number: 0 });

}

cellArr.push(iarr);

}

// 二維數(shù)組轉(zhuǎn)一維數(shù)組

var initget = 1;//第一次先放一個

var this_ = this;

var random_row = Math.round(Math.random() * (modal - 1));

var random_cell = Math.round(Math.random() * (modal - 1));

var getnumber = [2,4,8];

if (cellArr[random_row][random_cell].number==0){

// 如果在空白處就放一個方塊

cellArr[random_row][random_cell].number = getnumber[Math.round(Math.random() * 2)];

}

this.setData({ cellArr: cellArr });

},

scoreFn:function(num_){

var score_ = this.data.score;

this.setData({

score:score_+num_*2

})

},

refreshcoordinate:function(){

var cellArr = this.data.cellArr;

var modal = this.data.modal;

var random_row;

var random_cell;

var this_ = this;

for(var i = 0;i<1000;i++){

random_row = Math.round(Math.random() * (modal - 1));

random_cell = Math.round(Math.random() * (modal - 1));

if (cellArr[random_row][random_cell].number == 0) {

cellArr[random_row][random_cell].number = 2;

break;

}

}

var isgame = this.gameover();

var tooltype = this.data.toolindex;

var step_ = this.data.step;

if (isgame && step_ > 0){

this_.setData({

cellArr: cellArr,

cellArrBefore: cellArr

});

if (tooltype == 1){

this_.setData({

step: this.data.step - 1

});

}

}else{

wx.showModal({

title: '提示',

content: '游戲結(jié)束',

});

this_.setData({

cellArr: [],

step:30,

score: 0

});

this_.initFn();

}

},

gameover:function(){

var cellArr = this.data.cellArr;

var modal = this.data.modal;

var gamecontine_ = false;

for(var i = 0;i

for (var j = 0; j < modal; j++) {

if (cellArr[i][j].number==0){

gamecontine_ = true;

}

}

}

return gamecontine_;

},

redo:function(){

var this_ = this;

this.setData({

cellArr:this_.data.cellArrBefore

});

},

// 滑動開始

startFn: function (event){

var X_ = event.touches[0].clientX;

var Y_ = event.touches[0].clientY;

this.setData({ toushstart: [X_,Y_]});

},

// 滑動結(jié)束

endFn: function (event) {

var eX = event.changedTouches[0].clientX;

var eY = event.changedTouches[0].clientY;

var dir = this.directionFn(eX, eY);

this.afterslider(dir);

},

// 判斷方向

directionFn:function(endX,endY){

var sX = this.data.toushstart[0];

var sY = this.data.toushstart[1];

var eX = endX;

var eY = endY;

// console.log('start' + this.data.toushstart+','+sY+'end:'+eX+','+eY);

// 求角度

var a = eX-sX+1;

var b = sY-eY+1;

var angle = Math.abs(b / a);

var direction_;

// console.log('a:' + a + ',b:' + b + ',angle:' + angle);

if (a > 0 && angle<1){

direction_ = 1;

// console.log('右邊');

}

if (a < 0 && angle < 1) {

direction_ = 3;

// console.log('左邊');

}

if (b > 0 && angle > 1) {

// console.log('上邊');

direction_ = 0;

}

if (b < 0 && angle > 1) {

// console.log('下邊');

direction_ = 2;

}

return direction_;//上右下左對應(yīng)0,1,2,3

},

// 根據(jù)方向做后續(xù)操作

afterslider:function(dir){

var this_ = this;

var modal = this.data.modal;

var cellArr = this.data.cellArr;

var test_ = this.data.test;

switch(dir){

case 0:

// 從上往下循環(huán)

for(var i = 1;i

for (var j = 0; j < modal; j++) {

var thisCell = cellArr[i][j];

for(var k=i;k>0;k--){

if (cellArr[k - 1][j].number == 0) {

cellArr[k - 1][j].number = cellArr[k][j].number;

cellArr[k][j].number = 0

}else{

if (cellArr[k - 1][j].number == cellArr[k][j].number) {

var num_ = cellArr[k][j].number;

cellArr[k][j].number = 0;

cellArr[k - 1][j].number = num_ * 2;

this_.scoreFn(num_);

}

}

}

}

}

break;

case 2:

// 從下往上循環(huán)

// modal - 2是因?yàn)?#xff0c;最底下的方塊不用管了

for (var i = modal - 2; i >= 0; i--) {

for (var j = 0; j < modal; j++) {

var thisCell = cellArr[i][j];

for(var k = i;k

if (cellArr[k + 1][j].number == 0) {

cellArr[k + 1][j].number = cellArr[k][j].number;

cellArr[k][j].number = 0

} else {

if (cellArr[k + 1][j].number == cellArr[k][j].number) {

var num_ = cellArr[k][j].number;

cellArr[k][j].number = 0;

cellArr[k + 1][j].number = num_ * 2;

this_.scoreFn(num_);

}

}

}

}

}

break;

case 1:

for (var j = modal - 2; j >= 0;j--){

for(var i=0;i

var thisCell = cellArr[i][j];

for (var k = j; k < modal - 1; k++) {

if (cellArr[i][k + 1].number == 0) {

cellArr[i][k + 1].number = cellArr[i][k].number;

cellArr[i][k].number = 0

} else {

if (cellArr[i][k + 1].number == cellArr[i][k].number) {

var num_ = cellArr[i][k].number;

cellArr[i][k].number = 0;

cellArr[i][k + 1].number = num_ * 2;

this_.scoreFn(num_);

}

}

}

}

}

break;

case 3:

// 從左往右

for(var j = 1;j

for (var i = 0; i < modal; i++) {

var thisCell = cellArr[i][j];

for (var k = j; k >0; k--) {

if (cellArr[i][k - 1].number == 0) {

cellArr[i][k - 1].number = cellArr[i][k].number;

cellArr[i][k].number = 0

} else {

if (cellArr[i][k - 1].number == cellArr[i][k].number) {

var num_ = cellArr[i][k].number;

cellArr[i][k].number = 0;

cellArr[i][k - 1].number = num_ * 2;

this_.scoreFn(num_);

}

}

}

}

}

break;

}

this.refreshcoordinate();

},

watchAgain: function (cellArr, k, j, num_){

if(cellArr[k - 1][j].number == cellArr[k][j].number) {

cellArr[k][j].number = 0;

cellArr[k - 1][j].number = num_ * 2;

var k_ = k - 1;

this.watchAgain(cellArr, k_, j);

}

}

,

/**

* 生命周期函數(shù)--監(jiān)聽頁面加載

*/

onLoad: function (options) {

this.initFn();

},

/**

* 生命周期函數(shù)--監(jiān)聽頁面初次渲染完成

*/

onReady: function () {

},

/**

* 生命周期函數(shù)--監(jiān)聽頁面顯示

*/

onShow: function () {

},

/**

* 生命周期函數(shù)--監(jiān)聽頁面隱藏

*/

onHide: function () {

},

/**

* 生命周期函數(shù)--監(jiān)聽頁面卸載

*/

onUnload: function () {

},

/**

* 頁面相關(guān)事件處理函數(shù)--監(jiān)聽用戶下拉動作

*/

onPullDownRefresh: function () {

},

/**

* 頁面上拉觸底事件的處理函數(shù)

*/

onReachBottom: function () {

},

/**

* 用戶點(diǎn)擊右上角分享

*/

onShareAppMessage: function () {

}

})

總結(jié)

以上是生活随笔為你收集整理的java小程序 2048_微信小程序之游戏2048的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。