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クエリ条件の一般的な使用法の詳細な説明

推薦する

クールな充電アニメーションを実現する純粋なCSS

CSS のみを使用してどのような充電アニメーション効果を作成できるかを見てみましょう。バッテリーを...

MySQL binlog を開く手順

Binlog は、MySQL データの変更を記録するために使用されるバイナリ ログ ファイルです。B...

Baota LinuxパネルにFTP接続できない問題の解決方法の詳細な説明

Alibaba Cloud Server を使用している場合は、セキュリティ グループ設定でポート ...

MySQL 5.5 の導入に関する問題

MySQL の導入現在、会社ではプラットフォーム運用を通じてMySQLを導入しています。金曜日、プラ...

Linux環境にRedisをデプロイし、Dockerにインストールする方法

インストール手順1. Redisをインストールするdocker search redis和docke...

ショートビデオ(Douyin)の透かし除去ツールの実装コード

目次1. まず最初のリンクを取得する2. ブラウザでこのリンクを開いてください3. アドレスを開くと...

HTML およびプラグイン アプリケーションにおけるデータ カスタム属性の使用の概要

HTML にはデータ属性が含まれていることがよくあります。これらは HTML5 のカスタム属性です。...

ウェブページの読みやすさを向上させるいくつかの方法

1. 対照的な色を使用します。ここでのコントラストとは、テキストの色と背景色のコントラストを指します...

Dockerコンテナはルーティングを介して直接通信し、ネットワーク通信を実現します。

概要Docker 自体の現在のデフォルト ネットワークについては、単一ホスト上の異なる Docker...

Windows サーバー ファイルをローカルにバックアップする方法、Windows サーバー データ バックアップ ソリューション

重要なデータはバックアップする必要があり、リアルタイムでバックアップする必要があります。そうしないと...

CSS フレックスレイアウトのリストの最後の行を左揃えにする N 通りの方法 (要約)

張新旭氏の記事を引用して皆さんにシェアしたいと思います。 変更を加えたい場合は、対応する画像によって...

Excel をインポートするときに js で時間を変換する正しい方法について

目次1. 基本2. 問題の説明3. 解決策付録: js を使用して Excel の日付形式を変換する...

ウェブページを白黒に変換します(Google、Firefox、IE、その他のブラウザと互換性があります)

CSSファイルに書き込むコードをコピーコードは次のとおりです。 01.html {グレイスケール(1...

Docker は次の「Linux」になれるか?

Linux オペレーティング システムは過去 20 年間にわたってデータ センターに革命をもたらし...