jsでシンプルなパズルゲームを実現する

jsでシンプルなパズルゲームを実現する

この記事では、簡単なパズルゲームを実装するためのjsの具体的なコードを参考までに共有します。具体的な内容は次のとおりです。

ゲームは非常にシンプルで、パズルを組み立てて、マウスでピースをドラッグして別のピースと交換するだけです。言語はHTML+jsです。コメントが分からない場合はメッセージを残して質問してください。

スクリーンショット

コードエリア

<!DOCTYPE html>
<html>
 <ヘッド>
  <メタ文字セット="utf-8">
  <タイトル></タイトル>
 </head>
 <スタイル タイプ="text/css">
  div{
   幅: 200ピクセル;
   高さ: 200px;
   
  }
  .tu{
   背景画像:url(anni.jpg);
   }
  //background-position を使用して各 div に異なる画像を追加します。つまり、9 つの div で完全な画像が形成されます。
  #z-1{
   背景位置: 0px 0px;
  }
  #z-2{
   背景位置:-200px 0px;
  }
  #z-3{
   背景位置:-400px 0px;
  }
  #z-4{
   背景位置:0 -200px;
  }
  #z-5{
   背景位置: -200px -200px;
  }
  #z-6{
   背景位置: -400px -200px;
  }
  #z-7{
   背景位置: 0px -400px;
  }
  #z-8{
   背景位置: -200px -400px;
  }
  #z-9{
   背景位置: -400px -400px;
  }
 </スタイル>
 <スクリプト>
 //ドラッグ後に 2 つの画像の交換を完了します。
  関数オーバー(e){
   e.preventDefault(); //デフォルトを防止}
  // グラブ関数drag(e){
   var id = e.target.id;
   // コンソールログ(e.target.id);
   e.dataTransfer.setData("id",id);//送信するキャプチャされた ID を設定します。
  }
  //関数drop(e)の後{
   var beizhuaId=e.dataTransfer.getData("id");// キャプチャした ID を受け入れます。
   // console.log(beizhuaId); // 逮捕された人物のID
   var fangID=e.target.id;//場所のID;
   var beizhua=document.getElementById(beizhuaId);//キャプチャしたオブジェクトを取得します。
   var fang=document.getElementById(fangID);//解放するオブジェクトを取得します。
   var f_beizhua=beizhua.parentNode;//対応する親ノードを検索します var f_fang=fang.parentNode;
   //sonsf_beizhua.appendChild(fang) を交換する。
   f_fang.appendChild(beizhua);
   勝つ();
   }
   // 勝敗判定方法。親と子の ID 名に同じシリアル番号が付けられ、ループしてカウントを累積します。
   関数win(){
    var tus = document.getElementsByClassName('tu');
    var count=0;
    for(var i=0;i<tus.length;i++){
     var tu = tus[i];
     var fu = tu.parentNode;
     var tu_id=tu.getAttribute("id");
     var fu_id=fu.getAttribute("id");
     if(tu_id.replace("z-","")==fu_id.replace("f-","")){
      カウント++;
      console.log(カウント);
     }それ以外{
      戻る;
     }
    }
    
    if(count==9){
     alert("あなたの勝ちです!");
    }
    
   }
   // ボタンをスクランブルします。乱数を生成します。appenChild メソッドを使用して複数回スワップします。これがスクランブルです。
   関数 daluan(){
    (var i=0;i<100;i++){
    var tus = document.getElementsByClassName('tu');
    var m = parseInt (Math.random() * 9);
    var n = parseInt(Math.random() * 9);
    var tusmp=tus[m].parentNode;
    var tusnp=tus[n].parentNode;
    tusmp.appendChild(tus[n]);
    tusnp.appendChild(tus[m]);
    }
   }
 </スクリプト>
 <本文>
  <表の境界線="1">
   <tr>
    <td>
     <div id="f-1" ondragover="over(イベント)" ondrop="drop(イベント)">
      <div id="z-1" class="tu" draggable="true" ondragstart="ドラッグ(イベント)"></div>
     </div>
    </td>
    <td>
     <div id="f-2" ondragover="over(イベント)" ondrop="drop(イベント)">
      <div id="z-2" class="tu" draggable="true" ondragstart="ドラッグ(イベント)"></div>
     </div>
    </td>
    <td>
     <div id="f-3" ondragover="オーバー(イベント)" ondrop="ドロップ(イベント)">
      <div id="z-3" class="tu" draggable="true" ondragstart="ドラッグ(イベント)"></div>
     </div>
    </td>
   </tr>
   <tr>
    <td>
     <div id="f-4" ondragover="オーバー(イベント)" ondrop="ドロップ(イベント)">
      <div id="z-4" class="tu" draggable="true" ondragstart="ドラッグ(イベント)"></div>
     </div>
    </td>
    <td>
     <div id="f-5" ondragover="オーバー(イベント)" ondrop="ドロップ(イベント)">
      <div id="z-5" class="tu" draggable="true" ondragstart="ドラッグ(イベント)"></div>
     </div>
    </td>
    <td>
     <div id="f-6" ondragover="オーバー(イベント)" ondrop="ドロップ(イベント)">
      <div id="z-6" class="tu" draggable="true" ondragstart="ドラッグ(イベント)"></div>
     </div>
    </td>
   </tr>
   <tr>
    <td>
     <div id="f-7" ondragover="over(イベント)" ondrop="drop(イベント)">
      <div id="z-7" class="tu" draggable="true" ondragstart="ドラッグ(イベント)"></div>
     </div>
    </td>
    <td>
     <div id="f-8" ondragover="over(イベント)" ondrop="drop(イベント)">
      <div id="z-8" class="tu" draggable="true" ondragstart="ドラッグ(イベント)"></div>
     </div>
    </td>
    <td>
     <div id="f-9" ondragover="over(イベント)" ondrop="drop(イベント)">
      <div id="z-9" class="tu" draggable="true" ondragstart="ドラッグ(イベント)"></div>
     </div>
    </td>
   </tr>

  </テーブル>
  <input type="button" value="シャッフル" onclick="daluan()" />
 </本文>
</html>

結論

内容は非常に少なく、論理もそれほど強力ではありませんが、アイデアは明確である必要があります。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • js+ca​​nvasはスライディングパズルの検証コードの機能を実現します
  • JSはPC・モバイル端末と埋め込み型スライドパズルの検証コードの3つの効果を実現
  • jsは9マスパズルゲームを実現します
  • JS はモバイル ジグソーパズル ゲームを迅速に実装します
  • JS ジグソーパズル ゲームはオブジェクト指向で、完全にコメントされています。
  • js+html5で携帯電話で遊べるジグソーパズルゲームを実現
  • JSで書かれたデジタルパズルゲームコード[学習参考]
  • JSはスライディングパズル検証機能の完全な例を実装します
  • Node.js を使ってスライディングパズルの検証コードの動作をシミュレートするサンプルコード
  • 絵パズル記憶力テストゲーム、Web + JS バージョン

<<:  nginx をシャットダウン/再起動/起動する方法

>>:  MySQLクエリ条件の一般的な使用法の詳細な説明

推薦する

CSS3 フィルター (フィルタ) ウェブページのグレーまたは黒モードのサンプルコードを実現

フロントエンドcss3 フィルターは、Web ページのグレー効果を実現できるだけでなく、ナイト モー...

Linux 上の Nginx に複数のバージョンの PHP をインストールする

サーバーの LNPM 環境をインストールして構成する場合、複数のバージョンの PHP の共存を考慮す...

MySQLの日付と時刻関数の使用の概要

この記事はMySQL 8.0に基づいていますこの記事では、日付と時刻の操作のための MySQL 関数...

CSS3 ベジェ曲線の例: リンクホバーアニメーション効果の作成

CSS3 アニメーション トランジションを使用して、リンクの上にマウスを移動すると小さなポップアップ...

Nest.js のハッシュと暗号化の例の詳細な説明

0x0 はじめにまず、ハッシュアルゴリズムとは何でしょうか?メッセージやセッション項目など、一部のデ...

Linux でのプロセスデーモン スーパーバイザーのインストール、構成、および使用

Supervisor は非常に優れたデーモン管理ツールです。自動起動、ログ出力、自動ログカットなど、...

Vue のルータールーティングの 2 つのモード (ハッシュと履歴) の詳細な説明

ハッシュモード(デフォルト)動作原理:ウェブページのハッシュ値の変化を監視する—> onhas...

Vue3 における provide と inject の使用法と原則

序文:親コンポーネントと子コンポーネント間でデータを渡す場合、通常は props と emittin...

CSS を解析して画像のテーマカラー機能を抽出する (ヒント)

背景すべては、WeChat 技術グループのクラスメートが「写真の主な色を取得する方法はあるか」と尋ね...

MySQLがフルテーブルスキャンを実行するいくつかの状況

目次ケース1:ケース2:ケース3:簡単にまとめると:過去 2 日間で、完全なテーブル スキャンを引き...

Docker を使用して ELK 環境を迅速にデプロイする方法の詳細な説明 (最新バージョン 5.5.1)

Linux サーバーに Docker をインストールした後、関連する公式 Docker イメージを...

複数の値を返す MySQL ストアド プロシージャ メソッドの例

この記事では、例を使用して、MySQL ストアド プロシージャで複数の値を返す方法について説明します...

Vue で PC アドレスをモバイル アドレスにリダイレクトする方法

要件:PC側とモバイル側は2つの独立したプロジェクトです。2つのプロジェクトの内容は基本的に同じで、...

Vue の新しい組み込みコンポーネントの使用方法の詳細な説明

目次1. テレポート1.1 テレポートの紹介1.2 テレポートの使用1.3 プレビュー効果2. サス...

Dockerが独自のローカルイメージリポジトリを構築するための手順

1. 環境と準備1. Ubuntu 14.04 2.Docker環境2. 建設プロセス1. ミラーソ...