WeChat "점프" 게임이 최근 인기를 끌었습니다. 이 사이트에는 공유할 기사도 있습니다. PHP는 WeChat "점프" 게임을 구현합니다 이 기사에서는 주로 2048을 구현하기 위한 알고리즘과 주의할 점을 공유합니다. 함께! (소스 코드 주소는 기사 끝 부분을 참조하십시오.)
알고리즘
4*4 체커보드 보기 생성
2개 또는 4개를 무작위로 생성하여 두 개의 셀을 채움
사용자가 터치할 때 시작 위치와 끝 위치를 기록하여 슬라이딩 방향 결정
슬라이딩 방향에 따라 셀 이동 , 그리고 같은 값을 병합합니다
사용자가 한 번의 스와이프를 완료한 후 2단계를 반복합니다
게임이 끝났는지 판단하고 게임 결과에 따라 다른 프롬프트를 생성합니다
난이도
슬라이딩 방향을 결정합니다
The 사용자가 스와이프하면 동일한 그리드가 병합되고 슬라이딩 방향의 측면으로 이동됩니다
implementation
view 구현
1. wxml+wxss를 사용하여 체커보드 보기를 생성합니다
2. wx:for를 사용하여 렌더링합니다. 데이터를 각 셀에
로직 구현
1. 페이지가 로드된 후 두 셀에 숫자 2 또는 4를 무작위로 채웁니다
2. 사용자의 슬라이딩 방향을 결정합니다
touchStart 이벤트 함수를 사용하여 시작 위치 touchStartX를 얻습니다. touchStartY
touchMove 이벤트 함수를 사용하여 종료 위치 touchEndX, touchEndY
var disX = this.touchStartX - this.touchEndX; var absdisX = Math.abs(disX); var disY = this.touchStartY - this.touchEndY; var absdisY = Math.abs(disY); // 确定移动方向 // 0:上, 1:右, 2:下, 3:左 var direction = absdisX > absdisY ? (disX < 0 ? 1 : 3) : (disY < 0 ? 2 : 0);
3를 획득합니다. 슬라이딩 방향에 따라 테이블을 이동하고(오른쪽으로 슬라이딩한다고 가정) 동일한 항목을 병합합니다
4*4 2-를 생성합니다. 2048 체스판의 차원 배열 목록이며 빈 공간은 0
// 比如棋盘数据如下 var grid = [ [2, 2, 0, 0], [0, 0, 0, 0], [0, 8, 4, 0], [0, 0, 0, 0] ];
슬라이딩 방향에 따라 4개 생성 *4 2차원 배열
var list = [ [0, 0, 2, 2], // 注意是0022不是2200,因为像右滑动所以从右边push入数组 [0, 0, 0, 0], [0, 4, 8, 0], [0, 0, 0, 0] ];
해당 코드(코드 중 this.board.grid는 위의 초기 그리드임) ):
formList(dir) { // 根据传入的滑动方向生成list的四个数组 var list = [[], [], [], []]; for(var i = 0; i < this.size; i++) for(var j = 0; j < this.size; j++) { switch(dir) { case 0: list[i].push(this.board.grid[j][i]); break; case 1: list[i].push(this.board.grid[i][this.size-1-j]); break; case 2: list[i].push(this.board.grid[this.size-1-j][i]); break; case 3: list[i].push(this.board.grid[i][j]); break; } } return list; }
목록의 각 작은 배열에 숫자를 앞에 두고, 끝에 0을 넣습니다
list2 = [ [2, 2, 0, 0], [0, 0, 0, 0], [4, 8, 0, 0], [0, 0, 0, 0] ];
해당 코드:
changeItem(item) { // 将 [0, 2, 0, 2] 改为 [2, 2, 0, 0] var cnt = 0; for(var i = 0; i < item.length; i++) if(item[i] != 0) item[cnt++] = item[i]; for(var j = cnt; j < item.length; j++) item[j] = 0; return item; }
같은 값을 가진 셀을 추가하고 다음 셀의 값을 0으로 변경합니다.
list2 = [ [4, 0, 0, 0], [0, 0, 0, 0], [4, 8, 0, 0], [0, 0, 0, 0] ];
해당 코드:
combine(list) { // 滑动时相同的合并 for(var i = 0; i < list.length; i++) // 数字靠边 list[i] = this.changeItem(list[i]); for(var i = 0; i < this.size; i++) { for(var j = 1; j < this.size; j++) { if(list[i][j-1] == list[i][j] && list[i][j]!=0) { list[i][j-1] += list[i][j]; list[i][j] = 0; } } } for (var i = 0; i < list.length; i++) // 再次数字靠边,避免0220变成0400的情况发生 list[i] = this.changeItem(list[i]); return list; }
list2를 반환하여 데이터를 나열하고 체커보드 보기에 렌더링합니다
list = [
[0, 0, 0, 4],
[0, 0, 0, 0],
[ 0, 0, 8, 4],
[0, 0, 0, 0]
];
해당 코드 :
move(dir) { // 0:上, 1:右, 2:下, 3:左 var curList = this.formList(dir); var list = this.combine(curList); var result = [[],[],[],[]]; for(var i = 0; i < this.size; i++) for(var j = 0; j < this.size; j++) { switch (dir) { case 0: result[i][j] = list[j][i]; break; case 1: result[i][j] = list[i][this.size-1-j]; break; case 2: result[i][j] = list[j][this.size-1-i]; break; case 3: result[i][j] = list[i][j]; break; } } this.board.grid = result; this.setDataRandom(); // 移动一次之后随机用2或4填充两个单元格 return result; }
4. 1
5단계를 반복하여 게임 오버
판정 기준을 정합니다. : 4*4 셀이 채워져 있으며 어떤 셀의 위, 아래, 왼쪽, 오른쪽에도 동일한 값을 가진 셀이 없습니다
isOver() { // 游戏是否结束,结束条件:可用格子为空且所有格子上下左右值不等 for (var i = 0; i < this.size; i++) // 左右不等 for (var j = 1; j < this.size; j++) { if (this.board.grid[i][j] == this.board.grid[i][j - 1]) return false; } for (var j = 0; j < this.size; j++) // 上下不等 for (var i = 1; i < this.size; i++) { if (this.board.grid[i][j] == this.board.grid[i - 1][j]) return false; } return true; }
6. 게임 결과에 따라 해당 프롬프트가 제공됩니다
po 소스 코드. 주소: windlany/wechat-weapp-2048 관심이 있으신 분은 시도해 보시기 바랍니다. 모두에게 도움이 되기를 바랍니다.
관련 권장 사항:
위 내용은 WeChat 미니 프로그램 버전 2048 미니 게임의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

WebStorm Mac 버전
유용한 JavaScript 개발 도구

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는
