国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁(yè) 微信小程式 小程式開發(fā) 微信小程式實(shí)現(xiàn)的貪吃蛇遊戲【附源碼】

微信小程式實(shí)現(xiàn)的貪吃蛇遊戲【附源碼】

Jun 22, 2018 pm 04:48 PM
微信小程式 遊戲 貪吃蛇

這篇文章主要介紹了微信小程式實(shí)現(xiàn)的貪吃蛇遊戲,結(jié)合實(shí)例形式分析了微信小程式實(shí)現(xiàn)貪吃蛇遊戲功能的相關(guān)界面佈局與代碼邏輯操作技巧,並附帶源碼供讀者下載參考,需要的朋友可以參考下

本文實(shí)例講述了微信小程式實(shí)現(xiàn)的貪吃蛇遊戲。分享給大家供大家參考,具體如下:

先來(lái)看看運(yùn)行效果:

具體程式碼如下:

介面佈局pages/snake/snake/snake.wxml:

<!--snake.wxml-->
<view class="control" bindtouchstart="tapStart" bindtouchmove="tapMove" bindtouchend="tapEnd">
<view class="score">
  <view class="title">snake</view>
  <view class="scoredetail">
    <view class="scoredesc">得分</view>
    <view class="scorenumber">{{score}}</view>
  </view>
  <view class="scoredetail">
    <view class="scoredesc">歷史最高</view>
    <view class="scorenumber">{{maxscore}}</view>
  </view>
</view>
<view class="ground">
  <view wx:for="{{ground}}" class="rows" wx:for-item="cols">
    <view wx:for="{{cols}}" class="block block_{{item}}" >
    </view>
  </view>
</view>
<modal class="modal" hidden="{{modalHidden}}" no-cancel bindconfirm="modalChange">
 <view> 游戲結(jié)束,重新開始嗎? </view>
</modal>
</view>

邏輯功能pages/snake/snake/snake.js:

//snake.js
var app = getApp();
Page({
  data:{
    score: 0,//比分
    maxscore: 0,//最高分
    startx: 0,
    starty: 0,
    endx:0,
    endy:0,//以上四個(gè)做方向判斷來(lái)用
    ground:[],//存儲(chǔ)操場(chǎng)每個(gè)方塊
    rows:28,
    cols:22,//操場(chǎng)大小
    snake:[],//存蛇
    food:[],//存食物
    direction:&#39;&#39;,//方向
    modalHidden: true,
    timer:&#39;&#39;
  } ,
  onLoad:function(){
    var maxscore = wx.getStorageSync(&#39;maxscore&#39;);
    if(!maxscore) maxscore = 0
    this.setData({
    maxscore:maxscore
    });
    this.initGround(this.data.rows,this.data.cols);//初始化操場(chǎng)
    this.initSnake(3);//初始化蛇
    this.creatFood();//初始化食物
    this.move();//蛇移動(dòng)
  },
  //計(jì)分器
  storeScore:function(){
   if(this.data.maxscore < this.data.score){
   this.setData({
    maxscore:this.data.score
    })
    wx.setStorageSync(&#39;maxscore&#39;, this.data.maxscore)
   }
 },
 //操場(chǎng)
  initGround:function(rows,cols){
    for(var i=0;i<rows;i++){
      var arr=[];
      this.data.ground.push(arr);
      for(var j=0;j<cols;j++){
        this.data.ground[i].push(0);
      }
    }
  },
  //蛇
  initSnake:function(len){
    for(var i=0;i<len;i++){
      this.data.ground[0][i]=1;
      this.data.snake.push([0,i]);
    }
  },
  //移動(dòng)函數(shù)
  move:function(){
    var that=this;
    this.data.timer=setInterval(function(){
      that.changeDirection(that.data.direction);
      that.setData({
        ground:that.data.ground
      });
    },400);
  },
  tapStart: function(event){
    this.setData({
      startx: event.touches[0].pageX,
      starty: event.touches[0].pageY
      })
  },
  tapMove: function(event){
    this.setData({
      endx: event.touches[0].pageX,
      endy: event.touches[0].pageY
      })
  },
  tapEnd: function(event){
    var heng = (this.data.endx) ? (this.data.endx - this.data.startx) : 0;
    var shu = (this.data.endy) ? (this.data.endy - this.data.starty) : 0;
    if(Math.abs(heng) > 5 || Math.abs(shu) > 5){
      var direction = (Math.abs(heng) > Math.abs(shu)) ? this.computeDir(1, heng):this.computeDir(0, shu);
      switch(direction){
      case &#39;left&#39;:
        if(this.data.direction==&#39;right&#39;)return;
        break;
      case &#39;right&#39;:
        if(this.data.direction==&#39;left&#39;)return;
        break;
      case &#39;top&#39;:
        if(this.data.direction==&#39;bottom&#39;)return;
        break;
      case &#39;bottom&#39;:
        if(this.data.direction==&#39;top&#39;)return;
        break;
      default:
    }
    this.setData({
    startx:0,
    starty:0,
    endx:0,
    endy:0,
    direction:direction
    })
  }
  },
  computeDir: function(heng, num){
  if(heng) return (num > 0) ? &#39;right&#39; : &#39;left&#39;;
  return (num > 0) ? &#39;bottom&#39; : &#39;top&#39;;
  },
  creatFood:function(){
    var x=Math.floor(Math.random()*this.data.rows);
    var y=Math.floor(Math.random()*this.data.cols);
    var ground= this.data.ground;
    ground[x][y]=2;
    this.setData({
      ground:ground,
      food:[x,y]
    });
  },
  changeDirection:function(dir){
    switch(dir){
    case &#39;left&#39;:
      return this.changeLeft();
      break;
    case &#39;right&#39;:
      return this.changeRight();
      break;
    case &#39;top&#39;:
      return this.changeTop();
      break;
    case &#39;bottom&#39;:
      return this.changeBottom();
      break;
    default:
    }
  },
  changeLeft:function(){
    var arr=this.data.snake;
    var len=this.data.snake.length;
    var snakeHEAD=arr[len-1][1];
    var snakeTAIL=arr[0];
    var ground=this.data.ground;
    ground[snakeTAIL[0]][snakeTAIL[1]]=0; 
    for(var i=0;i<len-1;i++){
        arr[i]=arr[i+1];  
    };
    var x=arr[len-1][0];
    var y=arr[len-1][1]-1;
    arr[len-1]=[x,y];
      this.checkGame(snakeTAIL);
    for(var i=1;i<len;i++){
      ground[arr[i][0]][arr[i][1]]=1;
    } 
  this.setData({
        ground:ground,
      snake:arr
    });
    return true;
  },
  changeRight:function(){
    var arr=this.data.snake;
    var len=this.data.snake.length;
    var snakeHEAD=arr[len-1][1];
    var snakeTAIL=arr[0];
    var ground=this.data.ground;
    ground[snakeTAIL[0]][snakeTAIL[1]]=0; 
    for(var i=0;i<len-1;i++){
        arr[i]=arr[i+1];  
    };
    var x=arr[len-1][0];
    var y=arr[len-1][1]+1;
    arr[len-1]=[x,y];
    this.checkGame(snakeTAIL);
    for(var i=1;i<len;i++){
      ground[arr[i][0]][arr[i][1]]=1;
    } 
    this.setData({
        ground:ground,
      snake:arr
    });
  //  var y=this.data.snake[0][1];
  //  var x=this.data.snake[0][0];
  //   this.data.ground[x][y]=0;
  //   console.log(this.data.ground[x]);
  //   console.log(this.data.snake);
  //   for(var i=0;i<this.data.snake.length-1;i++){
  //     this.data.snake[i]=this.data.snake[i+1];
  //   }
  //   this.data.snake[this.data.snake.length-1][1]++;
  //   for(var j=1;j<this.data.snake.length;j++){
  //     this.data.ground[this.data.snake[j][0]][this.data.snake[j][1]]=1;
  //   }
    return true;
  },
  changeTop:function(){
    var arr=this.data.snake;
    var len=this.data.snake.length;
    var snakeHEAD=arr[len-1][1];
    var snakeTAIL=arr[0];
    var ground=this.data.ground;
    ground[snakeTAIL[0]][snakeTAIL[1]]=0; 
    for(var i=0;i<len-1;i++){
        arr[i]=arr[i+1];  
    };
    var x=arr[len-1][0]-1;
    var y=arr[len-1][1];
    arr[len-1]=[x,y];
      this.checkGame(snakeTAIL);
    for(var i=1;i<len;i++){
      ground[arr[i][0]][arr[i][1]]=1;
    } 
    this.setData({
      ground:ground,
      snake:arr
    });
    return true;
  },
  changeBottom:function(){
    var arr=this.data.snake;
    var len=this.data.snake.length;
    var snakeHEAD=arr[len-1];
    var snakeTAIL=arr[0];
    var ground=this.data.ground;
    ground[snakeTAIL[0]][snakeTAIL[1]]=0; 
    for(var i=0;i<len-1;i++){
        arr[i]=arr[i+1];  
    };
    var x=arr[len-1][0]+1;
    var y=arr[len-1][1];
    arr[len-1]=[x,y];
    this.checkGame(snakeTAIL);
    for(var i=1;i<len;i++){
      ground[arr[i][0]][arr[i][1]]=1;
    } 
    this.setData({
      ground:ground,
      snake:arr
    });
    return true;
  },
  checkGame:function(snakeTAIL){
    var arr=this.data.snake;
    var len=this.data.snake.length;
    var snakeHEAD=arr[len-1];
    if(snakeHEAD[0]<0||snakeHEAD[0]>=this.data.rows||snakeHEAD[1]>=this.data.cols||snakeHEAD[1]<0){
        clearInterval(this.data.timer);
          this.setData({
          modalHidden: false,
            }) 
    }
    for(var i=0;i<len-1;i++){
      if(arr[i][0]==snakeHEAD[0]&&arr[i][1]==snakeHEAD[1]){
        clearInterval(this.data.timer);
          this.setData({
            modalHidden: false,
          })
      }
    }
    if(snakeHEAD[0]==this.data.food[0]&&snakeHEAD[1]==this.data.food[1]){
      arr.unshift(snakeTAIL);
      this.setData({
        score:this.data.score+10
      });
      this.storeScore();
      this.creatFood();
    }
  },
  modalChange:function(){
  this.setData({
      score: 0,
    ground:[],
    snake:[],
      food:[],
      modalHidden: true,
      direction:&#39;&#39;
  })
  this.onLoad();
  }
});

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,更多相關(guān)內(nèi)容請(qǐng)關(guān)注PHP中文網(wǎng)!

相關(guān)推薦:

微信小程式之多檔案下載的簡(jiǎn)單封裝

微信小程式如何實(shí)作美團(tuán)選單

#

以上是微信小程式實(shí)現(xiàn)的貪吃蛇遊戲【附源碼】的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

Nvgpucomp64.dll導(dǎo)致Windows PC遊戲崩潰; Nvgpucomp64.dll導(dǎo)致Windows PC遊戲崩潰; Mar 26, 2024 am 08:20 AM

如果Nvgpucomp64.dll導(dǎo)致遊戲經(jīng)常崩潰,這裡提供的解決方案可能會(huì)對(duì)您有所幫助。這種問(wèn)題通常是由於過(guò)時(shí)或損壞的顯示卡驅(qū)動(dòng)程式、遊戲檔案損壞等原因引起的。修復(fù)這些問(wèn)題可以幫助您解決遊戲崩潰的困擾。 Nvgpucomp64.dll檔案與NVIDIA顯示卡關(guān)聯(lián)。當(dāng)這個(gè)檔案崩潰時(shí),你的遊戲也會(huì)崩潰。這通常發(fā)生在《LordsoftheFallen》、《LiesofP》、《RocketLeague》和《ApexLegends》等遊戲中。 Nvgpucomp64.dll使WindowsPC上的遊戲崩潰如果N

NAT Boost與遊戲的Qos;哪個(gè)比較好? NAT Boost與遊戲的Qos;哪個(gè)比較好? Feb 19, 2024 pm 07:00 PM

在當(dāng)下幾乎所有遊戲都在線上的情況下,忽視家庭網(wǎng)路的最佳化是不可取的。幾乎所有路由器都配備了NATBoost和QoS功能,旨在提升使用者的遊戲體驗(yàn)。本文將探討NATBoost和QoS的定義、優(yōu)點(diǎn)和缺點(diǎn)。 NATBoost與遊戲的Qos;哪個(gè)比較好? NATBoost,又稱網(wǎng)路位址轉(zhuǎn)換Boost,是一種內(nèi)建於路由器的功能,可提升其效能。對(duì)於遊戲而言尤其重要,因?yàn)樗兄稖p少網(wǎng)路延遲,即遊戲設(shè)備和伺服器之間資料傳輸?shù)臅r(shí)間。透過(guò)優(yōu)化路由器內(nèi)的資料處理方式,NATBoost實(shí)現(xiàn)了更快的資料處理速度和更低的延遲,從而改

在遊戲時(shí),CPU利用率應(yīng)該是多少? 在遊戲時(shí),CPU利用率應(yīng)該是多少? Feb 19, 2024 am 11:21 AM

遊戲因消耗大量資源而導(dǎo)致電腦運(yùn)作速度變慢是常見(jiàn)現(xiàn)象。了解遊戲時(shí)CPU的使用率是至關(guān)重要的,這樣可以避免過(guò)度負(fù)荷。因此,掌握適當(dāng)?shù)腃PU使用率是維持遊戲體驗(yàn)流暢的關(guān)鍵。在本文中,我們將探討遊戲執(zhí)行時(shí)間CPU應(yīng)該達(dá)到的適當(dāng)使用率。遊戲時(shí)的CPU使用率CPU使用率是指衡量處理器工作負(fù)載的重要指標(biāo),取決於CPU的效能規(guī)格。功率較大的CPU通常具有更高的使用率。擁有更多核心和執(zhí)行緒的CPU可以提高系統(tǒng)的整體效能。多執(zhí)行緒支援有助於充分發(fā)揮CPU的潛力。在遊戲中,CPU使用率取決於處理器的使用率,這會(huì)影響遊戲

win11蜘蛛紙牌在哪 win11玩蜘蛛紙牌遊戲的方法 win11蜘蛛紙牌在哪 win11玩蜘蛛紙牌遊戲的方法 Mar 01, 2024 am 11:37 AM

在玩夠3A大作以及手遊的小夥伴們,是不是想重溫一下兒時(shí)的電腦遊戲呀?那我們一起在windows11中尋找蜘蛛紙牌吧!點(diǎn)選介面上的開始選單,點(diǎn)選「所有應(yīng)用」按鈕;點(diǎn)選「所有應(yīng)用」。找到並選擇“MicrosoftSolitaireCollection”,這是微軟的紙牌系列遊戲應(yīng)用程式;紙牌系列遊戲選擇。載入完成後,進(jìn)入選擇介面,找到“蜘蛛紙牌”;選擇“蜘蛛紙牌”。雖然介面有些許變化,但還是以前的

英偉達(dá)上線 RTX HDR 功能:不支援的遊戲透過(guò) AI 濾鏡達(dá)到 HDR 艷麗視覺(jué)效果 英偉達(dá)上線 RTX HDR 功能:不支援的遊戲透過(guò) AI 濾鏡達(dá)到 HDR 艷麗視覺(jué)效果 Feb 24, 2024 pm 06:37 PM

本站2月23日消息,英偉達(dá)昨晚更新推出了NVIDIA??應(yīng)用程序,為玩家提供了全新的統(tǒng)一GPU控制中心,便於玩家透過(guò)遊戲內(nèi)懸浮窗提供的強(qiáng)大錄影工具捕捉精彩時(shí)刻。在本次更新中,英偉達(dá)也引入了RTXHDR功能,本站附上官方介紹如下:RTXHDR是一款A(yù)I賦能的全新Freestyle濾鏡,可以將高動(dòng)態(tài)範(fàn)圍(HDR)的艷麗視覺(jué)效果無(wú)縫引入到原本不支援HDR的遊戲中。你只需擁有相容HDR的顯示器,即可對(duì)大量基於DirectX和Vulkan的遊戲使用此功能。玩家在啟用RTXHDR功能之後,運(yùn)行即便不支援HD

超級(jí)人類(superpeople)遊戲下載安裝方法介紹 超級(jí)人類(superpeople)遊戲下載安裝方法介紹 Mar 30, 2024 pm 04:01 PM

超級(jí)人類(superpeople)遊戲可以透過(guò)steam客戶端下載遊戲,這款遊戲的大小在28G左右,下載到安裝通常需要一個(gè)半小時(shí)??,以下為大家?guī)?lái)具體的下載安裝教學(xué)!新的申請(qǐng)全球封閉測(cè)試方法1)在Steam商店(steam客戶端下載)搜尋“SUPERPEOPLE”2)點(diǎn)擊“SUPERPEOPLE”商店頁(yè)面下方的“請(qǐng)求SUPERPEOPLE封閉測(cè)試訪問(wèn)權(quán)限”3)點(diǎn)擊請(qǐng)求訪問(wèn)權(quán)限按鈕後,將在Steam庫(kù)中可確認(rèn)「SUPERPEOPLECBT」遊戲4)在「SUPERPEOPLECBT」中點(diǎn)選安裝按鈕並下

閒魚微信小程式正式上線 閒魚微信小程式正式上線 Feb 10, 2024 pm 10:39 PM

閒魚官方微信小程式悄悄上線,在小程式中可以發(fā)布閒置與買家/賣家私訊交流、查看個(gè)人資料及訂單、搜尋物品等,有用好奇閒魚微信小程式叫什麼,現(xiàn)在快來(lái)看一下。閒魚微信小程式叫什麼答案:閒魚,閒置交易二手買賣估價(jià)回收。 1、在小程式中可以發(fā)布閒置、與買家/賣家私訊交流、查看個(gè)人資料及訂單、搜尋指定物品等功能;2、在小程式的頁(yè)面中有首頁(yè)、附近、發(fā)閒置、訊息、我的5項(xiàng)功能;3、想要使用的話必要要開通微信支付才可以購(gòu)買;

Thrustmaster控制面板無(wú)法正常運(yùn)作或顯示[修復(fù)] Thrustmaster控制面板無(wú)法正常運(yùn)作或顯示[修復(fù)] Feb 19, 2024 am 10:45 AM

Thrustmaster是一家專門生產(chǎn)遊戲輪和其他遊戲配件的公司,其車輪產(chǎn)品在遊戲界備受歡迎。使用Thrustmaster控制面板可以安裝和調(diào)整Thrustmaster輪的設(shè)定。如果遇到控制面板無(wú)法運(yùn)作或無(wú)法顯示的問(wèn)題,可能會(huì)影響遊戲體驗(yàn)。因此,當(dāng)發(fā)生這種情況時(shí),需要檢查連接是否正常,確保軟體驅(qū)動(dòng)程式已正確安裝並更新至最新版本。另外,也可以嘗試重新啟動(dòng)設(shè)備或重新連接設(shè)備,以解決可能的故障。在遇到問(wèn)題時(shí),可以參考Thrustmaster的官方網(wǎng)站或聯(lián)絡(luò)客服以獲得進(jìn)一步協(xié)助。如何訪問(wèn)Thrustma

See all articles