« 2009年5月 | トップページ | 2009年7月 »

2009年6月

2009-06-23

二枚落ち

狼将棋では最近ほとんど対局をしていませんでしたが、昨日(日付が変わっていますので、正確には一昨日ですね。と思ったけど記事は23日付になってるから昨日でいいのか?)トーナメントに参加してほぼ1ヶ月ぶりの対局になりました。(将棋の内容には触れませんが…。)

さて、1ヶ月近く対局はしていなかったのですが、その間コンピュータ相手には二枚落ち下手でよく指していました。結構いい勝負になるのでとても面白く、二枚落ちがちょっとしたマイブーム(笑)になっています。まあコンピュータのレベルを調整してるのでいい勝負になって当然といえば当然なのですが、自分くらいの棋力ですと平手で対等になるようにコンピュータのレベルをかなり弱くするよりも、二枚落ちくらいの駒落ちでやるのが面白い将棋になるような気がします。

そもそも駒落ちでコンピュータと指すようになったのは、狼将棋で某兄○さんに二枚落ちで指してもらったのがきっかけでした。で今度、某キ○リさんが二枚落ちで指してくれるとのことなので、とても楽しみにしています。

正直言うと二枚落ち程度のハンデでも全く勝てる気はしないのですけれど…

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

2009-06-11

「まあさスクリプト」バグ修正(1.02)



GoogleChromeで局面がうまく読み込めない事象が発生。


タイミングよく数日前にMacOSX版のGoogleChrome開発者向け版が配布されているようだったので、早速落として検証。どうも正規表現のgオプションでのループで失敗しているみたい。



re=/正規表現/g;
while( re.exec(str) !=null ){
//ループ
if( /*条件*/ ){ break; }
}

こんな感じでループさせて、さらにその外側に1つループがあるんだけど、どうもbreak;でループ抜けた時に前の状態(lastIndexとか)が残ってしまっているっポイ。



re=/正規表現/g;
re.lastIndex=0;

としてやるとちゃんと動くみたいだけど、なんかスマートじゃないよね。


いろいろググってみると、FireFoxなどでもそうなるみたいだ。あれ、FireFoxは試した筈…あれ…あはは駄目だorz…。


というわけで、GoogleChrome、Firefox、Operaで上手く動作してなかった模様。


正規表現のリテラルでの代入をやめてnew RegExpで正規表現オブジェクトをつくってやるのがいいらしい。



re=new RegExp("正規表現","g");
while( re.exec(str) !=null ){
//ループ
if( /*条件*/ ){ break; }
}

こういう風に書き換えました。



while( /正規表現/g.exec(str) !=null ){
//ループ
}

こうやっちゃいけないのは作りながら確認してたんだけど、それで解決したと思ってたっぽい・・・。反省。


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

« 2009年5月 | トップページ | 2009年7月 »