WeChat 애플릿으로 구현된 스네이크 게임 [소스 코드 포함]
이 글에서는 위챗 애플릿으로 구현한 스네이크 게임을 주로 소개하고, 위챗 애플릿의 관련 인터페이스 레이아웃과 코드 로직 연산 기술을 분석해 스네이크 게임 기능을 예제 형태로 구현했다. 참고용으로 다운로드하세요. 친구들이 참고할 수 있습니다.
이 글에서는 WeChat 애플릿으로 구현된 스네이크 게임을 예로 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.
실행 효과를 먼저 살펴보겠습니다.
구체적인 코드는 다음과 같습니다.
인터페이스 레이아웃 페이지/스네이크/스네이크/스네이크. 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> 游戏结束,重新开始吗? </view> </modal> </view>
논리 함수 페이지/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:'',//方向 modalHidden: true, timer:'' } , onLoad:function(){ var maxscore = wx.getStorageSync('maxscore'); 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('maxscore', 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<len;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 'left': if(this.data.direction=='right')return; break; case 'right': if(this.data.direction=='left')return; break; case 'top': if(this.data.direction=='bottom')return; break; case 'bottom': if(this.data.direction=='top')return; break; default: } this.setData({ startx:0, starty:0, endx:0, endy:0, direction:direction }) } }, computeDir: function(heng, num){ if(heng) return (num > 0) ? 'right' : 'left'; return (num > 0) ? 'bottom' : 'top'; }, 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 'left': return this.changeLeft(); break; case 'right': return this.changeRight(); break; case 'top': return this.changeTop(); break; case 'bottom': 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:'' }) this.onLoad(); } });
위 내용은 모두의 학습에 도움이 되기를 바랍니다. PHP 중국어 웹사이트!
관련 권장 사항:
WeChat 애플릿에서 여러 파일을 다운로드하기 위한 간단한 패키지
WeChat 애플릿에서 Meituan 메뉴를 구현하는 방법
위 내용은 WeChat 애플릿으로 구현된 스네이크 게임 [소스 코드 포함]의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











게임이 많은 리소스를 소비하기 때문에 컴퓨터 속도가 느려지는 것은 흔한 일입니다. 게임을 할 때 CPU 사용량을 이해하여 과부하를 방지하는 것이 중요합니다. 따라서 적절한 CPU 사용량을 추적하는 것이 게임 경험을 원활하게 유지하는 데 중요합니다. 이 문서에서는 게임이 실행되는 동안 달성해야 하는 적절한 CPU 사용량을 살펴보겠습니다. 게임 중 CPU 사용률 CPU 사용률은 프로세서 작업 부하를 나타내는 중요한 지표이며 CPU의 성능 사양에 따라 달라집니다. 더 강력한 CPU는 일반적으로 사용량이 더 높습니다. 코어와 스레드가 더 많은 CPU는 시스템의 전반적인 성능을 향상시킬 수 있습니다. 멀티스레딩 지원은 CPU의 잠재력을 최대한 활용하는 데 도움이 됩니다. 게임에서 CPU 사용량은 프로세서 활용도에 따라 달라지며, 이는 게임에 영향을 미칠 수 있습니다.

Nvgpucomp64.dll로 인해 게임이 자주 충돌하는 경우 여기에 제공된 해결 방법이 도움이 될 수 있습니다. 이 문제는 일반적으로 오래되거나 손상된 그래픽 카드 드라이버, 손상된 게임 파일 등으로 인해 발생합니다. 이러한 문제를 해결하면 게임 충돌을 처리하는 데 도움이 될 수 있습니다. Nvgpucomp64.dll 파일은 NVIDIA 그래픽 카드와 연결되어 있습니다. 이 파일이 충돌하면 게임도 충돌합니다. 이는 일반적으로 LordsofttheFallen, LiesofP, RocketLeague 및 ApexLegends와 같은 게임에서 발생합니다. Nvgpucomp64.dll이 N인 경우 Windows PC에서 게임과 충돌함

거의 모든 게임이 온라인으로 진행되는 오늘날의 상황에서 홈 네트워크의 최적화를 무시하는 것은 바람직하지 않습니다. 거의 모든 라우터에는 사용자의 게임 경험을 향상시키도록 설계된 NATBoost 및 QoS 기능이 탑재되어 있습니다. 이 기사에서는 NATBoost 및 QoS의 정의, 장점 및 단점을 살펴보겠습니다. 게임에 대한 NATBoost와 Qos 중 어느 것이 더 낫습니까? 네트워크 주소 변환 부스트(Network Address Translation Boost)라고도 알려진 NATBoost는 성능을 향상시키는 라우터에 내장된 기능입니다. 이는 게임 장치와 서버 간에 데이터가 전송되는 데 걸리는 시간인 네트워크 대기 시간을 줄이는 데 도움이 되기 때문에 게임에 특히 중요합니다. NATBoost는 라우터 내의 데이터 처리 방법을 최적화하여 더 빠른 데이터 처리 속도와 더 낮은 대기 시간을 달성하여

2월 23일 이 웹사이트의 소식에 따르면 NVIDIA는 어젯밤 NVIDIA 애플리케이션을 업데이트하고 출시하여 플레이어에게 새로운 통합 GPU 제어 센터를 제공하고 플레이어가 게임 내 플로팅에서 제공하는 강력한 녹화 도구를 통해 멋진 순간을 포착할 수 있도록 했습니다. 창문. 이번 업데이트에서 NVIDIA는 RTXHDR 기능도 도입했습니다. 공식 소개는 다음과 같습니다. RTXHDR은 HDR(High Dynamic Range)의 화려한 시각 효과를 게임에 원활하게 도입할 수 있는 새로운 AI 기반 프리스타일 필터입니다. HDR을 지원합니다. 다양한 DirectX 및 Vulkan 기반 게임에서 이 기능을 사용하려면 HDR 호환 모니터만 있으면 됩니다. 플레이어가 RTXHDR 기능을 활성화하면 HD를 지원하지 않더라도 게임이 실행됩니다.

슈퍼피플 게임은 Steam 클라이언트를 통해 다운로드할 수 있습니다. 이 게임의 크기는 일반적으로 다운로드 및 설치에 1시간 30분 정도 걸립니다. 새로운 글로벌 비공개 테스트 신청 방법 1) 스팀 스토어에서 'SUPERPEOPLE' 검색(스팀 클라이언트 다운로드) 2) 'SUPERPEOPLE' 스토어 페이지 하단의 'SUPERPEOPLE 비공개 테스트 접근 권한 요청' 클릭 3) 접근 요청 버튼, "SUPERPEOPLECBT" 게임은 스팀 라이브러리에서 확인하실 수 있습니다. 4) "SUPERPEOPLECBT"에서 설치 버튼을 클릭하신 후 다운로드 받으세요.

AAA 명작과 모바일 게임을 충분히 플레이한 친구들, 어린 시절의 컴퓨터 게임을 다시 경험하고 싶나요? 그렇다면 Windows 11의 Spider Solitaire를 함께 찾아보세요! 인터페이스에서 시작 메뉴를 클릭하고 "모든 앱" 버튼을 클릭합니다. Microsoft의 Solitaire 시리즈 게임 애플리케이션인 "MicrosoftSolitaireCollection"을 찾아 선택합니다. 로딩이 완료되면 선택 인터페이스로 들어가서 "스파이더 솔리테어"를 찾고 "스파이더 솔리테어"를 선택하세요. 인터페이스가 약간 바뀌었지만 여전히 이전과 동일합니다.

Xianyu의 공식 WeChat 미니 프로그램이 조용히 출시되었습니다. 미니 프로그램에서는 비공개 메시지를 게시하여 구매자/판매자와 소통하고, 개인 정보 및 주문 보기, 상품 검색 등을 할 수 있습니다. 궁금하시다면 Xianyu WeChat mini가 무엇인가요? 프로그램을 살펴볼까요? Xianyu WeChat 애플릿의 이름은 무엇입니까? 답변: Xianyu, 유휴 거래, 중고 판매, 평가 및 재활용. 1. 미니 프로그램에서는 대기 메시지 게시, 비공개 메시지를 통한 구매자/판매자와의 커뮤니케이션, 개인 정보 및 주문 보기, 특정 항목 검색 등을 할 수 있습니다. 2. 미니 프로그램 페이지에는 근처에 홈페이지가 있습니다. 유휴 게시, 메시지, 내 5가지 기능 3. 사용하려면 구매하기 전에 WeChat 결제를 활성화해야 합니다.
![Thrustmaster 제어판이 작동하지 않거나 제대로 표시되지 않음 [수정됨]](https://img.php.cn/upload/article/000/887/227/170831073283375.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
Thrustmaster는 게임 휠 및 기타 게임 액세서리 생산을 전문으로 하는 회사입니다. 해당 휠 제품은 게임 커뮤니티에서 매우 인기가 있습니다. Thrustmaster 휠 설정은 Thrustmaster 제어판을 사용하여 설치하고 조정할 수 있습니다. 제어판이 작동하지 않거나 표시되지 않는 문제가 발생하면 게임 경험에 영향을 미칠 수 있습니다. 따라서 이런 경우에는 연결이 정상적인지 확인하고, 소프트웨어 드라이버가 올바르게 설치되었는지, 최신 버전으로 업데이트되었는지 확인해야 합니다. 또한 장치를 다시 시작하거나 장치를 다시 연결하여 가능한 오류를 해결할 수도 있습니다. 문제가 발생하면 Thrustmaster 공식 웹사이트를 참조하거나 고객 서비스에 문의하여 추가 도움을 받을 수 있습니다. Thrustma에 액세스하는 방법
