2010年8月22日日曜日

盤の切れ目っす

デジアカの入学式が終わったっす。
いよいよ本格的に動き始めるっす。
デジアカについてはソラマメで書くっすね。
どうもぺんぎんっす( ◎v◎ )


リバーシについてっす。
手を加え出したらキリが無いっす。

マスの数は8×8で64マスあるっす。
でもinteger型(32bit符号付き整数値)しかないので面倒っす。
uint64とか、せめて配列でもあればラクなんっすけどね。

仕方がないのでinteger型の変数2つでビットボードを作るっす。
盤の上半分と下半分に分けて、それぞれ左上から右下に向かって
bitを割り当てていくっす。
A1が1つ目の変数のLSBで、H4が1つ目の変数のMSB、
A5が2つ目の変数のLSBで、H8が2つ目の変数のMSBっす。

石をひっくり返す処理で、横方向(行方向)を調べるのは簡単っす。
でも縦方向(列方向)とかナナメ方向を調べるのが面倒っす。
面倒というか、頭がこんがらがってるだけなんっすけどね。
1つ目の変数の上位8bitと2つ目の変数の下位8bitは接してるので
縦方向(列方向)を調べるときにはシフトしてやる必要があるっす。
ここで引っかかってるっす。

あと、盤面を2つの変数に分けたので値の取得や更新が1処理で
できないのがイライラポイントっす。
listを使えば見た目は1つで済むんっすけど、実際には
llLIst2Integerで取得→integerで演算→llListReplaceList
ってやることになるっす。


出来なくもないんっすけど、LSLはいろいろと面倒っすね。

1 件のコメント:

  1. 某麻雀ではstringで牌を管理してるって言ってましたよ。

    返信削除

Free Avatar