いよいよ本格的に動き始めるっす。
デジアカについてはソラマメで書くっすね。
どうもぺんぎんっす( ◎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はいろいろと面倒っすね。
某麻雀ではstringで牌を管理してるって言ってましたよ。
返信削除