池のページへ戻る

れさぴょん・れさぴょん for Javaに関する質問はこちらの掲示板へ

れさぴょんサポート掲示板

れさぴょん

れさぴょんはコンピュータ将棋の教育目的で書かれた、うさぴょんとは一応独立した、でも、うさぴょんのソースは大いに参考にした、そんなプログラムです。

名前は、「れっさーうさぴょん」の略です。

このソースは、VC++6.0向けです。VC++の6.0以降であればコンパイル可能だと思います。ただし、一応、他のコンパイラを意識して移植可能なように書いているので、BorlandC++などでコンパイルすることもさほど難しくはないと思います。

2007年11月11日現在、以下のバグフィックス版をCSAにライブラリ申請中です。

れさぴょんv3 ダウンロード

ファイルはzip圧縮形式です。(ダウンロードサイズ 約35KB 展開後 約120KB)

ファイルは、lzh圧縮形式です。(ダウンロードサイズ 約32KB 展開後 約120KB)

れさぴょん ダウンロード

このバージョンが、正式にCSAにライブラリとして登録されました。 2005年1月3日以前にれさぴょんをダウンロードした方は、新しいバージョンをダウンロードしてください。(れさぴょん2として公開していたものと同じものになりますので、れさぴょん2をダウンロードした方は不要です。)

BorlandC++用makefile makefile.bccとGCC用makefile makefile.gccが附属しています。gcc,BorlandC++ユーザの方はお試しください。なお、コンパイルオプションに最適化を指定していないので、適当に最適化オプションを付けた方が良いと思います。


その他

工学社から発売された本の中で、CSA将棋を用いた通信への対応・CSAのTCP/IPプロトコルへの対応などについて解説しております。「れさぴょん」をベースに大会に出たいけれど、通信部分を自力で作れない…という方は、書籍を参考にプログラムしてみてください。

機能の説明

Teクラス

将棋の指し手を表すクラスです。
動かした駒・取った駒・移動元・移動先・手の価値などの属性を持ちます。

駒、移動元・移動先の形式は、当然局面のクラスに依存します。

Kyokumenクラス

基本的な局面を表すクラスです。
・合法手を生成する関数 MakeLegalMoves
・ある地点の交換値を求める関数 Eval
・手による局面の変化 Move
 ・局面をハッシュ表にしまうためのハッシュ値の更新
   ・ハッシュ値は、盤面のハッシュ値と持ち駒のハッシュ値を別々に保持しています。
 ・駒の利きの更新
 ・基本的な駒の価値による、評価値の差分更新
・王手を生成する関数 MakeChecks
・詰将棋を解く関数 Mate
 ・手数による反復深化法を用いています。
 ・持ち駒の包含関係により、無駄合いなどに対して高速で処理を行います。

Josekiクラス

うさぴょんと同じ形式の定跡ファイルを用いて、局面が一致している場合に、そこで指された手と指された手の頻度を返します。

定跡データの生成には、うさぴょんの定跡データ生成プログラムを利用してください。

KyokumenKomagumiクラス

駒組みに一定のボーナス点を与えたり、攻め合いになっているかどうかを判定するなど、Kyokumenの評価機能を改良したクラスです。

・局面の評価を行います。
 ・攻め合いになっているかどうかを自陣内・敵陣内の駒から判定します。
 ・終盤度という概念を持ち、終盤近くになると、玉との駒との相対位置を大きく評価します。
 ・駒の位置に一定のボーナス点を与え、矢倉や美濃囲いなどの駒組みをプラスに判定します。

Sikouクラス

局面駒組みクラスを用いて、反復深化αβ法により、思考を行います。
また、深さの浅いところでは、詰将棋の呼び出しも行い、即詰みを発見したり、詰みから逃れようとします。

main関数
先手人間、後手コンピュータで対局が出来るようにサンプルとして作成してあります。

手の入力形式は、移動元2桁+移動先2桁+成る場合には* です。
例えば、1手目76歩は、

7776

のようになります。

駒を打つ場合には、移動元に、歩01 香02 桂03 銀04 金05 角06 飛07を入力して下さい。

ダウンロードした「れさぴょん」を使用する前に、以下をお読み下さい。

使用許諾条件

以下の条件に同意する方にのみ、れさぴょんの使用を許可します。


れさぴょん for Java

工学社のI/Oの連載記事をまとめなおし、コンピュータ将棋の教育目的で書かれたプログラムです。

解説本?はこちら。

2007年11月11日現在、CSAにライブラリ申請中です。


ソースの取り出し方

ダウンロードした、lesserpyon.jarファイルに対して、

jar xvf lesserpyon.jar
を実行することで、ソースコードと簡単な説明も含めて、コンパイル済みのクラスファイルが展開されます。

コンパイル方法

展開したソースコードはSJISで書かれています。

SJISがメインでない環境では、

  1. 文字コード変換を行う
  2. javac -encoding SJIS jp/usapyonsoft/lesserpyon/*.java のようにして、encodingを指定してコンパイルする
の対処を行ってください。

Javaのバージョン

JDK 1.2/1.3/1.4/1.5では、コンパイル及び動作の確認をしています。

ただし、Java1.5以降では、以下のようなWarningが出ます。

注:入力ファイルの操作のうち、未チェックまたは安全ではないものがあります。
注:詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてください。

原因は分かっていますが、1.4以前との互換性のため、当方では修正予定がありません。悪しからずご了承下さい。

機能の説明


Constantsインターフェース

定数の定義です。

Komaクラス

駒をあらわすための定数を定義したクラスです。
また、駒種の判別なども行います。

GenerateMovesクラス

手の生成に関するクラスです。
合法手の生成と、手の評価などを行います。

TTEntryクラス

局面表にしまうデータです。
評価値や、その評価を得た深さ、残り深さ、最善手などを保持します。

TranspositionTableクラス

局面表です。

Teクラス

将棋の指し手を表すクラスです。
動かした駒・取った駒・移動元・移動先・手の価値などの属性を持ちます。

Kyokumenクラス

基本的な局面を表すクラスです。
・手による局面の変化 move
 ・局面をハッシュ表にしまうためのハッシュ値の更新
 ・ハッシュ値は、盤面のハッシュ値と持ち駒のハッシュ値を別々に保持しています。
 ・基本的な駒の価値による、評価値の差分更新
・手による局面の変化 back
 ・局面をハッシュ表にしまうためのハッシュ値の更新
 ・ハッシュ値は、盤面のハッシュ値と持ち駒のハッシュ値を別々に保持しています。
 ・基本的な駒の価値による、評価値の差分更新
・コピーするための関数 clone
・その他、CSA形式棋譜から読み込むための関数など。

KyokumenKomagumiクラス

駒組みに一定のボーナス点を与えたり、攻め合いになっているかどうかを判定するなど、Kyokumenの評価機能を改良したクラスです。

・局面の評価を行います。
 ・攻め合いになっているかどうかを自陣内・敵陣内の駒から判定します。
 ・終盤度という概念を持ち、終盤近くになると、玉との駒との相対位置を大きく評価します。
 ・駒の位置に一定のボーナス点を与え、矢倉や美濃囲いなどの駒組みをプラスに判定します。

Josekiクラス

うさぴょんと同じ形式の定跡ファイルを用いて、局面が一致している場合に、そこで指された手を乱数で選択して返します。

定跡データの生成には、うさぴょんの定跡データ生成プログラムを利用してください。

Playerインターフェース

次の一手を返すインターフェースです。
Human,Sikou,Lanがこのインターフェースをインプリメントしています。

Sikouクラス

局面駒組みクラスを用いて、多重反復深化αβ法により、思考を行います。
また、思考が終わった後、スレッドを起こし、予想した次の相手の手を元に、先読みを行います。

Humanクラス

手の入力形式は、移動元2桁+移動先2桁+成る場合には* です。
例えば、1手目76歩は、

7776

のようになります。

駒を打つ場合には、移動元に、歩01 香02 桂03 銀04 金05 角06 飛07を入力して下さい。

CsaProtocolクラス

TCP/IP版CSAプロトコルを実装しているクラスです。
途中局面からの開始機能には、まだバグがあるかも知れません…。

Lanクラス

CsaProtocolクラスを用いて、相手の次の一手を得るクラスです。

Mainクラス

対局のメインルーチンです。

第一引数として、先手がHUMAN,LAN,CPUのいずれかを、
第二引数として、後手がHUMAN,LAN,CPUのいずれかを与えることが出来ます。
(ただし、両方をLANとすることは出来ません。)

LAN対局の場合、先後が与えたパラメータと入れ替わることがあります。

LANの場合のパラメータ(ログイン先、プログラム名、パスワード等)はハードコーディングされています。
LAN対局時には、必ず書き換えて使用して下さい。

れさぴょん for Java ダウンロード


ダウンロードした「れさぴょん for Java」を使用する前に、以下をお読み下さい。

使用許諾条件

以下の条件に同意する方にのみ、れさぴょん for Javaの使用を許可します。


池のページへ戻る

Copyright (C) 2004-2007 IKE,Y.