グラフ理論を用いた囲碁 GraphGo v0.14

マウスをクリックすることで黒番の着手ができます。白番はAI(CPUによる思考ロジック)が着手します。AIは眼の候補地が相手より多くなるように打っているのですが...。内部ではグラフ理論を用いた局面のクラスPosを利用しています。AIの挙動を調べるために6路盤にしています。

囲碁アプレット GraphGo

囲碁アプレットです。盤上でマウスをクリックすると黒の手を着手できます。コウ、パス、投了は扱えません。ボタンを追加し、計算したベクトルを盤面に表示できるようにしました。デフォルトでは死に石が(明るく)表示されます。ベクトルの計算にはまだ誤りがあります。

ソースプログラム GraphGo.java

アプレット

イメージテストアプレット ImageTestApplet

クラスGTable, GBoard, GBowl, GLidを使った囲碁画面表示用アプレットです。アプレット自体は変更していませんが、ライブラリの変更によりボタン等表示されるようになりました。

ソースプログラム ImageTestApplet.java

アプレット

テストプログラム Sample1

2進行列を扱うクラスBMatrixを使ったサンプルアプリです。前回から変更はありません。

ソースプログラム Sample1.java

テストプログラム Sample2

2進行列を扱うクラスBMatrixを使ったサンプルアプリです。前回から変更ありません。

ソースプログラム Sample2.java

テストプログラム Sample3

2進ベクトルBVectorのサンプルアプリケーションです。変更ありません。

ソースプログラム Sample3.java

テストプログラム Sample4

2進ベクトルBVectorと2進行列BMatrixのサンプルアプリケーションです。変更ありません。

ソースプログラム Sample4.java

テストプログラム Sample5

囲碁の局面を表すクラスPosで3路盤を扱うサンプルアプリケーションです。変更ありません。

ソースプログラム Sample5.java

テストプログラム Sample6

囲碁の局面を表すクラスPosで2路盤を扱うサンプルアプリケーションです。変更ありません。

ソースプログラム Sample6.java

テストプログラム H1V1

新規作成しました。隣接関係を表す行列F0を水平のツケH1、垂直のツケV1と自石Eに分解しそれらからナナメやケイマなどの関係を作り出せるか試してみました。

ソースプログラム H1V1.java

囲碁思考クラス AI

対戦のためのクラスAI(思考ルーチン)です。眼の候補地を多くするように次の手を決めています。

ソースプログラム AI.java

Color強化クラス AltColor

AWTのColorに機能強化したクラスです。変更ありません。

ソースプログラム AltColor.java

JUnitテストケース TestAltColor.java

AltColorの列挙 EnumColor

AltColorのテストケースで使用するために定義した列挙です。変更ありません。

ソースプログラム EnumColor.java

囲碁盤グラフィックスのクラス GBoard

囲碁盤のグラフィックスを表示するためのクラスです。監視するベクトルを明暗で表示するようにしました。

ソースプログラム GBoard.java

碁笥グラフィックスのクラス GBowl

碁笥(ごけ)のグラフィックスを表示するためのクラスです。変更ありません。

ソースプログラム GBowl.java

碁笥の蓋グラフィックスのクラス GLid

碁笥の蓋(ふた)のグラフィックスを表示するためのクラスです。変更ありません。

机グラフィックスのクラス GTable

机のグラフィックスを表示するためのクラスです。ボタンを配置するようにしました。

ソースプログラム GTable.java

ボタン(スイッチ)のクラス GButton

ボタンのグラフィックスを表示するためのクラスです。ボタンにはランプがついています。新規作成しました。

ソースプログラム GButton.java

囲碁局面クラス Pos

囲碁局面を(b, w, F)で表すクラスです。パスできるよう変更しました。監視するベクトルを覚えておく機能を追加しました。

ソースプログラム Pos.java

JUnitテストケース PosTest.java

着手クラス Move

着手を表すクラスです。変更ありません。

ソースプログラム Move.java

JUnitテストケース MoveTest.java

6ベクトルのクラス SixVectors

6つのベクトル(v 活き石, s セキ石, x 死に石, y 目, t 地, m ダメ)を計算するクラスです。併せて眼の候補地(cb, cw)も計算します。計算に誤りがあります。

ソースプログラム SixVectors.java

JUnitテストケース SixVectorsTest.java

ゲームの記録のためのクラス GameRecord

棋譜などゲームの記録のためのクラスです。変更ありません。

ソースプログラム GameRecord.java

字句解析のためのクラス Parse

棋譜の字句解析のためのクラスです。変更ありません。

ソースプログラム Parse.java

乱空点列のクラス RandomArray

Small BasicのIgoプログラムで使っていた乱空点列をJavaのクラスにしました。もともとモンテカルロのプレイアウトの際の高速化のために作ったものですが、まだGraphGoでは利用していません。変更ありません。

ソースプログラム RandomArray.java

JUnitテストケース RandomArrayTest.java

2進行列クラス BMatrix

2進数の行列を表すクラスです。変更ありません。

ソースプログラム BMatrix.java

JUnitテストケース BMatrixTest.java

2進ベクトルクラス BVector

2進数のベクトルを表すクラスです。変更ありません。

ソースプログラム BVector.java

JUnitテストケース BVectorTest.java