jp.gr.java_conf.ishihata.mj_ai
クラス MJ_AI

java.lang.Object
  |
  +--jp.gr.java_conf.ishihata.mj_ai.MJ_AI

public class MJ_AI
extends java.lang.Object

このクラスはAIの基底クラスです。 すべてのAIはこのクラスのサブクラスとして実装します。 このクラスが提供するメソッドはすべて「何もしない」形に実装されています。AIの実装はこれらのメソッドを 適切にオーバーライドすることにより実現します。

導入されたバージョン:
1

フィールドの概要
static int MJAC_NORED
          このフラグを指定して鳴くと、赤牌を明子に取り込まないように処理されます。
static int MJEK_AGARI
          和了して局が終了したことを表します。
static int MJEK_CHONBO
          チョンボして流局したことを表します。
static int MJEK_RYUKYOKU
          流れて流局したことを表します。
static int MJPIR_ANKAN
          アンカンすることを表します。
static int MJPIR_CHII1
          チー(左端を鳴く場合)することを表します。
static int MJPIR_CHII2
          チー(右端を鳴く場合)することを表します。
static int MJPIR_CHII3
          チー(中間を鳴く場合)することを表します。
static int MJPIR_KAN
          カンすることを表します。
static int MJPIR_MINKAN
          ミンカンすることを表します。
static int MJPIR_NAGASHI
          流すことを表します。
static int MJPIR_PON
          ポンすることを表します。
static int MJPIR_REACH
          リーチすることを表します。
static int MJPIR_RON
          ロンすることを表します。
static int MJPIR_SUTEHAI
          捨て牌を表します。
static int MJPIR_TSUMO
          ツモすることを表します。
static int MJR_NOTCARED
          処理しないことを表します。
static int MJST_BASHOGIME
          場所決めの途中であることを表します。
static int MJST_INKYOKU
          局の途中であることを表します。
 
コンストラクタの概要
MJ_AI()
           
 
メソッドの概要
 java.lang.String getName()
          このAIの名前を返します。
 boolean initialize(MIPIface iface)
          このインスタンスを初期化します。
 boolean isExchangeable()
          ゲームの途中から引き継ぎで参加することが可能かどうかを確認するために呼び出されます。
 int onAction(int action, int player_no, int target_no, MJIHaiReader hai)
          自分を含む誰かがアクションを起こした時に呼び出されます。
 int onBashogime(int[] nokori)
          場所決め時に呼び出されます。
 void onEndGame(int rank, int score)
          ゲーム終了時に呼び出されます。
 void onEndKyoku(int reason, int[] score_inc)
          局終了時に呼び出されます。
 boolean onExchange(int state)
          ゲームの途中から引き継ぎで参加する場合に、initialize() の呼び出しの後に呼び出されます。
 void onStartGame()
          ゲーム開始時に呼び出されます。
 void onStartKyoku(int kyoku, int cha)
          局開始時に呼び出されます。
 int onSutehai(MJITehaiReader te, MJIHaiReader tsumohai)
          捨て牌を選びます。
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

MJPIR_SUTEHAI

public static final int MJPIR_SUTEHAI
捨て牌を表します。

MJPIR_REACH

public static final int MJPIR_REACH
リーチすることを表します。

MJPIR_KAN

public static final int MJPIR_KAN
カンすることを表します。

MJPIR_TSUMO

public static final int MJPIR_TSUMO
ツモすることを表します。

MJPIR_NAGASHI

public static final int MJPIR_NAGASHI
流すことを表します。

MJPIR_PON

public static final int MJPIR_PON
ポンすることを表します。

MJPIR_CHII1

public static final int MJPIR_CHII1
チー(左端を鳴く場合)することを表します。

MJPIR_CHII2

public static final int MJPIR_CHII2
チー(右端を鳴く場合)することを表します。

MJPIR_CHII3

public static final int MJPIR_CHII3
チー(中間を鳴く場合)することを表します。

MJPIR_MINKAN

public static final int MJPIR_MINKAN
ミンカンすることを表します。

MJPIR_ANKAN

public static final int MJPIR_ANKAN
アンカンすることを表します。

MJPIR_RON

public static final int MJPIR_RON
ロンすることを表します。

MJR_NOTCARED

public static final int MJR_NOTCARED
処理しないことを表します。

MJEK_AGARI

public static final int MJEK_AGARI
和了して局が終了したことを表します。

MJEK_RYUKYOKU

public static final int MJEK_RYUKYOKU
流れて流局したことを表します。

MJEK_CHONBO

public static final int MJEK_CHONBO
チョンボして流局したことを表します。

MJST_INKYOKU

public static final int MJST_INKYOKU
局の途中であることを表します。

MJST_BASHOGIME

public static final int MJST_BASHOGIME
場所決めの途中であることを表します。

MJAC_NORED

public static final int MJAC_NORED
このフラグを指定して鳴くと、赤牌を明子に取り込まないように処理されます。
コンストラクタの詳細

MJ_AI

public MJ_AI()
メソッドの詳細

initialize

public boolean initialize(MIPIface iface)
このインスタンスを初期化します。 このメソッドはゲーム開始前に一度だけ呼び出されます。 MIPIface クラスのインスタンスはここで渡されます。
パラメータ:
iface - インタフェース
戻り値:
初期化に成功した場合は true, 失敗した場合は false

getName

public java.lang.String getName()
このAIの名前を返します。
戻り値:
名前

onStartGame

public void onStartGame()
ゲーム開始時に呼び出されます。

onEndGame

public void onEndGame(int rank,
                      int score)
ゲーム終了時に呼び出されます。
パラメータ:
rank - 自分の順位(0〜3)
score - 自分の点数

onStartKyoku

public void onStartKyoku(int kyoku,
                         int cha)
局開始時に呼び出されます。
パラメータ:
kyoku - 局(0 : 東一局,1 : 東二局,・・・,4 : 南一局,・・・,7 : 南四局,8 : 西一局,・・・,11 : 西四局,12 : 北一局,・・・,15: 北四局)
cha - 自分の家(0 : 東,1 : 南,2 : 西,3 : 北)

onEndKyoku

public void onEndKyoku(int reason,
                       int[] score_inc)
局終了時に呼び出されます。
パラメータ:
reason - 局が終了した理由。定数 MJEK_XXX のどれか。
score_inc - 点数の変化をあらわす int[4] への参照。この配列の値はそれぞれ自分、下家、対面、上家の点数の変化分をあらわす。

onBashogime

public int onBashogime(int[] nokori)
場所決め時に呼び出されます。
パラメータ:
nokori - 場所決めに使う4つの牌の現在の状態を表す int[4] への参照。 左端の牌が nokori[0],右端の牌が nokori[3]に対応します。 値が4以上の牌が、まだ残っているものです。それ以外の牌は、0=東, 1=南, 2=西, 3=北 を表します。
戻り値:
取る牌のインデックス(0〜3)を返してください。あるいは -1 を返す(デフォルト)と適当に処理してもらえます。

onSutehai

public int onSutehai(MJITehaiReader te,
                     MJIHaiReader tsumohai)
捨て牌を選びます。
パラメータ:
te - 自分の手牌
tsumohai - つもってきた牌。ない場合は null
戻り値:
以下の表を参照。
単に牌を捨てる場合MJPIR_SUTEHAI | x
リーチをかける場合MJPIR_REACH | x
ツモする場合MJPIR_TSUMO
流す場合MJPIR_NAGASHI
カンする場合MJPIR_KAN | hai_no
x : 手牌の左端からのインデックス(0〜13)。te.getTehai()で取得できる配列の添字に対応します。ツモ牌は右端にあると考え、常に13です。
hai_no : 牌番号
表中の記号"|"は論理和を表します。

onAction

public int onAction(int action,
                    int player_no,
                    int target_no,
                    MJIHaiReader hai)
自分を含む誰かがアクションを起こした時に呼び出されます。
パラメータ:
action - 起こされたアクション。以下の表を参照。
捨て牌(リーチの場合を除く)MJPIR_SUTEHAI
捨て牌してリーチMJPIR_REACH
ポンMJPIR_PON
チー(左端を鳴いた場合)MJPIR_CHII1
チー(右端を鳴いた場合)MJPIR_CHII2
チー(間を鳴いた場合)MJPIR_CHII3
ミンカンMJPIR_MINKAN
アンカンMJPIR_ANKAN
ロンMJPIR_RON
ツモMJPIR_TSUMO
流しMJPIR_NAGASHI
player_no - アクションを起こした家(0=自分, 1=下家, 2=対面, 3=上家)
target_no - そのアクションの対象となった家(0=自分, 1=下家, 2=対面, 3=上家)
hai - そのアクションに関連する牌
戻り値:
そのアクションに対する自分のアクション。以下の表を参照。
何もしない0
ポンMJPIR_PON | flags
チー(左端を鳴いた場合)MJPIR_CHII1 | flags
チー(右端を鳴いた場合)MJPIR_CHII2 | flags
チー(間を鳴いた場合)MJPIR_CHII3 | flags
カンMJPIR_KAN
ロンMJPIR_RON
flags : アクションを指定する際のフラグ。定数 MJAC_XXX の論理和結合で指定します。
表中の記号"|"は論理和を表します。

onExchange

public boolean onExchange(int state)
ゲームの途中から引き継ぎで参加する場合に、initialize() の呼び出しの後に呼び出されます。
パラメータ:
state - 現在のゲームの状態。定数 MJST_XXX のどれか。
戻り値:
引き継ぎに成功した場合は true, 失敗した場合は false

isExchangeable

public boolean isExchangeable()
ゲームの途中から引き継ぎで参加することが可能かどうかを確認するために呼び出されます。
戻り値:
このAIが途中からの引き継ぎに対応しているなら true, そうでないなら false