🌸 「なでしこ」
>
🍯 「貯蔵庫」
🍯 なでしこ3貯蔵庫
🌟新規
📒一覧
🔌
🔍検索
🚪ログイン
ログイン
していません。
[
📌文法
] [
🎨命令一覧
]
[編集モード] 15パズル(マイナビ連載より)
15パズルで遊んでみよう
プログラム:
(→大)
(→textarea)
(→左右に配置)
# 記事を読むには以下のURLを見てみてください # 👉 https://news.mynavi.jp/article/nadeshiko-52/ # ------------------------------- # 15パズルのプログラム # ------------------------------- データ=[] DW=90 # ブロック幅 上下左右=[[-1,0],[1,0],[0,-1],[0,1]] Fステージ=「#nako3_canvas」 シャッフル回数=0 初期化処理。 # マウスイベントの処理 --- (*1) Fステージをマウス押した時には Y=INT(マウスY÷DW) X=INT(マウスX÷DW) [Y,X]のブロック移動。 ブロック描画。 0.1秒後には クリア確認。 もし、それがオンならば、 初期化処理。 ここまで。 ここまで。 ここまで ●初期化処理とは # --- (*2) ブロック初期化。 番号シャッフル。 ここまで。 ●ブロック初期化とは データ=[] Yを0から3まで繰り返す データ[Y] = [] Xを0から3まで繰り返す データ[Y][X] = 1 + (Y * 4 + X) ここまで ここまで データ[3][3] = 0 # 空きブロック ここまで ●(YXの)ブロック移動とは # --- (*3) Y=YX[0]。X=YX[1] RY=-1。RX=-1。 #空白のブロック位置を探す 上下左右を反復 FY=対象[0] + Y。 もし((FY<0)または(FY>3))ならば、続ける。 FX=対象[1] + X。 もし((FX<0)または(FX>3))ならば、続ける。 V=データ[FY][FX] もし、V=0ならば RY=FY。RX=FX。抜ける。 ここまで ここまで。 もし(RX=-1)ならば オフで戻る。#見つからなかった場合 ここまで。 # ブロックを入れ替える TMP=データ[Y][X] データ[Y][X] = データ[RY][RX] データ[RY][RX] = TMP オンで戻る ここまで ●番号シャッフルとは # --- (*4) シャッフル回数=0 番号シャッフルGO ここまで。 ●番号シャッフルGOとは もし、シャッフル回数>30ならば、戻る。# --- (*5) オンの間 Y=4の乱数 X=4の乱数 [Y,X]のブロック移動。 もし、それがオンならば、抜ける。 ここまで。 ブロック描画。 0.1秒後には シャッフル回数=シャッフル回数+1 番号シャッフルGO ここまで。 ここまで ●クリア確認とは # --- (*6) Yを0から3まで繰り返す Xを0から3まで繰り返す V=データ[Y][X] もし、V=0ならば、続ける。 もし、V≠(Y*4+X+1)ならば、オフで戻る。 ここまで ここまで 「ゲームクリア」と言う。 オンで戻る。 ここまで。 ●ブロック描画とは [0,0,DW*4,DW*4]の描画クリア。 DW2=DW÷2 黒色に線色設定 「40px Aria」に描画フォント設定 Yを0から3まで繰り返す Xを0から3まで繰り返す DX=X*DW DY=Y*DW V=データ[Y][X] もし、V > 0ならば 「#733」に塗色設定。 [DX, DY, DW, DW]へ四角描画。 「#baa」に塗色設定。 [DX+DW2, DY+DW2]へ(DW2-3)の円描画。 「#333」に塗色設定。 [DX+17, DY+60]に(Vを2でゼロ埋め)を文字描画。 違えば 「#999」に塗色設定。 [DX, DY, DW, DW]へ四角描画。 ここまで。 ここまで ここまで ここまで。
▶ 実 行 [F9]
クリア
一時保存
デバッグ
ブレイクポイント:
→ 再開
↓ 一行次へ
キャンバス: 幅
× 高
上書き保存
表示ページ
→直前に実行(または一時保存)した内容を復元
なでしこバージョン: v
素材のアップロード
ログイン
するとファイルをアップロードできます。