{"id":1852,"date":"2023-12-08T11:15:29","date_gmt":"2023-12-08T02:15:29","guid":{"rendered":"http:\/\/biochemistry.isc.chubu.ac.jp\/labo\/suzuki\/?p=1852"},"modified":"2023-12-08T11:15:29","modified_gmt":"2023-12-08T02:15:29","slug":"post-1852","status":"publish","type":"post","link":"http:\/\/biochemistry.isc.chubu.ac.jp\/labo\/suzuki\/archives\/1852","title":{"rendered":"Javascript\u3067\u30de\u30a4\u30f3\u30b9\u30a4\u30fc\u30d1\u30fc\u3092\u3064\u304f\u308b \u7b2c1\u56de"},"content":{"rendered":"<p>\u6614\u306eWindows\u306b\u306f\u6a19\u6e96\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u305f\u30de\u30a4\u30f3\u30b9\u30a4\u30fc\u30d1\u30fc\u3092Javascript\u3067\u3064\u304f\u308a\u307e\u3059\u3002<\/p>\n<h2>\u5fc5\u8981\u306a\u3082\u306e<\/h2>\n<h4>jQuery<\/h4>\n<h2>HTML\u3068CSS\u3067\u30b2\u30fc\u30e0\u753b\u9762\u3092\u30c7\u30b6\u30a4\u30f3\u3059\u308b<\/h2>\n<p>\u30de\u30a4\u30f3\u30b9\u30a4\u30fc\u30d1\u30fc\u306e\u30af\u30ea\u30c3\u30af\u3057\u3066\u958b\u3044\u3066\u3044\u304f\u30de\u30b9\u3092HTML\u306etable\u3067\u3064\u304f\u308a\u307e\u3059\u3002\u5730\u96f7\u3068\u304b\u30d2\u30f3\u30c8\u306e\u6570\u5b57\u306fcss\u306e\u30af\u30e9\u30b9\u3067\u8a2d\u5b9a\u3059\u308b\u3088\u3046\u306b\u3057\u3001Javascript\u3067\u306f\u305d\u308c\u3089\u3092\u8a2d\u5b9a\u30fb\u524a\u9664\u3059\u308b\u3053\u3068\u3067\u30b2\u30fc\u30e0\u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002<\/p>\n<h4>minesweeper1.html\u306e\u30bd\u30fc\u30b9<\/h4>\n<pre class='code'>&lt;!DOCTYPE HTML&gt;\r\n&lt;html&gt;\r\n&lt;head&gt;\r\n&lt;link rel=&#039;stylesheet&#039; href=&quot;minesweeper1.css&quot;&gt;\r\n&lt;body&gt;\r\n&lt;div id=&#039;game&#039;&gt;\r\n    Bomb: &lt;input id=&#039;bombs&#039; value=&#039;\u5730\u96f7\u6b8b\u308a&#039;&gt;\r\n    &lt;table id=&#039;board&#039;&gt;\r\n        &lt;tr&gt;\r\n            &lt;td class=&#039;cell close&#039;&gt;&lt;\/td&gt;\r\n            &lt;td class=&#039;cell open&#039;&gt;&lt;\/td&gt;\r\n            &lt;td class=&#039;cell close flag&#039;&gt;&lt;\/td&gt;\r\n        &lt;\/tr&gt;\r\n        &lt;tr&gt;\r\n            &lt;td class=&#039;cell open bomb&#039;&gt;&lt;\/td&gt;\r\n            &lt;td class=&#039;cell open hint0&#039;&gt;&lt;\/td&gt;\r\n            &lt;td class=&#039;cell open hint1&#039;&gt;1&lt;\/td&gt;\r\n        &lt;\/tr&gt;\r\n        &lt;tr&gt;\r\n            &lt;td class=&#039;cell open hint2&#039;&gt;2&lt;\/td&gt;\r\n            &lt;td class=&#039;cell open hint3&#039;&gt;3&lt;\/td&gt;\r\n            &lt;td class=&#039;cell open hint4&#039;&gt;4&lt;\/td&gt;\r\n        &lt;\/tr&gt;\r\n    &lt;\/table&gt;\r\n&lt;\/div&gt;\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;<\/pre>\n<h4>minesweeper.css\u306e\u30bd\u30fc\u30b9<\/h4>\n<p><pre class='code'>#board {\r\n    border-spacing: 1px;\t\/* \u30de\u30b9\u9593\u306e\u7dda *\/\r\n    background-color: black;\t\/* \u30de\u30b9\u9593\u306e\u7dda\u306e\u8272 *\/\r\n    border: 8px #ccc ridge;\r\n    border-radius: 4px;\r\n}\r\n\r\n#board td.cell {\r\n    width: 20px;\t\/* \u30de\u30b9\u306e\u5e45 *\/\r\n    height: 20px;\t\/* \u30de\u30b9\u306e\u9ad8\u3055 *\/\r\n    overflow: hidden;\r\n    background-color: #ccc;\r\n    padding: 0;\r\n    font-size: 13px;\t\/* \u30d2\u30f3\u30c8\u306e\u6570\u5b57\u306e\u5927\u304d\u3055\u3002\u30de\u30b9\u306e\u5927\u304d\u3055\u3092\u8d85\u3048\u306a\u3044\u3088\u3046\u306b\u3059\u308b\u3002 *\/\r\n    font-weight: bold;\r\n    text-align: center;\t\/* \u6587\u5b57\u306e\u4f4d\u7f6e *\/\r\n    vertical-align: middle;\r\n}\r\n\r\n#board td.close {\r\n    border: 4px #ccc outset;\t\/* outset\u3067\u30de\u30b9\u304c\u76db\u308a\u4e0a\u304c\u3063\u305f\u3088\u3046\u306b\u898b\u305b\u308b *\/\r\n}\r\n\/* \u5730\u96f7\u304c\u3042\u308b\u3053\u3068\u3092\u793a\u3059\u65d7 *\/\r\n#board td.flag {\r\n    background-color: yellow;\r\n    \/*\t\u753b\u50cf\u304c\u7528\u610f\u3067\u304d\u308b\u3068\u304d\r\n    background-image: url(&#039;flag.png&#039;);\r\n    *\/\r\n}\r\n\r\n#board td.open {\r\n    border: 4px #ccc solid;\t\/* \u958b\u3044\u305f\u3068\u304d\u306b\u3082\u30de\u30b9\u306e\u5927\u304d\u3055\u304c\u5909\u66f4\u3055\u308c\u306a\u3044\u3088\u3046\u306b\u80cc\u666f\u3068\u540c\u8272\u306e\u67a0\u3092\u3064\u304f\u308b *\/\r\n}\r\n\/* \u5730\u96f7\u306e\u8868\u793a *\/\r\n#board td.open.bomb {\r\n    background-color: red;\r\n    \/*\t\u753b\u50cf\u304c\u7528\u610f\u3067\u304d\u308b\u3068\u304d\r\n    background-image: url(&#039;bomb.png&#039;);\r\n    *\/\r\n    border-color: red;\t\/* \u67a0\u7dda\u306e\u5e45\u3092\u5909\u66f4\u3059\u308b\u5fc5\u8981\u304c\u306a\u3044\u306e\u3067border-color\u3067\u6307\u5b9a\u3059\u308b *\/\r\n}\r\n\/* \u30d2\u30f3\u30c8\u306e\u6570\u5b57 *\/\r\n#board td.open.hint0 {\r\n    background-color: blue;\r\n    border-color: blue;\r\n    color: blue;\r\n}\r\n#board td.open.hint1 {\r\n    color: blue;\r\n}\r\n#board td.open.hint2 {\r\n    color: green;\r\n}\r\n#board td.open.hint3 {\r\n    color: #dc143c;\r\n}\r\n\r\n\/* \u5730\u96f7\u306e\u6b8b\u308a\u3092\u8868\u793a\u3059\u308b\u30c6\u30ad\u30b9\u30c8\u30dc\u30c3\u30af\u30b9 *\/\r\n#bombs {\r\n    width: 3em;\r\n    text-align: right;\r\n}<\/pre><br \/>\n<a href=\"\/labo\/suzuki\/wp-content\/uploads\/1852\/minesweeper1.html\">\u4e0b\u306b\u8868\u793a\u3055\u308c\u306a\u3044\u3068\u304d\u306f\u3053\u3053\u3092\u30af\u30ea\u30c3\u30af(\u5225\u30a6\u30a3\u30f3\u30c9\u30a6\u304c\u958b\u304d\u307e\u3059)<\/a><br \/>\n<iframe src=\"\/labo\/suzuki\/wp-content\/uploads\/1852\/minesweeper1.html\" style=\"width: 100%; min-height: 150px;\"><\/iframe><\/p>\n<h2>Javascript\u3067\u30de\u30b9\u3092\u3064\u304f\u308b<\/h2>\n<p>\u305f\u304f\u3055\u3093\u306e\u30de\u30b9\u3092HTML\u3067\u3064\u304f\u308b\u306e\u306f\u9762\u5012\u3067\u3042\u308b\u3057\u3001\u6570\u306e\u5909\u66f4\u304c\u5bb9\u6613\u306b\u3067\u304d\u306a\u3044\u306e\u3067\u3001Javascript\u3092\u4f7f\u3046\u3002<br \/>\nHTML\u306e\u8981\u7d20\u3092\u7c21\u5358\u306b\u64cd\u4f5c\u3059\u308b\u305f\u3081\u306b\u306fjQuery\u3092\u4f7f\u3046\u3068\u3088\u3044\u3002<\/p>\n<h4>minesweeper2.html\u306e\u30bd\u30fc\u30b9<\/h4>\n<pre class='code'>&lt;!DOCTYPE HTML&gt;\r\n&lt;html&gt;\r\n&lt;head&gt;\r\n&lt;link rel=&#039;stylesheet&#039; href=&quot;minesweeper1.css&quot;&gt;\r\n&lt;!-- jQuery\u306e\u8aad\u8fbc --&gt;\r\n&lt;script src=&quot;https:\/\/ajax.googleapis.com\/ajax\/libs\/jquery\/3.6.0\/jquery.min.js&quot;&gt;&lt;\/script&gt;\r\n&lt;!-- \u30de\u30a4\u30f3\u30b9\u30a4\u30fc\u30d1\u30fc\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u672c\u4f53 --&gt;\r\n&lt;script type=&quot;text\/javascript&quot; src=&quot;minesweeper2.js&quot;&gt;&lt;\/script&gt;\r\n&lt;body&gt;\r\n&lt;div id=&#039;game&#039;&gt;\r\n    Bomb: &lt;input id=&#039;bombs&#039; value=&#039;\u5730\u96f7\u6b8b\u308a&#039;&gt;\r\n    &lt;!-- HTML\u306e\u8981\u7d20\u3092jQuery\u5074\u304b\u3089\u898b\u3064\u3051\u3084\u3059\u304f\u3059\u308b\u305f\u3081\u306b\u3001id\u5c5e\u6027\u3092\u8a2d\u5b9a\u3057\u3066\u304a\u304f --&gt;\r\n    &lt;table id=&#039;board&#039;&gt;\r\n    &lt;\/table&gt;\r\n&lt;\/div&gt;\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;<\/pre>\n<h4>minesweeper2.js\u306e\u30bd\u30fc\u30b9<\/h4>\n<p><pre class='code'>\/* HTML\u306e\u8aad\u8fbc\u304c\u7d42\u4e86\u3057\u305f\u5f8c\u3067\u30d6\u30e9\u30a6\u30b6\u30fc\u304c\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b jQuery\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\t*\/\r\njQuery(function (){\r\n    const rows = 10;\t\/\/ \u30de\u30b9\u306e\u7e26\u65b9\u5411\u306e\u6570\u3002\u3068\u308a\u3042\u3048\u305a\u5909\u66f4\u3057\u306a\u3044\u306e\u3067const\u3067\u5ba3\u8a00\u3059\u308b\u3002\r\n    const cols = 10;\r\n    const bombs = 15;\t\/\/ \u5730\u96f7\u306e\u6570\r\n    \r\n    const board = $(&#039;#board&#039;);\r\n\r\n    for(let r = 0 ; r &lt; rows ; r ++){\r\n        \/\/ jQuery\u3067\u306eHTML\u8981\u7d20\u306e\u8ffd\u52a0\r\n        \/\/ $(&#039;&lt;tr&gt;&#039;)\u3067tr\u8981\u7d20\u304c\u3064\u304f\u3089\u308c\u308b\u3002\u3082\u3057$(&#039;tr&#039;)\u3068\u3057\u3066\u3057\u307e\u3046\u3068tr\u8981\u7d20\u3092\u9078\u629e\u3059\u308b\u3053\u3068\u306b\u306a\u308b\u306e\u3067&lt;&gt;\u306f\u91cd\u8981\r\n        \/\/ $(&#039;&lt;tr&gt;&#039;)\u3067\u3064\u304f\u3089\u308c\u305f\u3082\u306e\u3092.appendTo\u30e1\u30bd\u30c3\u30c9\u3067board(\u3064\u307e\u308atable)\u306b\u8ffd\u52a0\u3059\u308b\u3002\r\n        \/\/ jQuery\u3067\u306f\u901a\u5e38\u30e1\u30bd\u30c3\u30c9\u306e\u8fd4\u308a\u5024\u306f\u305d\u308c\u81ea\u8eab\u306b\u306a\u3063\u3066\u3044\u308b\u306e\u3067\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u9806\u756a\u306b\u9069\u7528\u3057\u3066\u3044\u304f\u3053\u3068\u304c\u3067\u304d\u308b(\u30e1\u30bd\u30c3\u30c9\u30c1\u30a7\u30fc\u30f3\u3068\u3044\u3046)\r\n        let row = $(&#039;&lt;tr&gt;&#039;).appendTo(board);\r\n        for(let c = 0 ; c &lt; cols ; c ++){\r\n            \/\/ $(&#039;&lt;td&gt;&#039;)\u3067\u8981\u7d20\u3092\u3064\u304f\u308a\u3001addClass\u3067\u305d\u308c\u306bCSS\u30af\u30e9\u30b9\u3092\u8ffd\u52a0\u3057\u3001appendTo\u3067\u305d\u308c\u3092row(\u3064\u307e\u308atr)\u306b\u8ffd\u52a0\u3059\u308b\u3002\r\n            let col = $(&#039;&lt;td&gt;&#039;).addClass(&#039;cell&#039;).addClass(&#039;close&#039;).appendTo(row);\r\n        }\r\n    }\r\n});<\/pre><br \/>\n<a href=\"\/labo\/suzuki\/wp-content\/uploads\/1852\/minesweeper2.html\">\u4e0b\u306b\u8868\u793a\u3055\u308c\u306a\u3044\u3068\u304d\u306f\u3053\u3053\u3092\u30af\u30ea\u30c3\u30af(\u5225\u30a6\u30a3\u30f3\u30c9\u30a6\u304c\u958b\u304d\u307e\u3059)<\/a><br \/>\n<iframe src=\"\/labo\/suzuki\/wp-content\/uploads\/1852\/minesweeper2.html\" style=\"width: 100%; min-height: 400px;\"><\/iframe><\/p>\n<h2>\u30af\u30ea\u30c3\u30af\u3067\u30de\u30b9\u3092\u958b\u304f\u3088\u3046\u306b\u3059\u308b<\/h2>\n<p>td\u8981\u7d20\u306b\u30af\u30ea\u30c3\u30af\u3055\u308c\u305f\u3068\u304d\u306e\u52d5\u4f5c\u3092\u8a2d\u5b9a\u3059\u308b(\u30af\u30ea\u30c3\u30af\u30a4\u30d9\u30f3\u30c8\u30ea\u30b9\u30ca\u30fc\u3092\u8a2d\u5b9a\u3059\u308b)\u3002<\/p>\n<h4>minesweeper3.js\u306e\u30bd\u30fc\u30b9<\/h4>\n<p><pre class='code'>jQuery(function (){\r\n    const rows = 10;\t\/\/ \u30de\u30b9\u306e\u7e26\u65b9\u5411\u306e\u6570\u3002\u3068\u308a\u3042\u3048\u305a\u5909\u66f4\u3057\u306a\u3044\u306e\u3067const\u3067\u5ba3\u8a00\u3059\u308b\u3002\r\n    const cols = 10;\r\n    const bombs = 15;\t\/\/ \u5730\u96f7\u306e\u6570\r\n    \r\n    const board = $(&#039;#board&#039;);\r\n\r\n    for(let r = 0 ; r &lt; rows ; r ++){\r\n        let row = $(&#039;&lt;tr&gt;&#039;).appendTo(board);\r\n        for(let c = 0 ; c &lt; cols ; c ++){\r\n            let col = $(&#039;&lt;td&gt;&#039;).addClass(&#039;cell&#039;).addClass(&#039;close&#039;).appendTo(row);\r\n        }\r\n    }\r\n\r\n    \/\/\t\u30de\u30b9\u304c\u30af\u30ea\u30c3\u30af\u3055\u308c\u305f\u3068\u304d\u306e\u52d5\u4f5c\r\n    board.find(&#039;td.cell.close&#039;).on(&#039;click&#039;, function (evt){\r\n        \/\/ CSS\u30af\u30e9\u30b9\u306eopen\u3092\u8ffd\u52a0\u3057\u3001close\u3092\u5916\u3057\u3066\u3001\u30af\u30ea\u30c3\u30af\u30a4\u30d9\u30f3\u30c8\u306e\u76e3\u8996\u3092\u3084\u3081\u308b\r\n        $(this).addClass(&#039;open&#039;).removeClass(&#039;close&#039;).off(&#039;click&#039;);\r\n    });\r\n});<\/pre><br \/>\n<a href=\"\/labo\/suzuki\/wp-content\/uploads\/1852\/minesweeper3.html\">\u4e0b\u306b\u8868\u793a\u3055\u308c\u306a\u3044\u3068\u304d\u306f\u3053\u3053\u3092\u30af\u30ea\u30c3\u30af(\u5225\u30a6\u30a3\u30f3\u30c9\u30a6\u304c\u958b\u304d\u307e\u3059)<\/a><br \/>\n<iframe src=\"\/labo\/suzuki\/wp-content\/uploads\/1852\/minesweeper3.html\" style=\"width: 100%; min-height: 400px;\"><\/iframe><\/p>\n<h2>\u5730\u96f7\u3092\u914d\u7f6e\u3059\u308b<\/h2>\n<p>\u4e00\u5b9a\u6570\u306e\u5730\u96f7\u306e\u8a2d\u7f6e\u306f\u30011.\u9806\u756a\u306b\u6c7a\u307e\u3063\u305f\u6570\u3092\u8a2d\u7f6e\u3057\u30012.\u30e9\u30f3\u30c0\u30e0\u306b\u5165\u308c\u66ff\u3048\u3001\u3068\u3044\u3046\u624b\u9806\u3067\u884c\u3044\u307e\u3059\u3002<\/p>\n<h4>minesweeper4.js\u306e\u30bd\u30fc\u30b9<\/h4>\n<p><pre class='code'>jQuery(function (){\r\n    const rows = 10;\t\/\/ \u30de\u30b9\u306e\u7e26\u65b9\u5411\u306e\u6570\u3002\u3068\u308a\u3042\u3048\u305a\u5909\u66f4\u3057\u306a\u3044\u306e\u3067const\u3067\u5ba3\u8a00\u3059\u308b\u3002\r\n    const cols = 10;\r\n    const bombs = 15;\t\/\/ \u5730\u96f7\u306e\u6570\r\n    \r\n    const board = $(&#039;#board&#039;);\r\n\r\n    let bomb = bombs; \/\/ \u5730\u96f7\u306e\u7dcf\u6570(bombs)\u3092\u5909\u6570bomb\u306b\u3044\u308c\u308b\r\n    for(let r = 0 ; r &lt; rows ; r ++){\r\n        let row = $(&#039;&lt;tr&gt;&#039;).appendTo(board);\r\n        for(let c = 0 ; c &lt; cols ; c ++){\r\n            let col = $(&#039;&lt;td&gt;&#039;).addClass(&#039;cell&#039;).addClass(&#039;close&#039;).appendTo(row);\r\n\r\n            \/\/ bomb --\u3067bomb\u306e\u6570\u304c\u4e00\u3064\u6e1b\u308b\u3002\r\n            \/\/ bomb\u306b15\u304c\u5165\u3063\u3066\u3044\u305f\u3068\u304d\u300115 &gt; 0\u304c\u8a55\u4fa1\u3055\u308c\u3066\u304b\u308914\u306b\u306a\u308b\u3002\r\n            \/\/ -- bomb\u3068\u3059\u308b\u306814\u306b\u306a\u3063\u3066\u304b\u308914 &gt; 0\u3068\u8a55\u4fa1\u3055\u308c\u3001\u5b9f\u969b\u306b\u8a2d\u7f6e\u3055\u308c\u308b\u5730\u96f7\u306e\u6570\u304c\u5909\u308f\u308b\u306e\u3067\u6ce8\u610f\u3059\u308b\u3002\r\n            if(bomb -- &gt; 0){\r\n                col.addClass(&#039;bomb&#039;);  \/\/ \u5730\u96f7\u3092\u8a2d\u7f6e(CSS\u30af\u30e9\u30b9\u3092\u8a2d\u5b9a\u3059\u308b)\r\n            }\r\n        }\r\n    }\r\n\r\n    \/\/ \u5730\u96f7\u3092\u30e9\u30f3\u30c0\u30e0\u306b\u7f6e\u304d\u63db\u3048\r\n        \r\n    \/\/ table\u8981\u7d20(board)\u306etr\u5b50\u8981\u7d20(children(&#039;tr&#039;))\u305d\u308c\u305e\u308c\u306b\u3064\u3044\u3066(each)\u3001function()\u3092\u9069\u7528\u3059\u308b\r\n    \/\/ \u3053\u306e\u3068\u304d\u3001each\u306b\u6e21\u3055\u308c\u308b\u95a2\u6570\u5185\u3067\u306ftr\u304cthis\u3068\u3057\u3066\u53c2\u7167\u3067\u304d\u308b\u3002\r\n    board.children(&#039;tr&#039;).each(function (){\r\n        \r\n        \/\/ \u540c\u3058\u3088\u3046\u306b\u3001tr\u8981\u7d20(this)\u306e\u30af\u30e9\u30b9cell\u304c\u3064\u3044\u305ftd\u5b50\u8981\u7d20(children(&#039;td.cell&#039;))\u305d\u308c\u305e\u308c\u306b\u3064\u3044\u3066(each)\u3001function()\u3092\u9069\u7528\u3059\u308b\r\n        $(this).children(&#039;td.cell&#039;).each(function (){\r\n\r\n            \/\/ \u4e71\u6570\u3092\u4f7f\u3063\u3066\u5165\u308c\u66ff\u3048\u5bfe\u8c61\u3092\u53d6\u5f97\u3059\u308b\r\n            let r = Math.floor(Math.random() * rows);\r\n            let c = Math.floor(Math.random() * cols);\r\n            \/\/ r\u756a\u76ee\u306etr\u8981\u7d20\u306ec\u756a\u76ee\u306etd\u8981\u7d20\u3092\u53d6\u5f97\r\n            let cell = board.children(&#039;tr&#039;).eq(r).children(&#039;td.cell&#039;).eq(c);\r\n\r\n            \/\/ CSS\u30af\u30e9\u30b9\u306ebomb\u306e\u8a2d\u5b9a\u304c\u7570\u306a\u308c\u3070\u3001\u5165\u308c\u66ff\u3048\u308b\r\n            if($(this).hasClass(&#039;bomb&#039;) != cell.hasClass(&#039;bomb&#039;)){\r\n                $(this).toggleClass(&#039;bomb&#039;);\t\/\/ toggleClass\u306f\u6307\u5b9a\u3055\u308c\u305fCSS\u30af\u30e9\u30b9\u306e\u6709\u7121\u3092\u9006\u306b\u3059\u308b\r\n                cell.toggleClass(&#039;bomb&#039;);\r\n            }\r\n        });\r\n    });\r\n\r\n    \/\/\t\u30de\u30b9\u304c\u30af\u30ea\u30c3\u30af\u3055\u308c\u305f\u3068\u304d\u306e\u52d5\u4f5c\r\n    board.find(&#039;td.cell.close&#039;).on(&#039;click&#039;, function (evt){\r\n        \/\/ CSS\u30af\u30e9\u30b9\u306eopen\u3092\u8ffd\u52a0\u3057\u3001close\u3092\u5916\u3057\u3066\u3001\u30af\u30ea\u30c3\u30af\u30a4\u30d9\u30f3\u30c8\u306e\u76e3\u8996\u3092\u3084\u3081\u308b\r\n        $(this).addClass(&#039;open&#039;).removeClass(&#039;close&#039;).off(&#039;click&#039;);\r\n    });\r\n});<\/pre><br \/>\n<a href=\"\/labo\/suzuki\/wp-content\/uploads\/1852\/minesweeper4.html\">\u4e0b\u306b\u8868\u793a\u3055\u308c\u306a\u3044\u3068\u304d\u306f\u3053\u3053\u3092\u30af\u30ea\u30c3\u30af(\u5225\u30a6\u30a3\u30f3\u30c9\u30a6\u304c\u958b\u304d\u307e\u3059)<\/a><br \/>\n<iframe src=\"\/labo\/suzuki\/wp-content\/uploads\/1852\/minesweeper4.html\" style=\"width: 100%; min-height: 400px;\"><\/iframe><\/p>\n<h2>\u5468\u308a\u306b\u3042\u308b\u5730\u96f7\u306e\u6570\u3092\u8a2d\u5b9a\u3059\u308b<\/h2>\n<p>\u305d\u308c\u305e\u308c\u306e\u30de\u30b9\u306e\u5468\u308a\u306b\u3042\u308b\u5730\u96f7\u3092\u6570\u3048\u3066\u3001td\u8981\u7d20\u306b\u305d\u306e\u5024\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002HTML\u306e\u8981\u7d20\u306b\u306f\u30ab\u30b9\u30bf\u30e0\u5c5e\u6027\u3068\u3044\u3046\u306e\u304c\u8a2d\u5b9a\u3067\u304d\u3001data-\u3067\u59cb\u307e\u308b\u540d\u524d\u3092\u3064\u3051\u308b\u30eb\u30fc\u30eb\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u3053\u3053\u3067\u306fdata-hint\u306b\u5730\u96f7\u6570\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002<\/p>\n<h4>minesweeper5.js\u306e\u30bd\u30fc\u30b9<\/h4>\n<p><pre class='code'>jQuery(function (){\r\n    const rows = 10;\t\/\/ \u30de\u30b9\u306e\u7e26\u65b9\u5411\u306e\u6570\u3002\u3068\u308a\u3042\u3048\u305a\u5909\u66f4\u3057\u306a\u3044\u306e\u3067const\u3067\u5ba3\u8a00\u3059\u308b\u3002\r\n    const cols = 10;\r\n    const bombs = 15;\t\/\/ \u5730\u96f7\u306e\u6570\r\n    \r\n    const board = $(&#039;#board&#039;);\r\n\r\n    let bomb = bombs;\r\n    for(let r = 0 ; r &lt; rows ; r ++){\r\n        let row = $(&#039;&lt;tr&gt;&#039;).appendTo(board);\r\n        for(let c = 0 ; c &lt; cols ; c ++){\r\n            let col = $(&#039;&lt;td&gt;&#039;).addClass(&#039;cell&#039;).addClass(&#039;close&#039;).appendTo(row);\r\n            if(bomb -- &gt; 0){\r\n                col.addClass(&#039;bomb&#039;);  \/\/ \u5730\u96f7\u3092\u8a2d\u7f6e(CSS\u30af\u30e9\u30b9\u3092\u8a2d\u5b9a\u3059\u308b)\r\n            }\r\n        }\r\n    }\r\n\r\n    \/\/ \u5730\u96f7\u3092\u30e9\u30f3\u30c0\u30e0\u306b\u7f6e\u304d\u63db\u3048\r\n    board.children(&#039;tr&#039;).each(function (){\r\n        $(this).children(&#039;td.cell&#039;).each(function (){\r\n            let r = Math.floor(Math.random() * rows);\r\n            let c = Math.floor(Math.random() * cols);\r\n            let cell = board.children(&#039;tr&#039;).eq(r).children(&#039;td.cell&#039;).eq(c);\r\n            if($(this).hasClass(&#039;bomb&#039;) != cell.hasClass(&#039;bomb&#039;)){\r\n                $(this).toggleClass(&#039;bomb&#039;);\r\n                cell.toggleClass(&#039;bomb&#039;);\r\n            }\r\n        });\r\n    });\r\n\r\n    \/\/\t\u5468\u308a\u306b\u3042\u308b\u5730\u96f7\u3092\u6570\u3048\u308b\r\n    for(let r = 0 ; r &lt; rows ; r ++){\r\n        let row = board.children(&#039;tr&#039;).eq(r)\r\n        for(let c = 0 ; c &lt; cols ; c ++){\r\n            let cell = row.children(&#039;td.cell&#039;).eq(c);\r\n            \/\/ \u5730\u96f7\u306e\u7f6e\u304b\u308c\u3066\u3044\u308b\u30de\u30b9\u306a\u3089\u3001\u30d2\u30f3\u30c8\u306e\u8a2d\u5b9a\u306f\u5fc5\u8981\u306a\u3044\u306e\u3067continue\u3067for\u30eb\u30fc\u30d7\u3092\u6b21\u306b\u9032\u3081\u308b\u3002\r\n            if(cell.hasClass(&#039;bomb&#039;)) continue;\r\n\r\n            bomb = 0;  \/\/ \u5468\u308a\u306e\u5730\u96f7\u306e\u6570\r\n            \/\/ [r - 1, r, r + 1]\u3068\u3044\u3046\u914d\u5217\u3092\u4f5c\u3063\u3066\u3001\u8abf\u3079\u308b\u5bfe\u8c61\u306e\u884c\u3092\u9806\u756a\u306b(jQuery.each)\u8abf\u3079\u308b\u3002\r\n            jQuery.each([r - 1, r, r + 1], function (i, r){\r\n                if(r &lt; 0) return;\r\n                if(r &gt;= rows) return;\r\n                \/\/ \u4eca\u5ea6\u306f\u5217\u306b\u3064\u3044\u3066\u540c\u3058\u3053\u3068\u3092\u3059\u308b\r\n                jQuery.each([c - 1, c , c + 1], function (i, c){\r\n                    if(c &lt; 0) return;\r\n                    if(c &gt;= cols) return;\r\n                    \/\/ \u5468\u308a\u306e\u30de\u30b9(r,c)\u306b\u5730\u96f7\u304c\u3042\u308c\u3070\u3001\u5730\u96f7\u306e\u6570\u3092\u5897\u3084\u3059\u3002\r\n                    if(board.children(&#039;tr&#039;).eq(r).children(&#039;td.cell&#039;).eq(c).hasClass(&#039;bomb&#039;)){\r\n                        bomb ++;  \/\/ \u3053\u3053\u3067\u306f++ bomb\u3067\u3082\u3088\u3044\u3002\r\n                    }\r\n                });\r\n            });\r\n            \/\/ \u5730\u96f7\u306e\u6570\u3092\u30ab\u30b9\u30bf\u30e0\u5c5e\u6027(data-hint)\u306b\u3044\u308c\u308b\u3002\r\n            cell.attr(&#039;data-hint&#039;, bomb);\r\n            \/\/ \u5730\u96f7\u306e\u6570\u306b\u5fdc\u3058\u305fCSS\u30af\u30e9\u30b9(hint0, hint1\u306a\u3069)\u3092\u8a2d\u5b9a\u3059\u308b\r\n            cell.addClass(&#039;hint&#039; + bomb);\r\n        }\r\n    }\r\n\r\n    \/\/\t\u30de\u30b9\u304c\u30af\u30ea\u30c3\u30af\u3055\u308c\u305f\u3068\u304d\u306e\u52d5\u4f5c\r\n    board.find(&#039;td.cell.close&#039;).on(&#039;click&#039;, function (evt){\r\n        let cell = $(this);\r\n        cell.addClass(&#039;open&#039;).removeClass(&#039;close&#039;).off(&#039;click&#039;);\r\n\r\n        \/\/ \u5730\u96f7\u306e\u6570\u3092\u8868\u793a\u3059\u308b\r\n        cell.text(cell.attr(&#039;data-hint&#039;));\r\n    });\r\n});<\/pre><br \/>\n<a href=\"\/labo\/suzuki\/wp-content\/uploads\/1852\/minesweeper5.html\">\u4e0b\u306b\u8868\u793a\u3055\u308c\u306a\u3044\u3068\u304d\u306f\u3053\u3053\u3092\u30af\u30ea\u30c3\u30af(\u5225\u30a6\u30a3\u30f3\u30c9\u30a6\u304c\u958b\u304d\u307e\u3059)<\/a><br \/>\n<iframe src=\"\/labo\/suzuki\/wp-content\/uploads\/1852\/minesweeper5.html\" style=\"width: 100%; min-height: 400px;\"><\/iframe><\/p>\n<h2>\u81ea\u52d5\u7684\u306b\u5468\u308a\u3092\u958b\u304f<\/h2>\n<p><a href=\"\/labo\/suzuki\/archives\/1889\">\u6b21\u56de<\/a>\u306b\u7d9a\u304f\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6614\u306eWindows\u306b\u306f\u6a19\u6e96\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u305f\u30de\u30a4\u30f3\u30b9\u30a4\u30fc\u30d1\u30fc\u3092Javascript\u3067\u3064\u304f\u308a\u307e\u3059\u3002 \u5fc5\u8981\u306a\u3082\u306e jQuery HTML\u3068CSS\u3067\u30b2\u30fc\u30e0\u753b\u9762\u3092\u30c7\u30b6\u30a4\u30f3\u3059\u308b \u30de\u30a4\u30f3\u30b9\u30a4\u30fc\u30d1\u30fc\u306e\u30af\u30ea\u30c3\u30af\u3057\u3066\u958b\u3044\u3066\u3044\u304f\u30de\u30b9\u3092 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[38,7],"tags":[],"_links":{"self":[{"href":"http:\/\/biochemistry.isc.chubu.ac.jp\/labo\/suzuki\/wp-json\/wp\/v2\/posts\/1852"}],"collection":[{"href":"http:\/\/biochemistry.isc.chubu.ac.jp\/labo\/suzuki\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/biochemistry.isc.chubu.ac.jp\/labo\/suzuki\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/biochemistry.isc.chubu.ac.jp\/labo\/suzuki\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/biochemistry.isc.chubu.ac.jp\/labo\/suzuki\/wp-json\/wp\/v2\/comments?post=1852"}],"version-history":[{"count":18,"href":"http:\/\/biochemistry.isc.chubu.ac.jp\/labo\/suzuki\/wp-json\/wp\/v2\/posts\/1852\/revisions"}],"predecessor-version":[{"id":2608,"href":"http:\/\/biochemistry.isc.chubu.ac.jp\/labo\/suzuki\/wp-json\/wp\/v2\/posts\/1852\/revisions\/2608"}],"wp:attachment":[{"href":"http:\/\/biochemistry.isc.chubu.ac.jp\/labo\/suzuki\/wp-json\/wp\/v2\/media?parent=1852"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/biochemistry.isc.chubu.ac.jp\/labo\/suzuki\/wp-json\/wp\/v2\/categories?post=1852"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/biochemistry.isc.chubu.ac.jp\/labo\/suzuki\/wp-json\/wp\/v2\/tags?post=1852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}