« 2016年7月 | トップページ | 2016年9月 »

2016年8月の記事

2016年8月21日 (日)

Excelでオセロ(リバーシ)を作ってみた その2

8月13日に、「Excelでオセロ(リバーシ)を作ってみた」を投稿しました。

しかし、Excel 2016で動作させると、「応答なし」になってしまいました。
(2013も同じカモ)
 
WindowsがExcelに対し、一定時間以上応答がない場合に応答なしという表示を出してしまっているみたいですね。
 
入力処理や、CPUのAI部に、DoEventsを追記して対処しました。
それだけだと、DoEvents時にキーバッファにより、不用意にカーソルが移動してしまったり、セルにキー入力したものが代入されてしまいます。
 
なので、PeekMessageによるキーバッファをクリアするようにしています。
これで、「応答なし」への対応を大丈夫だと思うのですが、チラつきが目立つようになってしまったのが、気に入りません。
何か、もっと良い手法があるのでしょうね。
 
 
ついでに(?)以下の画面のように、着手個所を強調するように変更してあります。
Ws003723
 
 
そして、動作確認・・・・
Ex_rev01_v
「全然、勝てない!!」
 
一応、ダウンロードできるようにしておきました→こちら

| | コメント (0) | トラックバック (0)

2016年8月15日 (月)

自作リバーシ(オセロ)同士で対戦→強さの検証をしてみた

昨日、Excelでオセロを作ったので、どの程度の強さなのかを確かめてみようかと思いました。
※2つのリバーシソフトを起動させて、手入力により対戦させます。
残念ながらExcelリバーシは、別ウィンドウをアクティブにすると正常動作しなくなってしまいます。
したがって、同AIの「ポケコン版リバーシ」と対戦する事にしました。
(着手ロジックは全く同じものなので、それでも強さは図れます)
 
2010年に作った「ヨウコのリバーシ」(の最強レベル)と対戦してみます。
強さの基準(比較物)として、適正かどうかは怪しいところです。
「ヨウコのリバーシ」なんて、リバーシソフトの中では「最弱と言っても良い」くらい弱いからです。
しかし、他の強いソフトには「まず勝てる訳ありません」ので、基準はこの程度で、よろしいかと。
(そんな、弱いリバーシソフトですが、オセロ素人の私では、何回やっても勝てません)
 
「ポケコンリバーシ」は「ヨウコのリバーシ」と比較すると、盤面評価はプアなモノです。
ですから、同じような深さの読みであれば、「ヨウコのリバーシ」の方が強いはずなのですが、結果はどうなるのでしょうか?
(定石のデータも「ヨウコ」の方が多くもっています)
 
 
 
黒「ヨウコのリバーシ」 対  白「ポケコンリバーシ」
 
→  「ヨウコ」の勝ち
 
07
 
 
想像とおり、「ヨウコ」の勝ちでした。
しかし、私が「ヨウコ」と対戦したら、中盤までに詰まされてしまいますので、私よりは善戦したのか?
 
 
 
Yoko_vs_pocket01
 
 
 
 
黒「ポケコンリバーシ」 対 白「ヨウコのリバーシ」
 
→ 「ポケコンリバーシ」の勝ち
 
22
 
 
Yoko_vs_pocket02_1
 
 
なんと、意外な事に、「ポケコンリバーシ」が勝ってしまいました。
 
僅か、2番勝負だけで「どっちが強い」とは判断は出来ませんが、「ヨウコのリバーシ」と”同程度”な「強さ」と言っても良さそうです。
やはり、「強からず、弱からず」・・・・でしょうか。

| | コメント (0) | トラックバック (0)

2016年8月13日 (土)

Excelでオセロ(リバーシ)を作ってみた

最近、プログラミングが全く出来ていません。
X1版ゼビウスを(改善点はあるにせよ)作り終えてしまったので、「次は何をするのか」を思案しておるところです。

出来れば、X1 Turbo Zで、ゼビウスを作ってみたいとは思っているのですが・・・・
(X1 Turbo Z持ってないけど)
 
そんな訳で、「ちょっと、コーヒーブレイク(?)」として、「Excelでコンピュータ対戦オセロ」を作ってみました。
(※以降「リバーシ」と書きます。Othello、オセロは株式会社メガハウスの登録商標)
 
なぜ、そんな無意味な事をするのか?
 
それは、Excel VBAの実行速度に興味が沸いたからなのです。
 
Excelには、随分と楽をさせてもらっています。
ちょっとした、ツールは、殆どExcelで作ってしまっています。

Excel VBAを使いこなしている訳ではありませんが (自分が必要となるものならば) 「サクッっと作れる」のが、非常に便利です。
 
昔ながらのBASICのスキルが、かなり使えるのも私には向いているのかもしれません。
そして、「ソコソコ」な速さで動いているような気がします。
 
ならば、「リバーシの先読み」をしたら、どの程度で動くのか、確かめたくなるではありませんか。
 
00
 
「サクッっと完成!」
(やっぱり、BASICって楽だな~)
えーと見た目はアレですが・・・・
 
なお、これは、以前ポケコン(PC-G850) で作ったロジックをそのまま採用しています。
なので、リバーシの素人(?)からしてみたら、「強からず、弱からず」だと思います。
(ファイミコンオセロの最強レベルよりは強い)
 
 
なお、ポケコン版(PC-G850)の最強レベルは、以下の通りです。
 
  必勝読み前までは 4手先読み
  必勝読み   空き13マスから
  完全読み   空き10マスから
 
ポケコン(PC-G850)は、Z80なのですが、(最強レベルだと)「かなり、待たされます」
8ビットマシンでは、(私のプログラミング技術では)、こんなモノです。
 
今回、いくらなんでも、そこまで遅くは無いであろうと思い、最強レベルは以下の仕様にしました。
 
  必勝読み前までは 6手先読み
  必勝読み   空き18マスから
  完全読み   空き15マスから
 
 
早速、リバーシ素人の私がプレイ開始!
コンピュータの強さは、レベル3 (上から2番目=ポケコン版の最強レベルと同じ強さ)
 
 
01
 
自分は「黒」です。(先手)
 
02
 
残り4マスで、42対18と、「黒の数は」多い
・・・しかし、置けるトコロが、B2しかないヨ
もう、中盤から、コンピュータに支配されまくっていました。
 
03
だよね~
04
 
んで、やっぱり負けです。
次は白(後手)で、チャレンジ
Excel_reversi_0000
 
勝てない・・・・
と言う事は、「ちゃんと出来ている」って事かな。
 
↑動画キャプチャの時間短縮(編集工程削減の為)、あまり深く考えずに着手しています。
だから、負けた?
 
さすがに、4手先読み程度ならば、Excel VBAでも、サクサクと動きます。
 
しかし、最強レベル(S)を選択すると、とっても遅くってダメでした。
18マス空きからの、必勝読みなんて、フリーズしたかと思ってしまいましたよ。
(30年前ならば、コレでもOKかと思いますが、現代ではありえません)
 
 
【まとめ】
 
「Excel VBA の実行速度は、(想像以上に)遅かった!!」
 
 
一応、ダウンロードできるようにしておきました→こちら
(使う人は皆無だろうけどね)
 
【蛇足】
 
なお、ポケコン風リバーシはこちら
そして、「普通の」Windows版リバーシはこちら

| | コメント (0) | トラックバック (0)

« 2016年7月 | トップページ | 2016年9月 »