🌸 「なでしこ」
>
🍯 「貯蔵庫」
セルサイズは50爆弾率は01ビル
🌟新規
📒一覧
🔌
🔍検索
🚪ログイン
セルサイズは50爆弾率は01ビル 📖
マインスイーパーを簡単にしたもの
プログラム:
(→大)
セルサイズは50 爆弾率は0.1 ビルボード高は16 ボード枠幅は10 描画幅は描画中キャンバス["width"] 描画高は描画中キャンバス["height"] ボード横は((描画幅-ボード枠幅*2)/セルサイズ)の整数部分 ボード縦は((描画高-ボード枠幅*2-ビルボード高)/セルサイズ)の整数部分 ボードサイズは[ボード横,ボード縦] ボード起点は[ ((描画幅-ボード横*セルサイズ)/2)の整数部分, ((描画高-ボード縦*セルサイズ-ビルボード高)/2+ビルボード高)の整数部分 ] 周囲は[ [-1,-1],[-1,0],[-1,1], [0,-1],[0,1], [1,-1],[1,0],[1,1]] 表示色は[ "#000000","#FF00FF","#0F5474","#0000FF", "#00FFFF","#00FF00","#88FF00","#FFFF00", "#FF0000"] 予測文字は["","🚩","?",""] 爆弾文字は「💣」 爆発文字は「💥」 バツ文字は「✘」 爆弾数は(ボードサイズ[0]*ボードサイズ[1]*爆弾率)の整数部分 ボードは[] セルフォーカス位置はNULL マウスボタンハンドラはNULL マウス移動ハンドラはNULL セル開き中はオフ フラグ数は0 残りセル数は(ボードサイズ[0]*ボードサイズ[1])-爆弾数 開始時間ミリ秒は0 経過時間ミリ秒は0 処理待ちセルは[] 描画中はオフ ●ボード初期化とは ボードは[] (ボードサイズ[1])回繰り返す Yは回数-1 ボード[Y]は[] (ボードサイズ[0])回繰り返す Xは回数-1 ボード[Y][X]は0 ここまで ここまで ここまで ●爆弾配置とは 設置リストは[] (ボードサイズ[0]*ボードサイズ[1])回繰り返す 設置リスト[回数-1]は回数-1 ここまで 設置リストを配列シャッフル (爆弾数)回繰り返す 座標は設置リスト[回数-1] X0は座標をボードサイズ[0]で割った余り Y0は(座標/ボードサイズ[0])の整数部分 ボード[Y0][X0]は0x8 周囲を反復する 差異はそれ XはX0+差異[0] YはY0+差異[1] もし、X≧0&&X<ボードサイズ[0]&&Y≧0&&Y<ボードサイズ[1]ならば、 ボード[Y][X]はボード[Y][X]+1 ここまで ここまで ここまで 設置リストは空 ここまで ●(FUNCで)全セル処理とは (ボードサイズ[1])回繰り返す Yは回数-1 (ボードサイズ[0])回繰り返す Xは回数-1 FUNC([X, Y]) ここまで ここまで ここまで ●全解答表示とは 全セル処理には(XY) XYのセル解答表示 ここまで ここまで ●ボード表示とは 全セル処理には(XY) XYのセル表示 ここまで ここまで ●(XYの)セル表示とは XはXY[0] YはXY[1] 値はボード[Y][X] 予測値は(値と0x30のAND)/16 公開状態は予測値=3 索敵値は値と0x7のAND 爆弾有は(値と0x8のAND)≠0 爆発状態は(値と0x40のAND)≠0 キャンバス状態保存 描画中コンテキスト["textAlign"]は"center" 描画中コンテキスト["textBaseline"]は"middle" XYに公開状態でセル背景描画 空に線色設定 黒色に塗り色設定 もし、爆発状態ならば、 XYに爆発文字をセル文字表示 違えばもし、公開状態ならば、 もし、爆弾有ならば、 XYに爆弾文字をセル文字表示 違えばもし、索敵値>0ならば、 表示色[索敵値]に塗り色設定 XYに索敵値をセル文字表示 ここまで 違えば、 もし、予測値>0ならば、 XYに予測文字[予測値]をセル文字表示 ここまで ここまで キャンバス状態復元 ここまで ●(XYの)セル解答表示とは XはXY[0] YはXY[1] 値はボード[Y][X] 予測値は(値と0x30のAND)/16 公開状態は予測値=3 索敵値は値と0x7のAND 爆弾有は(値と0x8のAND)≠0 爆発状態は(値と0x40のAND)≠0 もし、公開状態でなければ、 キャンバス状態保存 描画中コンテキスト["textAlign"]は"center" 描画中コンテキスト["textBaseline"]は"middle" 黒色に塗り色設定 空に線色設定 もし、爆弾有ならば、 もし、予測値=1でなければ、 XYに爆弾文字をセル文字表示 ここまで 違えばもし、予測値=0でなければ、 XYにバツ文字をセル文字表示 ここまで キャンバス状態復元 ここまで ここまで ●(XYに公開状態で)セル背景描画とは XはXY[0]*セルサイズ+ボード起点[0]-0.5 YはXY[1]*セルサイズ+ボード起点[1]-0.5 1に線太さ設定 黒色に線色設定 もし、公開状態ならば、 「#FFFFFF」に塗り色設定 違えば、 「#CCCCCC」に塗り色設定 ここまで [X, Y, セルサイズ, セルサイズ]へ四角描画 ここまで ●(XYにCを)セル文字表示とは XはXY[0]*セルサイズ+ボード起点[0]+セルサイズ/2-1 YはXY[1]*セルサイズ+ボード起点[1]+セルサイズ/2-1 キャンバス状態保存 「{セルサイズ-2}px sans-serif」に描画フォント設定 [X,Y]に描画起点設定 [0, 0]にCを文字描画 キャンバス状態復元 ここまで ●マウスボタン処理とは EVTはWINDOW["event"] 要素位置はEVT["target"]の"getBoundingClientRect"を[]でJSメソッド実行 XはEVT["clientX"]-要素位置["left"] YはEVT["clientY"]-要素位置["top"] BはEVT["button"] もし、マウスボタンハンドラ≠NULLならば、 マウスボタンハンドラ(X,Y,B) ここまで ここまで ●マウス移動処理とは EVTはWINDOW["event"] 要素位置はEVT["target"]の"getBoundingClientRect"を[]でJSメソッド実行 XはEVT["clientX"]-要素位置["left"] YはEVT["clientY"]-要素位置["top"] もし、マウス移動ハンドラ≠NULLならば、 マウス移動ハンドラ(X,Y) ここまで ここまで ●(XとYでBを)ゲーム中マウスボタン処理とは 位置は[X, Y] もし、(X≧ボード起点[0])&&(X≦ボード起点[0]+ボードサイズ[0]*セルサイズ)ならば、 もし、(Y≧ボード起点[1])&&(Y≦ボード起点[1]+ボードサイズ[1]*セルサイズ)ならば、 セルXは(X-ボード起点[0])/セルサイズの整数部分 セルYは(Y-ボード起点[1])/セルサイズの整数部分 [セルX,セルY]をBでセルクリック ここまで ここまで ここまで ●(XとYで)ゲーム中マウス移動処理とは 位置は[X, Y] もし、(X≧ボード起点[0])&&(X≦ボード起点[0]+ボードサイズ[0]*セルサイズ)ならば、 もし、(Y≧ボード起点[1])&&(Y≦ボード起点[1]+ボードサイズ[1]*セルサイズ)ならば、 セルXは(X-ボード起点[0])/セルサイズの整数部分 セルYは(Y-ボード起点[1])/セルサイズの整数部分 [セルX,セルY]をセルフォーカス 違えば、 NULLをセルフォーカス ここまで 違えば、 NULLをセルフォーカス ここまで ここまで ●空処理とは EVTはWINDOW["event"] EVTをDOMイベント処理停止 ここまで ●開始処理とは マウスボタンハンドラは「ゲーム中マウスボタン処理」のJSオブジェクト取得 マウス移動ハンドラは「ゲーム中マウス移動処理」のJSオブジェクト取得 描画中キャンバスの「mousedown」に「マウスボタン処理」をDOMイベント追加 描画中キャンバスの「mousemove」に「マウス移動処理」をDOMイベント追加 描画中キャンバスの「contextmenu」に「空処理」をDOMイベント追加 全描画クリア ボード初期化 爆弾配置 ボード表示 開始時間ミリ秒はシステム時間ミリ秒 描画中はオン ビルボード表示更新 ここまで ●終了処理とは 描画中はオフ ビルボード表示 マウスボタンハンドラはNULL マウス移動ハンドラはNULL 描画中キャンバスの「mousedown」から「マウスボタン処理」をDOMイベント削除 描画中キャンバスの「mousemove」から「マウス移動処理」をDOMイベント削除 描画中キャンバスの「contextmenu」から「空処理」をDOMイベント削除 もし、残りセル数=0ならば、 # クリア 違えば # 失敗 ここまで ここまで ●(XYをBで)セルクリックとは もし、セル開き中ならば 戻る ここまで XはXY[0] YはXY[1] 値はボード[Y][X] 予測値は(値と0x30のAND)/16 公開状態は予測値=3 索敵値は値と0x7のAND 爆弾有は(値と0x8のAND)≠0 爆発状態は(値と0x40のAND)≠0 もし、公開状態ならば、 戻る ここまで Bで条件分岐する 0ならば、 もし、予測値≠0ならば、 戻る ここまで もし、爆弾有ならば、 ボード[Y][X]は値と0x70のOR XYのセル表示 全解答表示 終了処理 違えば、 XYからセル開く ここまで ここまで 2ならば、 もし、予測値=1ならば、 フラグ数はフラグ数-1 ここまで もし、予測値<2ならば、 予測値は予測値+1 違えば、 予測値は0 ここまで もし、予測値=1ならば、 フラグ数はフラグ数+1 ここまで ボード[Y][X]は(値と0xCFのAND)と(予測値*16)のOR XYのセル表示 ここまで ここまで ここまで ●(XYから)セル開くとは 処理待ちセルは[] 座標はXY[0]+XY[1]*ボードサイズ[0] 処理待ちセルに座標を配列追加 セル開き中はオン ここまで ●セル連続開くとは 次処理待ちセルは[] ((処理待ちセルの配列要素数)>0)の間繰り返す 座標は処理待ちセルから配列ポップ X0は座標をボードサイズ[0]で割った余り Y0は(座標/ボードサイズ[0])の整数部分 XYは[X0,Y0] 値はボード[Y0][X0] 索敵値は値と0x7のAND ボード[Y0][X0]は値と0x30のOR 残りセル数は残りセル数-1 XYのセル表示 もし、索敵値=0ならば、 周囲を反復する 差異はそれ XはX0+差異[0] YはY0+差異[1] もし、X≧0&&X<ボードサイズ[0]&&Y≧0&&Y<ボードサイズ[1]ならば、 値はボード[Y][X] 予測値は(値と0x30のAND)/16 もし、予測値=0ならば、 座標はX+Y*ボードサイズ[0] もし、((処理待ちセルから座標を配列検索)=-1)&&((次処理待ちセルから座標を配列検索)=-1)ならば、 次処理待ちセルに座標を配列追加 ここまで ここまで ここまで ここまで ここまで ここまで 処理待ちセルは次処理待ちセル もし、(処理待ちセルの配列要素数)=0ならば、 セル開き中はオフ もし、残りセル数=0ならば、 終了処理 ここまで ここまで ここまで ●(XYを)セルフォーカスとは もし、セルフォーカス位置≠NULLならば、 セルフォーカス位置に黒色でセルフォーカスリング描画 ここまで もし、XY≠NULLならば、 XYに赤色でセルフォーカスリング描画 ここまで セルフォーカス位置はXY ここまで ●(XYにCで)セルフォーカスリング描画とは XはXY[0]*セルサイズ+ボード起点[0]-0.5 YはXY[1]*セルサイズ+ボード起点[1]-0.5 1に線太さ設定 Cに線色設定 空に塗り色設定 [X, Y, セルサイズ, セルサイズ]へ四角描画 ここまで ●ビルボード表示とは キャンバス状態保存 白色に線色設定 白色に塗り色設定 1に線太さ設定 [0, 0, 描画幅,ビルボード高]へ四角描画 黒色に線色設定 黒色に塗り色設定 「{ビルボード高-2}px sans-serif」に描画フォント設定 描画中コンテキスト["textBaseline"]は"middle" 描画中コンテキスト["textAlign"]は"right" Yは(ビルボード高/2+1)の整数部分 [40, Y]に「{爆弾文字}:」を文字描画 [120, Y]に「{予測文字[1]}:」を文字描画 [200, Y]に「残り:」を文字描画 [280, Y]に「時間:」を文字描画 描画中コンテキスト["textAlign"]は"left" [40, Y]に爆弾数を文字描画 [120, Y]にフラグ数を文字描画 [200, Y]に残りセル数を文字描画 経過時間ミリ秒はシステム時間ミリ秒-開始時間ミリ秒 [280, Y]に経過時間ミリ秒/1000を文字描画 キャンバス状態復元 ここまで ●ビルボード表示更新とは もし、セル開き中ならば、 セル連続開く ここまで ビルボード表示 もし、描画中ならば、 画面更新時実行には ビルボード表示更新 ここまで ここまで ここまで 開始処理
プログラムを実行
あはは 作
タイトル:
セルサイズは50爆弾率は01ビル
ライセンス:
未指定 (未指定/貯蔵庫のみ)
タイプ:
wnako
タグ:
-
利用バージョン:
3.4.9
作成日時:
2023/03/06 16:45
公開の投稿
ログイン
して★を付けよう!
📝作品を編集
作品公開情報
📍この作品のURL:
📍アプリ(即時実行)のURL:
📍アプリ(実行ボタンあり)のURL:
📍ブログパーツ:
上記HTML↑をブログに貼り付けることでアプリを埋め込めます。
📍ライブラリ直リンク - 『!「***」を取込』で使うとき:
通報数:
0
通報って何?