将棋ゲーム制作メルマガ RSSを登録する

コンピュータ将棋ソフトの制作を目指す筆者が、将棋関連の様々なことについて考えるメルマガです。

最新号をメルマガでお届けします    
登録 解除

規約に同意して

登録した方には、まぐまぐの公式メルマガ(無料)をお届けします。
2007/09/13

将棋ゲーム制作メルマガ 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/
--------------------------------------------------------------------

この記事を取り寄せる
最新号をメルマガでお届け
登録 解除

規約に同意して

登録した方には、まぐまぐの公式メルマガ(無料)をお届けします。

最近の記事

上へ戻る