マインスイーパゲームを実装するための jQuery プラグイン (2)

マインスイーパゲームを実装するための jQuery プラグイン (2)

この記事では、jQueryプラグインを使用してマインスイーパゲームを実装する2番目の記事を参考までに共有します。具体的な内容は次のとおりです。

必要な手続きを完了する

効果は以下のとおりです

コードセクション

* {
 マージン: 0px;
 パディング: 0px;
 フォントサイズ: 12px;
}

#div {
 位置: 固定;
 上: 10px;
 下: 10px;
 左: 10px;
 右: 10px;
 境界線: 1px 実線のライトグレー;
 境界線の半径: 5px;
 ディスプレイ: フレックス;
 コンテンツの中央揃え: 中央;
 アイテムの位置を中央揃えにします。
 オーバーフロー: 非表示;
}

#箱 {
 境界線: 1px 実線のライトグレー;
 境界線の半径: 5px;
}

。行 {
 空白: ラップなし;
 高さ: 30px;
}

。アイテム {
 ディスプレイ: インラインフレックス;
 コンテンツの中央揃え: 中央;
 アイテムの位置を中央揃えにします。
 高さ: 30px;
 幅: 30ピクセル;
 右境界線: 1px 実線ライトグレー;
 border-bottom: 1px 実線ライトグレー;
 カーソル: ポインタ;
 位置: 相対的;
}
.item.num1::after{
 内容: '1';
 色: #1abc9c;
 位置: 絶対;
 上: 0;
 下部: 0;
 左: 0;
 右:0;
 ディスプレイ: フレックス;
 コンテンツの中央揃え: 中央;
 アイテムの位置を中央揃えにします。
 zインデックス: 2;
}
.item.num2::after{
 内容: '2';
 色: #2ecc71;
 位置: 絶対;
 上: 0;
 下部: 0;
 左: 0;
 右:0;
 ディスプレイ: フレックス;
 コンテンツの中央揃え: 中央;
 アイテムの位置を中央揃えにします。
 zインデックス: 2;
}
.item.num3::after{
 内容: '3';
 色: #3498db;
 位置: 絶対;
 上: 0;
 下部: 0;
 左: 0;
 右:0;
 ディスプレイ: フレックス;
 コンテンツの中央揃え: 中央;
 アイテムの位置を中央揃えにします。
 zインデックス: 2;
}
.item.num4::after{
 内容: '4';
 色: #9b59b6;
 位置: 絶対;
 上: 0;
 下部: 0;
 左: 0;
 右:0;
 ディスプレイ: フレックス;
 コンテンツの中央揃え: 中央;
 アイテムの位置を中央揃えにします。
 zインデックス: 2;
}
.item.num5::after{
 内容: '5';
 色: #f1c40f;
 位置: 絶対;
 上: 0;
 下部: 0;
 左: 0;
 右:0;
 ディスプレイ: フレックス;
 コンテンツの中央揃え: 中央;
 アイテムの位置を中央揃えにします。
 zインデックス: 2;
}
.item.num6::after{
 内容: '6';
 色: #e67e22;
 位置: 絶対;
 上: 0;
 下部: 0;
 左: 0;
 右:0;
 ディスプレイ: フレックス;
 コンテンツの中央揃え: 中央;
 アイテムの位置を中央揃えにします。
 zインデックス: 2;
}
.item.num7::after{
 内容: '7';
 色: #e74c3c;
 位置: 絶対;
 上: 0;
 下部: 0;
 左: 0;
 右:0;
 ディスプレイ: フレックス;
 コンテンツの中央揃え: 中央;
 アイテムの位置を中央揃えにします。
 zインデックス: 2;
}
.item.num8::after{
 内容: '8';
 色: #34495e;
 位置: 絶対;
 上: 0;
 下部: 0;
 左: 0;
 右:0;
 ディスプレイ: フレックス;
 コンテンツの中央揃え: 中央;
 アイテムの位置を中央揃えにします。
 zインデックス: 2;
}
.item.boom{
 背景画像: url(../img/boom.png);
 背景サイズ: 60% 60%;
 背景繰り返し: 繰り返しなし;
 背景の位置: 中央 中央;
}
.item::before{
 位置: 絶対;
 コンテンツ: '';
 上: 0.5px;
 左:0.5px;
 下: 0.5px;
 右: 0.5px;
 背景色: グレー;
 zインデックス: 3;
}
.item.click::before{
 内容: なし;
}
.item:ホバー{
 アウトライン: 1px 実線 #2c3e50;
}

#メニュー{
 border-bottom: 1px 実線ライトグレー;
 位置: 絶対;
 上: 0;
 左: 0;
 右: 0;
 高さ: 30px;
 ディスプレイ: フレックス;
 背景色: 白;
 zインデックス: 10;
}
.mitem{
 フレックス: 1;
 ディスプレイ: フレックス;
 コンテンツの中央揃え: 中央;
 アイテムの位置を中央揃えにします。
}
.sl{
 境界線: なし;
 border-bottom: 1px 実線ライトグレー;
 アウトライン: なし;
 幅: 60%;
 高さ: 80%;
}
.btn{
 境界線: なし;
 境界線: 1px 実線のライトグレー;
 アウトライン: なし;
 幅: 60%;
 高さ: 80%;
 背景色: 透明;
 カーソル: ポインタ;
}
.mitem *:hover{
 背景色: ライトグレー;
}

```javascript
$(ドキュメント).ready(関数() {
 var x = 10; //x軸var y = 10; //y軸var c = 10; //爆弾の数var boom = []; //爆弾を生成する座標var $menu = $("#menu");
 var $box = $("#box");




 //同期パラメータ $("#x").change(function() {
  x = parseInt($(this).val());
  コンソールログ(x);
 })
 $("#y").change(関数() {
  y = parseInt($(this).val());
 })
 $("#c").change(関数() {
  c = parseInt($(this).val());
 })
 $(document).on('click', '#box .item', function() {
  $(this).addClass("クリック");
 })
 $("#pro").click(function() {
  コンソールログ(x,y,c)
  描く();
  draw(); // booms(); // 爆弾パラメータを生成する drawbooms(); // 爆弾を描画する drewum(); // すべてのブロックを走査し、プロンプトを生成する })
 draw();// booms();//爆弾のパラメータを生成 drawbooms();//爆弾を描画 drewum();//すべてのブロックを走査し、プロンプトを生成 function draw() { //画像を描画 $box.html('');
  (var a = 0; a < x; a++) の場合 {
   var $row = $("<div class='row'></div>");
   (var b = 0; b < y; b++) の場合 {
    var $item = $("<div class='item' data-x='"+a+"' data-y='"+b+"'></div>");
    $item.appendTo($row);
   }
   $行を追加します($ボックス);
  }
 }
 関数drawnum(){
  (var a = 0;a<x;a++){
   (var b = 0;b<y;b++){
    var pos = {x:a,y:b};
    // この座標の周りの状況を走査して爆弾がいくつあるかを確認します var s = getscore(pos);
    if(s!=0&&!$dom(pos).hasClass('boom')){
     $dom(pos).addClass('num'+s);
    }
   }
  }
 }
 関数 getscore(p){
  var インデックス = 0;
  var s1 = boom.find(n=>nx==(px-1)&&n.y==(py-1))
  var s2 = boom.find(n=>nx==(px)&&n.y==(py-1))
  var s3 = boom.find(n=>nx==(p.x+1)&&n.y==(py-1))
  var s4 = boom.find(n=>nx==(px-1)&&n.y==(p.y+1))
  var s5 = boom.find(n=>nx==(px)&&n.y==(p.y+1))
  var s6 = boom.find(n=>nx==(p.x+1)&&n.y==(p.y+1))
  var s7 = boom.find(n=>nx==(px-1)&&n.y==(py))
  var s8 = boom.find(n=>nx==(p.x+1)&&n.y==(py))
  if(s1){インデックス++;}
  if(s2){インデックス++;}
  if(s3){インデックス++;}
  if(s4){インデックス++;}
  if(s5){インデックス++;}
  if(s6){インデックス++;}
  if(s7){インデックス++;}
  if(s8){インデックス++;}
  インデックスを返します。
 }
 関数drawbooms(){
  boom.forEach(item=>{
   $dom(item).addClass('boom');
  })
 }
 function booms(){//爆弾パラメータをランダムに生成 var arr = [];
  (arr.length<c){
   var pos = {x:Math.floor(Math.random()*x),y:Math.floor(Math.random()*y)};
   var temp = arr.find(n=>nx==pos.x&&n.y==pos.y);
   if(!temp){
    arr.push(位置);
   }
  }
  ブーム = arr;
 }
 関数 $dom(pos){
  戻り値 $("[data-x='"+pos.x+"'][data-y='"+pos.y+"']");
 }
})

**考えを説明する**

- ゲームのパラメータがデジタル化されているため、後続の機能の作成が容易になります
- 次に爆弾として使用する画像を見つけ、疑似クラスを使用して対応する数字プロンプト効果を作成しました
- この数字は、掃海艇の近くにあるものが何種類あるかという統計によって生成されます。 すでに座標系に変換してあるので、近くの座標系を確認するだけです。
- 次は関連する効果です。どのように行うか見てみましょう。

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

以下もご興味があるかもしれません:
  • マインスイーパゲームを実装するための jQuery プラグイン (3)
  • マインスイーパゲームを実装するための jQuery プラグイン (1)
  • jQueryはマインスイーパゲームを実装します

<<:  Linux に nginx をインストールする方法

>>:  MySQL 5.7.15 バージョンのインストールと設定方法のグラフィックチュートリアル

推薦する

Linux環境でのDockerインストールチュートリアル

1. 設置環境Dockerは次のCentOSバージョンをサポートしていますCentOS 6.5 (6...

Homebrewを使用してMacにMySQLをインストールするときにログインできない問題を解決する

お使いのコンピュータが Mac の場合、homebrew を使用して MySQL をインストールする...

MySQL ページング中にオフセットが大きすぎる場合の SQL 最適化の経験の共有

問題を見つけるコンテンツをリストで表示すると、リスト内のコンテンツの数は多いかもしれませんが、ユーザ...

動的および静的分離を実現する nginx のサンプルコード

1. nginxの動的と静的の分離の簡単な設定web1は静的サーバー、web2は動的サーバー、nod...

HTML テーブルの行間隔を変更する方法の例

HTML テーブルを使用する場合、行間隔を変更する必要がある場合がありますが、余白、パディング、折り...

CSS変換ページめくりアニメーションレコードの実装

ページめくりの問題のシナリオBとCは同じページ(表と裏)にありますページをめくって A をカバーした...

HTML ページ ヘッダー コード例の詳細な説明

知識ポイント1: ヘッダー情報にWebページのベースURLを設定するベース URL の本質は、ハイパ...

Mysql関数呼び出しの最適化の詳細な説明

目次関数呼び出しの最適化関数呼び出しの最適化MySQL 関数は、内部的に決定論的または非決定論的とし...

CentOS での samba フォルダ共有サーバー構成の詳細な説明

1. はじめに最近、CentOS での開発には多くの不便があることがわかりました。Windows/M...

MySQL 8.0.20 インストール チュートリアル (画像とテキスト付き) (Windows 64 ビット)

1: mysql公式サイトからダウンロードhttps://dev.mysql.com/downlo...

シンプルなウェブデザインコンセプトのカラーマッチング

(I)ウェブページのカラーマッチングの基本概念(1)白黒の言葉は永遠のテーマです。誰もそれを悪く言う...

Tomcat のメモリ構成の正しい姿勢についての簡単な説明

1. 背景多くのブログや記事を読みましたが、JVM のメモリ割り当て方法に関する包括的な記事は見つか...

Windowsにmysql5.7をインストールする方法

まずmysqlの圧縮バージョンをダウンロードします。公式ダウンロードアドレスは123WORDPRES...

MySQL は低速クエリを可能にします (EXPLAIN SQL ステートメントの使用の概要)

今日、データベース操作はますますアプリケーション全体のパフォーマンスのボトルネックになりつつあり、こ...

ウェブページの最も基本的なコード

◆お気に入りに追加例示するクリックすると、ブラウザのお気に入りメニューにウェブサイトが追加されます...