Orfeon Blog
読んだ本の要約、感想など。 他にも日々思ったことをつれづれと書き連ねます。
ライフゲーム(JavaScript)
なんとなくJavaScriptでライフゲームを作りたくなったので作ってみました。
ライフゲームについての詳しくはウィキペディアにて。
「使い方」
画面上で左クリックでセルを打ち込むことができます。 もう一度クリックすると消せます。
動いている途中でも同様の操作が可能です。
RANDOMボタンを押すと画面上にランダムにセルを打て、CLEARボタンで全てのセルを消せます。
STARTボタンで動作を開始できて、動いている途中なら停止するSTOPボタンになります。
一番右のフォームは動作の速さを設定するもので、1が一番遅く、4が一番速くなっています。
でも速くなるかは使っているコンピュータのスペックによるので速くならなかったり、フリーズすることもありうるのであまり無理はしないほうがいいかもしれません。
ちなみにブラウザはIE6よりはFirefox2.0の方が結構速いようです。
同じのをC++で書いたことがあったのですが、そっちなら36×36マスでも全然速いのに、JavaScriptだと16×16なのにだいぶ遅くなってしまいました。こういうものはJavaAppletとかで作った方がよさそうです。
ライフゲームについての詳しくはウィキペディアにて。
「使い方」
画面上で左クリックでセルを打ち込むことができます。 もう一度クリックすると消せます。
動いている途中でも同様の操作が可能です。
RANDOMボタンを押すと画面上にランダムにセルを打て、CLEARボタンで全てのセルを消せます。
STARTボタンで動作を開始できて、動いている途中なら停止するSTOPボタンになります。
一番右のフォームは動作の速さを設定するもので、1が一番遅く、4が一番速くなっています。
でも速くなるかは使っているコンピュータのスペックによるので速くならなかったり、フリーズすることもありうるのであまり無理はしないほうがいいかもしれません。
ちなみにブラウザはIE6よりはFirefox2.0の方が結構速いようです。
同じのをC++で書いたことがあったのですが、そっちなら36×36マスでも全然速いのに、JavaScriptだと16×16なのにだいぶ遅くなってしまいました。こういうものはJavaAppletとかで作った方がよさそうです。
28
パネルパズル
オセロの次は五目並べでも作ろうかと思っていましたが、評価関数をいじればすぐできるかと思いきや、なかなかすぐにはできそうにないのでとりあえず遊びで作ったミニゲームをアップしてみます。
最初にパネルサイズを選んでスタートして、クリックすると押したところとその上下左右のパネルの色が反転するパネルを全て同じ色にするゲームで、制限時間(60秒)以内に何回同じ色にそろえられたかを競う内容です。
ただサイズ6に関しては難しいので1つクリアするのに何秒かかったかがスコアとして出ます。
(ちなみに元ネタは大学院試験の問題だったりします)
最初にパネルサイズを選んでスタートして、クリックすると押したところとその上下左右のパネルの色が反転するパネルを全て同じ色にするゲームで、制限時間(60秒)以内に何回同じ色にそろえられたかを競う内容です。
ただサイズ6に関しては難しいので1つクリアするのに何秒かかったかがスコアとして出ます。
(ちなみに元ネタは大学院試験の問題だったりします)
25
リバーシ(難易度設定機能付)
難易度設定機能を追加したオセロゲームです。
といっても前より強くなったわけではなくて弱くして遊べるだけなのですが。
難易度選択はボタンの隣のフォームで行い、一番弱いのが0で、一手先の石数を最大にするように、1が一手先の評価関数を最大にするように、2が以前と同じで4手先の評価関数を最大にするようになっております。
その他にも修正したので画面表示がちょっと速くなったかもしれません。
強くするにはちょっと時間がかかりそうなので気長に待ってください。
もしで完成したらフォームで3が選べるようになっているはずです。
使うには下のHTMLコードをフリーエリアのところに貼り付けてください。
fc2ブログで使う場合ならほとんど問題はないと思いますが、それ以外の場所に利用する場合は自前のサーバから使っている画像をダウンロードしているので、サーバのメンテナンス時に使えなくなる時もあります。
あと、以前のオセロゲームとは同時に2つは設定できませんので必ずどちらかは非表示にしておいて下さい。
トップページから見ると下のオセロゲームと同じページ内になってしまって動かないはずなので、
ブログ一覧の方から来てもらえれば動くはずです。
「iframe版」
テンプレートに依存しないため下地の色(白)が気に入らないなどなければこちらをお勧めします。
特にfc2ブログ以外の方は安定しているのでこちらを使ってください。
「div版」
上のでうまく表示されなかったらこちらを使ってください。
逆に、こちらはfc2ブログの共有プラグインで公開している方のソースなので、
fc2ブログの共有プラグインでうまく表示されなかった人は上のものを貼り付けてみてください。
16
リバーシ(JavaScript)
また懲りずにオセロゲームを作る。
これがJavaScriptデヴューなわけですが初めての言語で書く時だとやっぱり、
以前使ったアルゴリズムで書くほうが理解が早い気がするので。
CからJavaに書き換えた時よりもちょっと苦労したけど基本的にほぼ同じ感じ。
でもFirefoxで普通に動いてもIEだと動かないこともあったりいろいろと苦労も。
それ以外のブラウザでは試してないのでひょっとしたら動かないかもです。
手入力で適当に作った評価関数を用いてα-β探索で4手先まで読みます。
以前のJavaApplet版と比べるとやっぱりスクリプト言語なので、
動きが遅いため読める手数が限定されて少し弱くなってます。
プログラミングを洗練させて速くする余地もかなりありそうですがそれは次の機会に。
ブログパーツ用として使うには下のソースコードを好きなところに貼り付けてください。
スタイルシートによってはうまく表示されない場合もあるのでその時はご容赦を…
でもJavaScriptはなんのインストールも無しで動かせるし面白いかも。
ゲームだけじゃなくてHPのインタフェースとかいろいろ使えそう。
もっといろいろ作ってみる予定なので乞うご期待。
07
オセロゲーム(JavaApplet)
勉強がてらにアプレットプログラムを作ってみました。
そしてこれが実は遅まきながらのJavaデビューだったりする。
いちいち配布しなくてもアプレットだとブラウザで使ってもらえるのがいいね。
(ブラウザにJavaが入ってないといけないけど)
ちなみにJavaはここでダウンロードできます。
でもWebアプリケーションとしてはアプレットは最近だとマイナーな様子。
Javaに慣れたらJavaScriptやFlashなどにも首を突っ込んでみたい。
Javaが入ってないとブラウザが落ちるみたいなので続きを読むに入れてます。
まあ、といってもこのゲーム、
基本的にはこの前にVCで作ったオセロを移植しただけなんですが。
難易度は選べなくて設定は前作での"難しい"に相当します。
前と同じように、普段は7手先まで読んで、15手前からは完全に読みます。
15手前にコンピュータが読み切った時は上に勝利宣言を表示します。
10手前からは"最低"何石差で勝てるかを表示します。
ごくまれに早とちりすることもありますがそこは目をつぶってやってください。
ちなみに勝利の秘訣は隅を取らせることでしょうか。
簡単な評価関数だから隅にこだわりすぎるのがこいつの欠点です。
そしてこれが実は遅まきながらのJavaデビューだったりする。
いちいち配布しなくてもアプレットだとブラウザで使ってもらえるのがいいね。
(ブラウザにJavaが入ってないといけないけど)
ちなみにJavaはここでダウンロードできます。
でもWebアプリケーションとしてはアプレットは最近だとマイナーな様子。
Javaに慣れたらJavaScriptやFlashなどにも首を突っ込んでみたい。
Javaが入ってないとブラウザが落ちるみたいなので続きを読むに入れてます。
まあ、といってもこのゲーム、
基本的にはこの前にVCで作ったオセロを移植しただけなんですが。
難易度は選べなくて設定は前作での"難しい"に相当します。
前と同じように、普段は7手先まで読んで、15手前からは完全に読みます。
15手前にコンピュータが読み切った時は上に勝利宣言を表示します。
10手前からは"最低"何石差で勝てるかを表示します。
ごくまれに早とちりすることもありますがそこは目をつぶってやってください。
ちなみに勝利の秘訣は隅を取らせることでしょうか。
簡単な評価関数だから隅にこだわりすぎるのがこいつの欠点です。
17