🌸 「なでしこ」
>
🍯 「貯蔵庫」
二人対戦リバーシ
🌟新規
📒一覧
🔌
🔍検索
🚪ログイン
二人対戦リバーシ 📖
二人対戦リバーシ(タブレット対応) - マイナビ連載より
プログラム:
(→大)
# ----------------------------------------------------------- # プログラムの解説がマイナビにあります # [URL] https://news.mynavi.jp/techplus/article/nadeshiko-73/ # ----------------------------------------------------------- # 二人対戦リバーシ # ----------------------------------------------------------- # 各種設定 タイル幅=70 定数[F黒, F白]=[1, 2] F誰ラベル=['空白', '黒', '白'] F誰=F黒 盤面=盤面初期化。 # 方向配列([左上,上,右上,左,右,左下,下,右下]) F方向=[[-1,-1],[-1,0],[-1,1],[0,-1],[0,1],[1,-1],[1,0],[1,1]] 盤面描画。 # ---------------------------------------- # マウスボタンを押した時の処理 描画中キャンバスをマウス押した時には # どのマスを押したか判断 X=INT(マウスX÷タイル幅) Y=INT(マウスY÷タイル幅) # その場所はどの方向に配置可能か調べる Y,X,F誰で配置確認して、反転方向に代入。 もし(反転方向の要素数)=0ならば 「{F誰ラベル[F誰]}:({X+1},{Y+1})には配置できません」とメッセージ描画。 戻る。 ここまで。 # 実際に石を裏返す 盤面[Y][X]=F誰 反転方向,Y,X,F誰で石配置。 F誰を白黒反転してF誰に代入。 盤面描画。 ここまで。 ●(Y,Xが)盤範囲外とは もし、(X<0)または(X>=8)ならば、はいを戻す。 もし、(Y<0)または(Y>=8)ならば、はいを戻す。 いいえを戻す。 ここまで。 ●(反転方向,Y,X,Tで)石配置とは T2=Tを白黒反転 反転方向を反復 定数[BY,BX]=対象 XX=X。YY=Y。 Nを0から7まで繰り返す XX=XX+BX。YY=YY+BY。 もし、(盤範囲外(YY,XX))ならば、抜ける。 TT=盤面[YY][XX] もし、TT=0ならば、抜ける。 もし、TT=Tならば、抜ける。 盤面[YY,XX]=T # 自分色に反転 ここまで。 ここまで。 ここまで。 ●(Y,X,Tで)配置確認とは もし、(盤範囲外(Y,X))ならば、[]で戻る。 もし、盤面[Y,X]≠0ならば、[]で戻る。 反転方向=[] F方向を反復 FD=対象 FD,Y,X,Tで配置確認_方向 もし、それがいいえならば、続ける。 反転方向にFDを配列追加。 ここまで。 反転方向で戻る。 ここまで。 ●(FD,Y,X,Tで)配置確認_方向とは T2=Tを白黒反転 定数[BY,BX]=FD XX=X。YY=Y。 反転個数=0 Nを0から7まで繰り返す XX=XX+BX。YY=YY+BY もし、(盤範囲外(YY,XX))ならば、いいえで戻る。 TT=盤面[YY][XX] もし、TT=0ならば、いいえで戻る。 もし、TT=T2ならば 反転個数=反転個数+1 続ける。 ここまで。 もし、TT=Tならば もし、反転個数>0ならば、はいで戻る。 いいえで戻る。 ここまで。 ここまで。 それはいいえ。 ここまで。 ●(Fを)白黒反転とは もし、F=F黒ならば、F白を戻す。 もし、F=F白ならば、F黒を戻す。 ここまで。 ●盤面初期化とは F盤面=[] Yを0から7まで繰り返す F盤面[Y] = [0,0,0,0,0,0,0,0] ここまで。 F盤面[3, 3] = F白。F盤面[4, 3] = F黒。 F盤面[3, 4] = F黒。F盤面[4, 4] = F白。 F盤面を戻す。 ここまで。 # ---------------------------------------- ●盤面描画とは 全描画クリア。 1に線太さ設定。 黒色に線色設定。 配置可能数=0 空き個数=0 黒個数=0。白個数=0。 Yを0から7まで繰り返す Xを0から7まで繰り返す # 緑のマスを描画 XX=X×タイル幅 YY=Y×タイル幅 緑色に塗り色設定。 [XX,YY,タイル幅,タイル幅]へ四角描画。 R=タイル幅÷2 # 空白のときの処理 もし、盤面[Y,X]=0ならば 空き個数=空き個数+1 Y,X,F誰で配置確認してOKに代入。 もし、(OKの要素数)>0ならば [XX+R,YY+R]へ3の円描画。 配置可能数=配置可能数+1 ここまで。 違えば、もし、盤面[Y,X]=F白ならば 白色に塗り色設定。 [XX+R,YY+R]へ(R-3)の円描画。 白個数=白個数+1 違えば、もし、盤面[Y,X]=F黒ならば 黒色に塗り色設定。 [XX+R,YY+R]へ(R-3)の円描画。 黒個数=黒個数+1 ここまで。 ここまで。 ここまで。 # メッセージの表示 W=F誰ラベル[F誰] 「{W}の番です。(黒:{黒個数}/白:{白個数})」とメッセージ描画。 # 終了判定 もし(空き個数=0)または(黒個数=0)または(白個数=0)ならば 「ゲーム終了(黒:{黒個数}/白:{白個数})」とメッセージ描画。 違えば # パス判定 もし、配置可能数=0ならば 0.5秒待つ。 「{W}は置けません。パスします。」と言う。 F誰を白黒反転してF誰に代入。 盤面描画。 ここまで ここまで ここまで。 ●メッセージ描画(Sと)とは 白色に塗り色設定。 [0,タイル幅*8,タイル幅*8,タイル幅*10]に四角描画。 黒色に塗り色設定。 「20px sans-serif」に描画フォント設定。 [10, 8×タイル幅+24]へSを文字描画。 ここまで。
プログラムを実行
⭐ クジラ飛行机 作
(
関連URL
)
タイトル:
二人対戦リバーシ
ライセンス:
CC0 (著作権破棄)
タイプ:
wnako
タグ:
ゲーム
利用バージョン:
3.3.61
作成日時:
2022/08/16 14:29 (編集: 2022/09/10 20:53)
公開の投稿
ログイン
して★を付けよう!
Twitterへ投稿
📝作品を編集
作品公開情報
📍この作品のURL:
📍アプリ(即時実行)のURL:
📍アプリ(実行ボタンあり)のURL:
📍ブログパーツ:
上記HTML↑をブログに貼り付けることでアプリを埋め込めます。
📍ライブラリ直リンク - 『!「***」を取込』で使うとき:
📍なでしこハブ (最新版の反映は1日後):
ソースの確認
編集履歴の確認
通報数:
0
通報って何?