黔优媒体网-软文媒体自助发稿平台!
  1. 行业资讯
  2. 正文

微信小程序实现的贪吃蛇游戏【附源码】

来源:黔优媒体网   时间:2024-09-19

这篇文章主要介绍了微信小程序实现的贪吃蛇游戏,结合实例形式分析了微信小程序实现贪吃蛇游戏功能的相关界面布局与代码逻辑操作技巧,并附带源码供读者下载参考,需要的朋友可以参考下

本文实例讲述了微信小程序实现的贪吃蛇游戏。分享给大家供大家参考,具体如下:

先来看看运行效果:

具体代码如下:

界面布局 pages/snake/snake/snake.wxml:

 !--snake.wxml-- 
 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,//以上四个做方向判断来用
 ground:[],//存储操场每个方块
 rows:28,
 cols:22,//操场大小
 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);//初始化操场
 this.initSnake(3);//初始化蛇
 this.creatFood();//初始化食物
 this.move();//蛇移动
 //计分器
 storeScore:function(){
 if(this.data.maxscore this.data.score){
 this.setData({
 maxscore:this.data.score
 wx.setStorageSync( #39;maxscore #39;, this.data.maxscore)
 //操场
 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 i++){
 this.data.ground[0][i]=1;
 this.data.snake.push([0,i]);
 //移动函数
 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 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 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 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 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();
});

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

微信小程序之多文件下载的简单封装

微信小程序如何实现美团菜单

以上就是微信小程序实现的贪吃蛇游戏【附源码】的详细内容,更多请关注php中文网其它相关文章!

微信app下载

微信是一款手机通信软件,支持通过手机网络发送语音短信、视频、图片和文字。微信可以单聊及群聊,还能根据地理位置找到附近的人,带给大家全新的移动沟通体验,有需要的小伙伴快来保存下载体验吧!


【免责申明】黔优媒体网以上展示内容来源于用户自主上传、合作媒体、企业机构或网络收集整理,版权争议与本站无关,文章涉及见解与观点不代表黔优媒体网官方立场,请读者仅做参考,本文标题:微信小程序实现的贪吃蛇游戏【附源码】;欢迎转载,转载时请说明出处。若您认为本文侵犯了您的版权信息,或您发现该内容有任何违法/违规的内容,请您立即联系我们及时修正或删除。(邮箱号: kefu@qianu.com)