#------------------------------------------ #【ソフト名】 オセロゲーム(人対人) #【 作 者 】 bellyoshi #【 U R L 】 http://sourceforge.jp/users/bellyoshi/pf/ReversiGame/wiki/FrontPage #【連 絡 先】 tccwas@gmail.com #【 転載 】 全て許可 #【なでしこのバージョン】 ver.1.547 #【  実行 の 注意点  】 なし   #【   紹 介     】 コンピュータは適当に打ちます。 !変数宣言が必要 枠幅とは整数。枠幅は40。 左余白とは整数。左余白は30。 上余白とは整数。上余白は30。 盤配置とは配列。 盤配置は、 「空,空,空,空,空,空,空,空, 空,空,空,空,空,空,空,空, 空,空,空,空,空,空,空,空, 空,空,空,黒,白,空,空,空, 空,空,空,白,黒,空,空,空, 空,空,空,空,空,空,空,空, 空,空,空,空,空,空,空,空, 空,空,空,空,空,空,空,空」。 手番とは文字列。手番は「白」#手番交代で最初は「黒」になる。 盤描画 あなたとは文字列。 コンピュータとは文字列。 「あなたは黒ですか?」と二択。 もし、それがはいならば   あなたは「黒」。   コンピュータは「白」 違えば   あなたは「白」。   コンピュータは「黒」。 「あなたが{あなた}でコンピュータが{コンピュータ}で開始します。」と言う。 。 手番交代。 #-----マウス判定-------------------------------------------------------- 母艦のマウス押した時は   入力横とは整数。   入力縦とは整数。   入力横は(母艦のマウスX-左余白)/枠幅。   入力縦は(母艦のマウスY-上余白)/枠幅。   入力横=入力横を切り下げ。   入力縦=入力縦を切り下げ。   もし、あなたが手番ならば    もし、0≦入力横 かつ 入力横≦7 かつ 0≦入力縦 かつ 入力縦≦7ならば      もし、入力横,入力縦に置けるならば        入力横,入力縦に打つ        盤描画。        手番交代。      違えば        「{入力横},{入力縦}に{手番}は置けません」と言う。 ●盤描画   線太さは1   横とは整数。   縦とは整数。   横で0から7まで繰り返す     縦で0から7まで繰り返す       線色は黒色。塗り色は白色。       横×枠幅+左余白,縦×枠幅+上余白から(横+1)×枠幅+左余白,(縦+1)×枠幅+上余白へ四角。       石とは文字列。石は盤配置\縦,横       もし石が「白」なら         線色は黒色。塗り色は白色。         横×枠幅 + 2 +左余白,縦×枠幅+2+上余白から(横+1)×枠幅+左余白-2,(縦+1)×枠幅+上余白-2へ円。       もし石が「黒」なら         線色は黒色。塗り色は黒色。         横×枠幅 + 2 +左余白,縦×枠幅+2+上余白から(横+1)×枠幅+左余白-2,(縦+1)×枠幅+上余白-2へ円。 ●思考する。 0.1秒待つ。 横とは整数。   横で0から7まで繰り返す     縦とは整数。     縦で0から7まで繰り返す       もし、横,縦に置けるならば         横,縦に打つ         盤描画。         手番交代。         戻る。 #----------------------------------------------------------------------- #手番交代 ●手番交代   手番は手番を反転。   もし、どこにも置けないならば     前手番とは文字列。前手番は手番。     手番は手番を反転。     もし、どこにも置けないならば       勝敗判定。     違えば       「{前手番}は置くところがありません」と言う。   もし、手番がコンピュータならば    思考する。 ●反転(石色を)   もし、石色が「黒」ならば     それは「白」   もし、石色が「白」ならば     それは「黒」 ●どこにも置けない   横とは整数。   横で0から7まで繰り返す     縦とは整数。     縦で0から7まで繰り返す       もし、横,縦に置けるならば         それはいいえ。         戻る。   それははい。 ●勝敗判定   黒石数とは整数。黒石数は0。   白石数とは整数。白石数は0。   横とは整数。   横で0から7まで繰り返す     縦とは整数     縦で0から7まで繰り返す       石とは文字列。石は盤配置\縦,横       もし、石が「白」ならば         白石数は白石数+1。       もし、石が「黒」ならば         黒石数は黒石数+1。   もし白石数>黒石数ならば     「{白石数}対{黒石数}で白の勝ちです。」と言う。   もし白石数<黒石数ならば     「{白石数}対{黒石数}で黒の勝ちです。」と言う。   もし白石数=黒石数ならば     「{白石数}対{黒石数}で引き分けです。」と言う。 ●置ける(横位置,縦位置に)   もし、 0≦横位置 かつ 横位置≦7 かつ 0≦縦位置 かつ 縦位置≦7 ならば     石とは文字列。石は盤配置\縦位置,横位置     もし石が「空」なら       もし、横位置,縦位置から0,1へひっくり返せるならば         それははい。戻る。       もし、横位置,縦位置から0,-1へひっくり返せるならば         それははい。戻る。       もし、横位置,縦位置から1,0へひっくり返せるならば         それははい。戻る。       もし、横位置,縦位置から1,-1へひっくり返せるならば         それははい。戻る。       もし、横位置,縦位置から1,1へひっくり返せるならば         それははい。戻る。       もし、横位置,縦位置から-1,0へひっくり返せるならば         それははい。戻る。       もし、横位置,縦位置から-1,1へひっくり返せるならば           それははい。戻る。       もし、横位置,縦位置から-1,-1へひっくり返せるならば         それははい。戻る。   それはいいえ。 ●打つ(横,縦に)   盤配置\縦,横は手番。   もし、横,縦から0,1へひっくり返せるならば     横,縦から0,1へひっくり返す。   もし、横,縦から0,-1へひっくり返せるならば     横,縦から0,-1へひっくり返す。   もし、横,縦から1,0へひっくり返せるならば     横,縦から1,0へひっくり返す   もし、横,縦から1,-1へひっくり返せるならば     横,縦から1,-1へひっくり返す。   もし、横,縦から1,1へひっくり返せるならば     横,縦から1,1へひっくり返す。   もし、横,縦から-1,0へひっくり返せるならば     横,縦から-1,0へひっくり返す。   もし、横,縦から-1,1へひっくり返せるならば     横,縦から-1,1へひっくり返す。   もし、横,縦から-1,-1へひっくり返せるならば     横,縦から-1,-1へひっくり返す。 ●ひっくり返せる(横位置,縦位置から横方向,縦方向へ)   横とは整数。横は横位置+横方向。   縦とは整数。縦は縦位置+縦方向。   もし、(0≦横 かつ 横≦7 かつ 0≦縦 かつ 縦≦7)がいいえならば     それはいいえ。戻る。   石とは文字列。石は盤配置\縦,横   もし石が「空」なら     それはいいえ。戻る。   もし石が手番なら     それはいいえ。戻る。   横は横+横方向。   縦は縦+縦方向。   (0≦横 かつ 横≦7 かつ 0≦縦 かつ 縦≦7)の間     石は盤配置\縦,横。     もし、石が「空」なら       それはいいえ。戻る。     もし、石が手番なら       それははい。戻る。     横は横+横方向。     縦は縦+縦方向。   それはいいえ。 ●ひっくり返す(横位置,縦位置から横方向,縦方向へ)   横とは整数。横は横位置+横方向。   縦とは整数。縦は縦位置+縦方向。   (0≦横 かつ 横≦7 かつ 0≦縦 かつ 縦≦7)の間     石とは文字列。石は盤配置\縦,横。     もし、石が「空」なら戻る。     もし、石が手番なら戻る。     盤配置\縦,横は手番。     横は横+横方向。     縦は縦+縦方向。