찾다
위챗 애플릿미니 프로그램 개발WeChat 미니 프로그램 버전 2048 미니 게임

WeChat 미니 프로그램 버전 2048 미니 게임

Jan 25, 2018 pm 01:34 PM
미니 게임미니 프로그램

WeChat "점프" 게임이 최근 인기를 끌었습니다. 이 사이트에는 공유할 기사도 있습니다. PHP는 WeChat "점프" 게임을 구현합니다 이 기사에서는 주로 2048을 구현하기 위한 알고리즘과 주의할 점을 공유합니다. 함께! (소스 코드 주소는 기사 끝 부분을 참조하십시오.)

알고리즘

4*4 체커보드 보기 생성

2개 또는 4개를 무작위로 생성하여 두 개의 셀을 채움

사용자가 터치할 때 시작 위치와 끝 위치를 기록하여 슬라이딩 방향 결정

슬라이딩 방향에 따라 셀 이동 , 그리고 같은 값을 병합합니다

사용자가 한 번의 스와이프를 완료한 후 2단계를 반복합니다

게임이 끝났는지 판단하고 게임 결과에 따라 다른 프롬프트를 생성합니다


난이도

슬라이딩 방향을 결정합니다

The 사용자가 스와이프하면 동일한 그리드가 병합되고 슬라이딩 방향의 측면으로 이동됩니다
implementation

view 구현

1. wxml+wxss를 사용하여 체커보드 보기를 생성합니다

WeChat 미니 프로그램 버전 2048 미니 게임

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. 게임 결과에 따라 해당 프롬프트가 제공됩니다

WeChat 미니 프로그램 버전 2048 미니 게임

po 소스 코드. 주소: windlany/wechat-weapp-2048 관심이 있으신 분은 시도해 보시기 바랍니다. 모두에게 도움이 되기를 바랍니다.

관련 권장 사항:

WeChat 점프 파이썬 보조 스크립트 예제 공유

php는 WeChat 점프 게임을 구현합니다.

인스턴스 공유 jQuery는 퍼즐 게임을 구현합니다

위 내용은 WeChat 미니 프로그램 버전 2048 미니 게임의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

SecList

SecList

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

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

mPDF

mPDF

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

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

DVWA

DVWA

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