序文華容路とは何ですか? 誰もがこのような数字パズルゲームで遊んだことがあると思います。華容路の典型的な例です。 華容道は中国古来の民間パズルゲームで、その豊富なバリエーションと飽きのこない特徴から、ルービックキューブや独立ダイヤモンドチェスとともに、海外の情報専門家から「知的ゲーム界の三大奇観」と呼ばれています。 今日は華容路について学びます。 文章今日は主に 3*3 レイアウトを使用します。初心者が cocos クリエイターを使用して簡単なデモを作成しました。順を追って説明しましょう。 1. パネルまず、パネルの配置をランダムに生成します 2. 華容島ソリューションアイデア: 徹底的な方法: このゲームの遊び方は誰でも知っています。スライドする四角形をスライドし、シャッフルされた四角形を数字に従って小さいものから大きいものの順に並べてレベルをクリアします。ここで、初心者は網羅的な方法を使用して、考えられるあらゆる状況で最適な解決策を見つけます。 網羅的方法では、次のようなことがよく見られます。
ここでは幅優先探索を使用し、最適なソリューション、つまりステップ数が最も少ないソリューションを取得することだけが必要です。 最初の 3 つのステップを例に挙げてみましょう。
理解した後、それをデモに適用して、レベルをクリアできるかどうかをテストできます。 デモの自動配置をクリックします 3. コード//ソリューションをループする while (true) { ステップ: Array<any> = []; lastGrad: Array<any> = this.mMapData[this.mMapData.length - 1] とします。 コンソールにログ出力します。 //最後の勾配のすべての結果を走査し、次のステップを解きます for (let i = 0; i < lastGrad.length; i++) { 行列を lastGrad[i]["行列"] とします。 答えをlastGrad[i]["答え"]とします。 結果: Array<any> = this.move(matrix, answer, steps); if (結果) { console.log("結果:", 結果); 解決(結果); 戻る; } } ステップの長さ<=0の場合{ console.log("クエリ結果が失敗しました。"); 解決(null); 戻る; } this.mMapData.push(ステップ); } プライベートmove(matrix: Array<number>, answer: Array<any>, steps: Array<any>): Array<any> { (i = 0 とします; i < matrix.length; i++) { if (matrix[i] != -1) { // 空のスペースではないので、移動可能かどうかを確認し、移動可能な結果を取得します // 上下左右に移動できるかどうかを確認します。 result0: Array<any> = this.moveUp(i, matrix, answer, steps); とします。 result1: Array<any> = this.moveDown(i, matrix, answer, steps); とします。 result2: Array<any> = this.moveLeft(i, matrix, answer, steps); とします。 result3: Array<any> = this.moveRight(i, matrix, answer, steps); とします。 if (結果1) { 結果1を返します。 } if (結果2) { 結果2を返します。 } if (結果0) { 結果0を返します。 } if (結果3) { 結果3を返します。 } } } null を返します。 } プライベートmoveRight(i: number, matrix: Array<number>, answer: Array<any>, steps: Array<any>): Array<any> { 行番号を i % this.mLine とします。 行番号を 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)); newAnswer: Array<any> = JSON.parse(JSON.stringify(answer)); を作成します。 // ポジションを交換 let temp: number = newMatrix[i]; 新しいマトリックス[i] = 新しいマトリックス[ターゲットインデックス]; newMatrix[ターゲットインデックス] = temp; newAnswer.push({ "index": i, "dic": 3 }); (this.checkIsExist(newMatrix))の場合{ null を返します。 } (this.checkPass(newMatrix))の場合{ 新しい回答を返します。 } ステップ: any = {}; ステップ["行列"] = newMatrix; ステップ["回答"] = newAnswer; ステップをプッシュします。 } /** * クリアされているか確認してください*/ プライベートcheckPass(matrix: Array<number>): boolean { (matrix[this.mRow * this.mLine - 1] != -1) の場合は false を返します。 (i = 0 とします; i < this.mRow * this.mLine - 1; i++) { (行列[i] != i + 1)の場合{ false を返します。 } } コンソール.log(マトリックス) true を返します。 } /** * 重複していないか確認する */ プライベートcheckIsExist(行列): ブール値{ (this.mMapMatrixS[JSON.stringify(matrix)]) の場合 { true を返します。 } this.mMapMatrixS[JSON.stringify(matrix)] = "1"; false を返します。 } 4. 注記デモでは 3 * 3 の配置が示されており、これはブラウザを使用して実行できますが、4 * 4 または 5 * 5 は分岐が多すぎるため実行できません。後ほど、Python スクリプトを使用して 4 * 4、5 * 5 以上の配置を実装し、最後に JSON レベルの情報をエクスポートします。 以上がCocosCreator Huarongdaoデジタルパズルの詳しい説明です。CocosCreator Huarongdaoの詳細については、123WORDPRESS.COMの他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: Centos7 での Mysql5.7.19 の詳細なインストールチュートリアル
>>: 元のPATHを上書きしてコマンドが見つからないというメッセージが表示されるコマンド失敗の問題を解決する方法
目次1. 適用メソッドを置き換え、関数を呼び出すときにパラメータを処理する2. 残りパラメータ(残り...
環境: VMware VCSA 6.7 (VMware-VCSA-all-6.7.0-8169922...
mysql maxとwhereの間の実行の問題SQLを実行します: テーブル「grades」を作成し...
1. HTMLの概要1.HTML: ハイパーテキスト マークアップ言語。これはプログラミング言語では...
目次キャンバス関連文書エフェクト画像表示ケースの完全なコード親コンポーネントコードサブコンポーネント...
1. はじめにtr はテキストの一部を変換または削除するために使用されます。 tr は transl...
この記事では、divのドラッグ可能な高さを実現するためのVueの具体的なコードを参考までに共有します...
私たちが構築しようとしていたウェブサイトには、長い文章だけでなく、多数の表も含まれており、表のレイア...
MySQL でテーブルスペースの断片化を解消する詳細な例断片化の原因(1)テーブルのストレージは断片...
[mysql] replace の使用方法 (フィールドの内容の一部を置き換える) [mysql]...
文章のスタイルでは、このような状況がよく見られます コードは次のとおりです <div styl...
目次1. コンポーネントの登録1.1 グローバル登録1.2 グローバルコンポーネントの登録プロセス1...
Unicode 署名 BOM - BOM とは何ですか? BOM は Byte Order Mark...
目次概要1. バックエンドデータの取得と処理2. インターフェース表示処理概要前回のエッセイ「ステッ...
昨日は遅くまで寝ていて、一日中起きていました。私の年齢では、夜更かしして本を書くのはもう無理のようで...