fc2ブログ

05 « 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.» 07

Orfeon Blog

読んだ本の要約、感想など。 他にも日々思ったことをつれづれと書き連ねます。

Flashリバーシ 



「遊び方」
"黒"、"白"ボタンを押すとゲームが開始します。黒が先行で白が後攻になっています。コンピュータのレベルは0~2まであって、0が簡単、1が普通、2が難しい、となっています。遊びたいレベルの数字のLvボタンを押して"黒"、"白"ボタンを押してゲームを開始すると難易度が切り替わります。Lvボタンを押すだけでは難易度は切り替わらないので要注意です。
上の"成績"ボタンを押すと今までのコンピュータとの対戦成績を見ることができます。記録に残るのは、各レベルの黒と白ごとの、勝ち数、負け数、勝ったときの最大石差、勝率、となっています。右下の"消す"ボタンを押すと記録を消すことができます(一度消すと記録は元に戻らないので要注意です)。この対戦記録はあくまでプレイした人のコンピュータに残る記録なので、ブログを見ている複数の人で記録を共有することはできません。
あと、プレイヤーが石を打てるところが無い場合は、コンピュータが勝手にプレイヤーを飛ばして、続けて打ってきます。逆にコンピュータが打てるところがないときはコンピュータは何もしないのでそのまま打ち続けてください。

「仕様」
プログラムはFlashのActionScript3.0で作っていて、Flash Player9以降でないと動作しません。動かない人はAdobeのサイトからFlash Player最新バージョンにアップグレードできます(もちろん無料です)。
今回のFlash版は前回のJavaScript版に比べると難易度が高くなりました。レベル0では5手先の自分の石数が最大になるように、レベル1は5手先の局面を簡単な評価テーブルを用いて一番有利になるように(前回のJavaScript版のレベル2に相当します)、レベル2では5手先の局面を、開放度、取得可能手数、確定石数、危険手数、を基に一番有利になるように、それぞれ手を打ちます。レベル2はさらに終局11手前から完全読みを行います。このレベル2はちょっと難しくてリバーシ経験者じゃないと楽しめないかもしれませんが、リバーシ上達を目指してたまにでも挑戦していただければ幸いです。
あと、対戦記録はPCのFlashの共有オブジェクトとして記憶されますが、共有オブジェクトのスペースがいっぱいになったり、ユーザが設定で共有オブジェクトへの書き込みを禁止していた場合などは記録はできないこともあります。

「ブログパーツの貼り付け方」
ブログパーツとして利用されたい方は下のHTMLをコピーしてプラグインエリアやフリーエリアに貼り付けてください。FC2ブログの方であれば「共有プラグイン」から簡単にダウンロードできます。「iframe」の利用を禁止している楽天とYahoo!ブログ以外のメジャーなブログサービスならおおよそ動くかと思います。ブログ以外のホームページなどでも利用できます。



もし上のHTMLを貼り付けても動かなかった場合はこちらのHTMLを貼り付けてみてください。

「参考図書」
今回は初めてのFlashプログラミングということと、もう少し強いリバーシプログラムを作ってみたいということで、以下の2図書を参考にしました。
ActionScript 3.0ゲームプログラミングブックActionScript 3.0ゲームプログラミングブック
布留川 英一

毎日コミュニケーションズ 2006-11
売り上げランキング : 77548

Amazonで詳しく見る
by G-Tools
ActionScript3.0のリファレンスガイドはAdobeのサイトに載っているので、Flashプログラミングについてある程度知識のある方には必要ないかもしれませんが、この本が数少ないActionScript3.0参考書であることと、開発環境のセッティングに始まり、ゲームを作る際に必要な基本的な機能についてソースコードとセットで広くおさえられているので、とりあえずFlashで何かゲームを作ってみたい入門者の方にはおおまかな言語の概容をつかむ上でも重宝すると思います。 ただし言語の仕組みなどの内容には突っ込んでいないので、プログラミング初心者の方は言語的に似ているJavaなどをあわせて勉強するとよいかもしれません。
リバーシのアルゴリズムリバーシのアルゴリズム
Seal Software

工学社 2003-06
売り上げランキング : 133421

Amazonで詳しく見る
by G-Tools
リバーシを強くするために評価関数の仕組みについて知りたくて読んでみました。自分は評価関数の箇所しかあまり読んでいないのですが、探索アルゴリズムから評価関数、実装設計まで、幅広く扱っていて、コード付で解説されているので仕組みがとても理解し易くて役立ちました。リバーシに限らず、ゲーム探索の勉強を始めるにはうってつけの本のように思います(ただ自分の場合、リバーシの基盤となるボード構成で違っていた部分が多かったのでコード自体は使えませんでしたが…)。ちなみにこの本の著者は(執筆当時)現役の大学生だというからオドロキです。
スポンサーサイト



Posted on 2007/06/10 Sun. 22:07 [edit]

category: 自作プログラム

tag: ブログパーツ  オセロ  Flash 
TB: 5    CM: 107

10

リバーシを公開してみて 

つれづれ日記と銘打ちながら、ずっとこのカテゴリを放置し続けていたものの、さすがにそろそろ何か書かねばということで、思いの他多くのダウンロードをしていただいてうれしい限りだったオセロについて今日は遅まきながらもその感想などを。

プラグインを公開した後、プラグインを公開するのが初めてといこともあって利用してくれた人の反応がとても気になったので、ブログ検索などで見てユーザの方にどう使われているのかいろいろと覗かせてもらったりしました。オセロゲームをプラグインとして設置する理由はいろいろとあると思いますが、基本的には、自分が楽しむため、自分のブログを見に来てくれる人を楽しませるため、の2つだと思うのですが、自分が楽しむため、の観点から使ってくれたユーザの方の反応を見てみると、初期のオセロプラグインは難易度の調整ができなかったため、設置したものの難しくて悔しい。とりあえず勝つまでは付けとくけど勝ったら外す、というケースが結構見受けられました。自分がアップする以前にもfc2のオセロのプラグインがあって、手前味噌ながらもそれよりは強いものを作れたと思うのですが、自分が公開して以降も以前のオセロのプラグインの方をダウンロードしている方もおられたようで、上手く表示されないなどデザインの関係で採用されなかったことも考えられますが、ちょこっとやって気持ちよく勝つ、という気晴らし的な使われ方の需要も結構多いのかもしれません。自分もたまにレベル0で何個差つけて勝てるかやったりしてます(ちなみに最高は64差!)。

自分のブログの閲覧者に楽しんでもらうという観点からの使われ方を見てみると、多かったのが、友達同士で誰が最初に勝ったか、どれだけ差をつけて勝ったか、などでコメント欄などで話が盛り上がっているケースでしょうか。勝った証拠のスナップショットまで掲載されているものも結構ありました。(中にはコンピュータが全部石を取られて負けるという開発者としてはかなり恥ずかしい負け方もありました(汗 )。こういう自分の作ったプラグインで話が盛り上がっているのを見るのはうれしいものでまさに開発者冥利。そういう使われ方としては難易度は結構ちょうど良い感じだったかもしれません。

友人同士でコミュニケーションして楽しむというのはゲームとしては一番楽しい部類に入るものでしょう。やっぱりオセロも一人でやるよりは他の人間や特に友達と対戦する時の方が真剣になれて楽しいでしょうし。Yahoo!なんかではネットでオセロで対戦するゲームもあるみたいです。ただYahoo!とかだとエントリーするのにログインしたりするのが面倒で、オセロやるためにわざわざログインしてやろうと思う人は限られてくるかもしれませんが、同じネット対戦オセロでもブログパーツとしての入り口があって、チャットとかとおんなじノリで参加できると気軽にやってみようと思う人も結構いるのでは?などと考えています(チャットと違って2人対戦なのでマッチングの手間はかかりますが)。

もっとも、本気でやろうとするとサーバサイドでもいろいろやる必要があったり、そもそも参加者が多くないと対戦が成り立たない等の問題があるので、とりあえずはゲーム単体でも友達同士での会話を誘えるようなものを作っていけたらなあ、と思います。

最後に、プラグインの下のリンクですが本来は見栄え的にも邪魔になるため付けないほうがユーザの方達のためなのですが、fc2ブログ以外では共有プラグインのような機能がなく、他に存在を知ってもらう機会も少ないということもあって、できるだけ多くの人に使ってもらいたいという想いからつけさせていただいております。ただ"~つれづれ日記~"はちょっと助長だったかなと反省しておりまして、次からは"by Orfeon"のみの表示にさせていただきたいと思います。

Posted on 2006/11/30 Thu. 00:59 [edit]

category: つれづれ日記

thread: 雑記  -  janre: 日記

tag: オセロ  ブログパーツ  感想 
TB: 0    CM: 0

30

リバーシ(難易度設定機能付) 


難易度設定機能を追加したオセロゲームです。
といっても前より強くなったわけではなくて弱くして遊べるだけなのですが。
難易度選択はボタンの隣のフォームで行い、一番弱いのが0で、一手先の石数を最大にするように、1が一手先の評価関数を最大にするように、2が以前と同じで4手先の評価関数を最大にするようになっております。
その他にも修正したので画面表示がちょっと速くなったかもしれません。
強くするにはちょっと時間がかかりそうなので気長に待ってください。
もしで完成したらフォームで3が選べるようになっているはずです。

使うには下のHTMLコードをフリーエリアのところに貼り付けてください。
fc2ブログで使う場合ならほとんど問題はないと思いますが、それ以外の場所に利用する場合は自前のサーバから使っている画像をダウンロードしているので、サーバのメンテナンス時に使えなくなる時もあります。
あと、以前のオセロゲームとは同時に2つは設定できませんので必ずどちらかは非表示にしておいて下さい。
トップページから見ると下のオセロゲームと同じページ内になってしまって動かないはずなので、
ブログ一覧の方から来てもらえれば動くはずです。

「iframe版」
テンプレートに依存しないため下地の色(白)が気に入らないなどなければこちらをお勧めします。
特にfc2ブログ以外の方は安定しているのでこちらを使ってください。


「div版」
上のでうまく表示されなかったらこちらを使ってください。
逆に、こちらはfc2ブログの共有プラグインで公開している方のソースなので、
fc2ブログの共有プラグインでうまく表示されなかった人は上のものを貼り付けてみてください。

Posted on 2006/11/16 Thu. 02:34 [edit]

category: 自作プログラム

thread: 自作ゲーム  -  janre: ゲーム

tag: オセロ  ブログパーツ  javascript 
TB: 0    CM: 10

16

リバーシ(JavaScript) 


また懲りずにオセロゲームを作る。
これがJavaScriptデヴューなわけですが初めての言語で書く時だとやっぱり、
以前使ったアルゴリズムで書くほうが理解が早い気がするので。
CからJavaに書き換えた時よりもちょっと苦労したけど基本的にほぼ同じ感じ。
でもFirefoxで普通に動いてもIEだと動かないこともあったりいろいろと苦労も。
それ以外のブラウザでは試してないのでひょっとしたら動かないかもです。

手入力で適当に作った評価関数を用いてα-β探索で4手先まで読みます。
以前のJavaApplet版と比べるとやっぱりスクリプト言語なので、
動きが遅いため読める手数が限定されて少し弱くなってます。
プログラミングを洗練させて速くする余地もかなりありそうですがそれは次の機会に。

ブログパーツ用として使うには下のソースコードを好きなところに貼り付けてください。
スタイルシートによってはうまく表示されない場合もあるのでその時はご容赦を…



でもJavaScriptはなんのインストールも無しで動かせるし面白いかも。
ゲームだけじゃなくてHPのインタフェースとかいろいろ使えそう。
もっといろいろ作ってみる予定なので乞うご期待。

Posted on 2006/11/07 Tue. 23:59 [edit]

category: 自作プログラム

thread: 自作ゲーム  -  janre: ゲーム

tag: オセロ  javascript  ブログパーツ 
TB: 1    CM: 25

07

オセロゲーム(JavaApplet) 

勉強がてらにアプレットプログラムを作ってみました。
そしてこれが実は遅まきながらのJavaデビューだったりする。
いちいち配布しなくてもアプレットだとブラウザで使ってもらえるのがいいね。
(ブラウザにJavaが入ってないといけないけど)
ちなみにJavaはここでダウンロードできます。
でもWebアプリケーションとしてはアプレットは最近だとマイナーな様子。
Javaに慣れたらJavaScriptやFlashなどにも首を突っ込んでみたい。
Javaが入ってないとブラウザが落ちるみたいなので続きを読むに入れてます。

まあ、といってもこのゲーム、
基本的にはこの前にVCで作ったオセロを移植しただけなんですが。
難易度は選べなくて設定は前作での"難しい"に相当します。
前と同じように、普段は7手先まで読んで、15手前からは完全に読みます。
15手前にコンピュータが読み切った時は上に勝利宣言を表示します。
10手前からは"最低"何石差で勝てるかを表示します。
ごくまれに早とちりすることもありますがそこは目をつぶってやってください。

ちなみに勝利の秘訣は隅を取らせることでしょうか。
簡単な評価関数だから隅にこだわりすぎるのがこいつの欠点です。

Posted on 2006/10/17 Tue. 01:19 [edit]

category: 自作プログラム

thread: ゲーム  -  janre: ゲーム

tag: オセロ  java  applet  アプレット 
TB: 0    CM: 2

17