{* オセロをちょっと改良してみました。 見た目をちょっと良くして、 コンピューターの思考をほんの少し改良してみました。 *} {---プログラム掲示板投稿フォーム--- 【ソフト名】病弱オセロ (バージョン 1.10) 【作 成 者】クジラ飛行机 (連絡先:himawari@text2music.com) 【種 別】フリーソフトウェア 【ひまわりのバージョン】ver.1.17 【転 件】可(転載条件:ご自由に) 【ひまわり本体への梱包】可 【実行時に利用作成するファイル】無 【コメント】コンピューターの弱いオセロです。自分は強いという錯覚に陥りたい人へ。 ---投稿フォームここまで---} '=========================================================== *変数初期化 母艦の、リサイズは、オフ。 白色で、画面クリア。 ペン太さ=2 W = 32 コマの初期化
機能メニューを、メニュー作成。 機能メニューに、はじめからメニューを、メニュー追加。 その、イベントは、( 白色で、画面クリア。コマの初期化。ゲーム開始。 ) 機能メニューに、パスメニューを、メニュー追加。 その、イベントは、コンピューター手決定。 機能メニューに、コマ数チェックメニューを、メニュー追加。 その、イベントは、コマ数数え上げ
*母艦の設定 母艦の、高さは、(W*8) 母艦の、幅は、(W*8)
*ゲーム開始 マス描画 コマ描画 母艦の、クリックした時は、プレイヤー手決定。 母艦の、タイトルは、「オセロ:プレイヤー黒の番」 待機。
*プレイヤー手決定 XX=INT(マウスX÷W) YY=INT(マウスY÷W) C=コマ#XX#YY もし、C<>0ならば( 母艦の、タイトルは、「({XX},{YY})には、既にコマがあります。」。待機。 )。 P=1。 コマ反転モードは、オフ。 反転するコマ数チェック。 もし、それが、0ならば( 母艦の、タイトルは、「({XX},{YY})には、置けません。」。待機。 )。 コマ反転モードは、オン。 反転するコマ数チェック。 コマ描画。 石の数追加。
*コンピューターの手番 LOOP_CNT=0 母艦の、クリックした時は、「」。 コマ反転モード=オフ。 P=2 '四隅のチェック XX=0;YY=0;反転するコマ数チェック。もし、それ>=1ならば、コンピューター手決定へ、飛ぶ。 XX=7;YY=0;反転するコマ数チェック。もし、それ>=1ならば、コンピューター手決定へ、飛ぶ。 XX=0;YY=7;反転するコマ数チェック。もし、それ>=1ならば、コンピューター手決定へ、飛ぶ。 XX=7;YY=7;反転するコマ数チェック。もし、それ>=1ならば、コンピューター手決定へ、飛ぶ。 *コンピューターランダム 母艦の、タイトルは、「オセロ:コンピューター白の番:{LOOP_CNT}」。描画処理反映。 XX=乱数(8) YY=乱数(8) '星には置かない もし、(XX=2)かつ(YY=1)ならば、コンピューターランダムへ、飛ぶ。 もし、(XX=6)かつ(YY=1)ならば、コンピューターランダムへ、飛ぶ。 もし、(XX=2)かつ(YY=6)ならば、コンピューターランダムへ、飛ぶ。 もし、(XX=6)かつ(YY=6)ならば、コンピューターランダムへ、飛ぶ。
もし、コマ#XX#YY<>0ならば、コンピューターランダムへ、飛ぶ。 反転するコマ数チェック。 もし、それが、0ならば( LOOP_CNTに、1を、足す。 もし、LOOP_CNTが、64以上なら( 「コンピューターは、パスします」と、言う。 プレイヤーの手に戻すへ、飛ぶ。 )違えば、コンピューターランダムへ、飛ぶ。 ) *コンピューター手決定 コマ反転モード=オン。 反転するコマ数チェック。 コマ描画。 石の数追加。 *プレイヤーの手に戻す 母艦の、クリックした時は、プレイヤー手決定。 母艦の、タイトルは、「オセロ:プレイヤー黒の番」 待機。
'====================== *マス描画 COL#0="#00FF33" COL#1="#00CC00" ペン色は、"#000033" ペン太さは、0 Xを、0から、7まで、繰り返す( Yを、0から、7まで、繰り返す( X1 = X * W Y1 = Y * W X2 = X1 + W Y2 = Y1 + W 塗り色は、COL#((Y*8+X+(Y%2))%2) (X1,Y1,X2,Y2)へ、四角形。 ) )
戻る。
*コマ描画 ペン太さは、2 Xを、0から、7まで、繰り返す( Yを、0から、7まで、繰り返す( C = コマ#X#Y もし、C<>0ならば( X1 = X * W; Y1 = Y * W X2 = X1 + W; Y2 = Y1 + W もし、C=1ならば( 8回( CC=回数*20 塗り色= RGB(0,0,CC) ペン色=塗り色 B=回数*2 母艦の、(X1+B,Y1+B)から、(X2-B,Y2-B)へ、円形描画。 ) )違えば( 8回( CC=255-回数*30 塗り色= RGB(CC,CC,255) ペン色=塗り色 B=回数*2 母艦の、(X1+B,Y1+B)から、(X2-B,Y2-B)へ、円形描画。 ) ) ) ) ) 母艦を、ネガポジ反転。 ランタイムのパス&『tools\n.wav』を、演奏。 0.1秒、待つ。 母艦を、ネガポジ反転。 戻る。
*反転するコマ数チェック '引数の説明:(XX,YY)に、Pがコマを置く。 '返却値:置けるコマの数 もし、コマ#XX#YY<>0ならば(それは、0。戻る。) CNT=0 '置けるコマの数 もし、P=1ならば、PP=2。違えば、PP=1。 方向文=「X=XX; Y=YY-I」。コマ数方向チェック。'上側をチェック 方向文=「X=XX; Y=YY+I」。コマ数方向チェック。'下側をチェック 方向文=「X=XX+I; Y=YY」。コマ数方向チェック。'右側をチェック 方向文=「X=XX-I; Y=YY」。コマ数方向チェック。'左側をチェック 方向文=「X=XX+I; Y=YY-I」。コマ数方向チェック。'右上側をチェック 方向文=「X=XX-I; Y=YY-I」。コマ数方向チェック。'左上側をチェック 方向文=「X=XX+I; Y=YY+I」。コマ数方向チェック。'右下側をチェック 方向文=「X=XX-I; Y=YY+I」。コマ数方向チェック。'左下側をチェック それは、CNT 戻る。
*コマ数方向チェック PRE_CNT=0 挟んでいる=いいえ Iを、1から、7まで、繰り返し( 方向文を、ひまわりする。 もし、(Y<0)または(X<0)ならば、抜ける。 C=コマ#X#Y もし、C=0ならば、抜ける。 もし、C=Pならば( 挟んでいる=はい 抜ける。 )。 PRE_CNT=PRE_CNT+1' )。 もし、PRE_CNT=0ならば、挟んでいる=いいえ もし、挟んでいる=はいならば、CNT=CNT+PRE_CNT もし、(挟んでいる=はい)かつ(コマ反転モード=オン)ならば( コマ#XX#YY=P Iを、1から、7まで、繰り返し( 方向文を、ひまわりする。 もし、(Y<0)または(X<0)ならば、抜ける。 C=コマ#X#Y もし、C=0ならば、抜ける。 もし、C=Pならば、抜ける。 コマ#X#Y=P )。 )。 戻る。
*コマ数数える 'PLY,COM PLY=0; COM=0 Xを、0から、7まで、繰り返し( Yを、0から、7まで、繰り返し( C=コマ#X#Y もし、C=1ならば、PLY=PLY+1 もし、C=2ならば、COM=COM+1 ) ) それは、CNT 戻る。
*石の数追加 コマ数数える もし、((PLY+COM)=>64)または(PLY=0)または(COM=0)ならば( 母艦の、タイトルは、「オセロ:結果発表」 もし、PLY>COMならば、勝敗は、「プレイヤーの勝ち」 もし、PLY=COMならば、勝敗は、「引き分け」 もし、PLY<COMならば、勝敗は、「コンピューターの勝ち」 「プレイヤー = {PLY}\nコンピューター = {COM}\n\n{勝敗}」と、言う。 待機。 )。 戻る。
*コマの初期化 Xを、0から、7まで、繰り返す( Yを、0から、7まで、繰り返す( コマ#X#Y=0 ) ) コマ#3#3=1 コマ#4#3=2 コマ#3#4=2 コマ#4#4=1 戻る。
*コマ数数え上げ コマ数数える 「プレイヤー = {PLY}\nコンピューター = {COM}」と、言う。 待機。 |