코 코스 크 리 에이 터 화 용도 디지털 퍼 즐
화 용 도 는 무엇 입 니까?
이런 디지털 퍼 즐 게임 은 모두 가 해 본 적 이 있 지?그 가 바로 전형 적 인 화 용도 중의 하나 이다.
화 용 도 는 오래된 중국 민간 익 지 게임 으로 변화 가 많 고 백 가지 게임 이 싫 증 이 나 지 않 는 특징 으로 마방,독립 다이아몬드 바둑 과 함께 외국 지적 전문가 에 의 해'지적 게임 계 의 세 가지 불가사의'라 고 불 린 다.
오늘 은 이 화 용 도 를 알 아 보 자.
본문
오늘 우 리 는 주로 3*3 의 구조 로 진행 되 었 습 니 다.초보 자 는 cocos creator 로 간단 한 demo 를 썼 습 니 다.다음은 우리 가 점차적으로 이야기 하 겠 습 니 다.
1.판 넬
우선 우 리 는 랜 덤 으로 판 넬 배열 을 만 듭 니 다.
2.화 용도 구 해
생각:
궁 거 법:모두 가 이런 게임 의 게임 방법 을 알 고 있 습 니 다.그 중에서 미 끄 러 질 수 있 는 사각형 을 미 끄 러 뜨리 고 어 지 러 운 사각형 을 위의 숫자 에 따라 작은 것 부터 큰 것 까지 순서대로 배열 하면 통관 할 수 있 습 니 다.이곳 에서 채소 새 는 궁 거 법 을 이용 해 가능 한 모든 상황 에서 가장 좋 은 방법 을 찾 았 다.
궁 거 법 에서 우리 가 흔히 볼 수 있 는 것 은:
4.567917.넓 은 검색:넓 은 검색 을 우선 하고 모든 방향의 첫 번 째 단 계 를 우선 검색 한 다음 에 모든 가능 한 방향 을 검색 하 는 두 번 째 단 계 를 이 어 유추 합 니 다4.567917.깊이 검색:깊이 우선 검색 은 한 방향 에서 계속 검색 합 니 다.이 길이 통 하지 않 을 때 까지 두 번 째 방향 을 고려 합 니 다여기 서 우리 가 사용 하 는 것 은 광범 위 한 우선 검색 이다.우 리 는 가장 좋 은 것,즉 걸음 수가 가장 적은 것 만 얻 을 수 있다.
구체 적 인 조작 은 그림 과 같다.
우 리 는 예전 에 세 걸음 을 예 로 들 었 다.
4.567917.첫 번 째 단 계 는 세 가지 방법 이 있 습 니 다.4.567918.
4.567917.두 번 째 단 계 는 우 리 는 첫 번 째 단 계 를 바탕 으로 사각형 을 이동 해 야 한다.모든 것 은 더 많은 가능성 을 연장 할 것 이다.4.567918.
우 리 는 모든 가능성 을 저장 해 야 한다.
4.567917.중복 되 는 가 지 를 처 리 했 지만 분기 의 수량 도 배로 증가 할 것 이다.예시 에서 의 배열 을 가지 고 걸음 수가 증가 함 에 따라 분기 의 수량 은 그림 과 같다
4.567917.일단 지점 이 통관 되 었 음 을 감지 하면 넓 은 검색 이 끝 납 니 다4.567917.최종 적 으로 모든 이동 과정 을 얻 을 수 있 습 니 다
알 게 되 었 습 니 다.우 리 는 demo 에 응용 하여 통관 여 부 를 검사 할 수 있 습 니 다.
데모 의 자동 정렬 을 누 르 십시오.
3.코드
//
while (true) {
let steps: Array<any> = [];
let lastGrad: Array<any> = this.mMapData[this.mMapData.length - 1];
console.log(lastGrad.length);
// ,
for (let i = 0; i < lastGrad.length; i++) {
let matrix = lastGrad[i]["matrix"];
let answer = lastGrad[i]["answer"];
let result: Array<any> = this.move(matrix, answer, steps);
if (result) {
console.log(" :", result);
resolve(result);
return;
}
}
if(steps.length<=0){
console.log(" ,");
resolve(null);
return;
}
this.mMapData.push(steps);
}
private move(matrix: Array<number>, answer: Array<any>, steps: Array<any>): Array<any> {
for (let i = 0; i < matrix.length; i++) {
if (matrix[i] != -1) { // , ,
// ,
let result0: Array<any> = this.moveUp(i, matrix, answer, steps);
let result1: Array<any> = this.moveDown(i, matrix, answer, steps);
let result2: Array<any> = this.moveLeft(i, matrix, answer, steps);
let result3: Array<any> = this.moveRight(i, matrix, answer, steps);
if (result1) {
return result1;
}
if (result2) {
return result2;
}
if (result0) {
return result0;
}
if (result3) {
return result3;
}
}
}
return null;
}
private moveRight(i: number, matrix: Array<number>, answer: Array<any>, steps: Array<any>): Array<any> {
let line: number = i % this.mLine;
let row: number = Math.floor(i / this.mLine);
if (line + 1 >= this.mLine) return null; //
let targetIndex: number = row * this.mLine + (line + 1);
if ( matrix[targetIndex] != -1) return null; //
//
//
//
let newMatrix: Array<number> = JSON.parse(JSON.stringify(matrix));
let newAnswer: Array<any> = JSON.parse(JSON.stringify(answer));
//
let temp: number = newMatrix[i];
newMatrix[i] = newMatrix[targetIndex];
newMatrix[targetIndex] = temp;
newAnswer.push({ "index": i, "dic": 3 });
if (this.checkIsExist(newMatrix)) {
return null;
}
if (this.checkPass(newMatrix)) {
return newAnswer;
}
let step: any = {};
step["matrix"] = newMatrix;
step["answer"] = newAnswer;
steps.push(step);
}
/**
*
*/
private checkPass(matrix: Array<number>): boolean {
if (matrix[this.mRow * this.mLine - 1] != -1) return false;
for (let i = 0; i < this.mRow * this.mLine - 1; i++) {
if (matrix[i] != i + 1) {
return false;
}
}
console.log(matrix)
return true;
}
/**
*
*/
private checkIsExist(matrix): boolean {
if (this.mMapMatrixS[JSON.stringify(matrix)]) {
return true;
}
this.mMapMatrixS[JSON.stringify(matrix)] ="1";
return false;
}
4.주의demo 는 3*3 의 배열 로 브 라 우 저 를 사용 하면 결 과 를 겨우 뛰 어 넘 을 수 있 지만 4*4 또는 5*5 는 안 됩 니 다.분기 가 너무 많 기 때 문 입 니 다.나중에 시간 이 있 으 면 초보 자 는 python 스 크 립 트 로 4*4,5*5 이상 의 배열 을 실현 하여 json 관문 정 보 를 내 보 냅 니 다.
이상 은 바로 CocosCreator 화 용도 디지털 퍼 즐 의 상세 한 내용 입 니 다.CocosCreator 화 용도 에 관 한 자 료 는 저희 의 다른 관련 글 을 주목 해 주 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
게임 발전 사 (Shell 디지털 게임)원래 셸 스 크 립 트 연습 자 를 쓰 려 고 했 는데 갑자기 궁금 해서 디지털 게임 을 해 보 려 고 했 습 니 다. 가장 먼저 가장 원시 적 인 디지털 스 크 립 트 를 썼 습 니 다. 기능 이 든 미관 도 든 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.