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

推薦する

MySQLはイベントを使用してスケジュールされたタスクを完了します

イベントでは、SQL コードを 1 回または一定の間隔で実行することを指定できます。通常、複雑な S...

MySQL 8.0.12 クイックインストールチュートリアル

MySQL 8.0.12 のインストールには 2 日かかり、さまざまな問題が発生しました。以下にまと...

アプレットにおけるwx.getUserProfileインターフェースの具体的な使用

最近、WeChatミニプログラムは、監査ミニプログラムのwx.loginおよびwx.getUserI...

jQueryとCSSを組み合わせてトップに戻る機能を実現

CSS操作 CS $("").css(名前|プロ|[,値|関数]) 位置$(&q...

HTML をホームページとして設定し、お気に入りに追加_Powernode Java Academy

IE ブラウザで「ホームページとして設定」および「お気に入りに追加」機能を実装する方法解決:指定さ...

CSSは親要素の下の最初の子要素を選択します(:first-child)

序文最近、プロジェクトで :first-child を使用したのですが、すぐに思いつきました。これは...

VirtualBox に CentOS、JDK、Hadoop をインストールする詳細なチュートリアル

目次1. 前提条件1.1 サポートされているプラ​​ットフォーム1.2 jdk および hadoop...

Vue.js でフォントを読み込む正しい方法

目次font-faceでフォントを正しく宣言するフォントをプリロードするフォントをホストするにはli...

Webフロントエンドツール、Sublime Text 2の紹介

Sublime Text 2 は、軽量でシンプル、効率的なクロスプラットフォーム エディターです。ブ...

Vue+echarts でプログレスバーのヒストグラムを実現

この記事では、プログレスバーヒストグラムを実現するためのvue+echartsの具体的なコードを参考...

Reactのコンテキストとプロパティの説明

目次1. 文脈1. 使用シナリオ2. 使用手順3. 結論2. 小道具の詳細1. 子供の財産2. 小道...

Centos7にGitLabサーバーをインストールして展開する方法

私はここでCentOS 7 64ビットシステムを使用しています。CentOS 64ビットシステムを試...

Linux の MariaDB データベースについて

目次Linux の MariaDB データベースについて1. データベースとは何ですか? 2. デー...

Windows システムに MySQL を素早くインストールして展開する方法 (グリーンの無料インストール バージョン)

まずは緑色の無料インストール版のMySQLをダウンロードします。任意のフォルダに入れて構いません。今...

DockerはホストのMysql操作に接続します

今日、会社のプロジェクトでは docker を設定する必要があります。Windows に正常にインス...