将棋ゲーム制作メルマガ 2007/09/13
// =================================================================
将棋ゲーム制作メルマガ
2007/09/13号 第19号
Eメールアドレス : dokko9@mail.goo.ne.jp
将棋ゲームPC : http://www.game4pc.com/
将棋ゲームPCブログ : http://shogi4x.seesaa.net/
// =================================================================
1. はじめに
2007年 9月 2日に本メルマガの前号を執筆・配信した時点では、局面
の操作用に一回り大きな盤(176バイト長)を定義するつもりでした。
それでも悪くはないのですが、余分な領域を用意することが個人的に
不満で、気分よくコーディングできません。
そこで、盤と駒のデータ構造について改めて考えてみました。
今回は、『カード将棋』の盤と駒のデータ構造について。
2. 駒のデータ構造
駒の種別を 1バイトで表現。
0x01 : 歩兵
0x02 : 香車
0x03 : 桂馬
0x04 : 銀将
0x05 : 金将
0x06 : 角行
0x07 : 飛車
0x08 : 王将
0x09 : と金
0x0a : 成香
0x0b : 成桂
0x0c : 成銀
0x0e : 竜馬
0x0f : 竜王
駒の所有者の識別のために 2ビット使用します。
最も右側のビットを第0ビットとして、第4ビットがオン(0x10)なら
先手で、第5ビットがオン(0x20)ならば後手。
この場合、「0x17」が先手の飛車ということになります。
3. 盤のデータ構造
私が十数年前に将棋プログラムに取り組んだとき、81バイト長の盤を
定義しました。
駒の移動先が盤の中に存在するか確認するため、駒の種別毎に移動元
の筋と段をチェックするコードを記述していました。
上記のチェックは、例えば移動元の位置から移動先を求めるテーブル
を定義する方法を採用すれば、簡単なコードになります。
ただ、この方法では、81マスから周囲の 8方向へのテーブル定義だけ
で 648バイト必要です。
桂馬の動きのテーブル定義で、さらに 162バイト。
飛車と角行の遠距離移動もテーブル定義する場合、「81×16×2」と
して 2592バイト。
十数年前は、テーブル定義せずにメモリーを節約する方がよいと判断
し、愚直なコードを実装しました。
でも、搭載メモリが 1GB以上のパソコンが増えてきた現在、上述した
程度のテーブル化での数KBを惜しむ必要はないと思われます。
今回、カード将棋では 81バイト長の盤を使用することにします。
4. 駒の管理
40バイトの 2次元配列で、先手と後手の盤上の駒の位置を保持します。
なお、将棋の駒の数は 40枚で、相手側の王将は終局まで相手側の駒
として盤上に存在しますので、実際に使用するのは最大 39バイトまで
となります。
持ち駒についても、40バイトの 2次元配列を使用します。
駒の種類毎に枚数を保持することにします。
個々の駒に番号を割り当てて駒管理テーブルを作成する方法が考えら
れますが、今回は採用しないつもりです。
// ===== 本文おわり ================================================
--------------------------------------------------------------------
このメールマガジンは『まぐまぐ!』 http://www.mag2.com/ を利用して
発行しています。
配信中止はこちら: http://www.mag2.com/m/0000230289.html
発行者 Webサイト: http://www.game4pc.com/mailmag/
--------------------------------------------------------------------


![転職なら[en]社会人の転職情報!転職成功者続出 転職なら[en]社会人の転職情報!転職成功者続出](http://kamogawa.mag2.com/bn/recommend/sya.gif)
![派遣のお仕事探しなら[en]派遣のお仕事情報 派遣のお仕事探しなら[en]派遣のお仕事情報](http://kamogawa.mag2.com/bn/recommend/haken.gif)
![アルバイト探しは[en]本気のアルバイト アルバイト探しは[en]本気のアルバイト](http://kamogawa.mag2.com/bn/recommend/baito.gif)
![就職サイトは[en]学生の就職情報 就職サイトは[en]学生の就職情報](http://kamogawa.mag2.com/bn/recommend/gakusei.gif)
![転職なら[en]転職コンサルタントキャリアを活かした転職に! 転職なら[en]転職コンサルタントキャリアを活かした転職に!](http://kamogawa.mag2.com/bn/recommend/consul.gif)