掲載しているソースは
オフィシャルHSP2.6ゲームプログラミング・クックブック―Windows95/98/2000/Me/XP に収録されている「一人麻雀」のソースを改良したもの。ラベル付け、書式などを修正している。
●変数の説明
atama 雀頭チェックのカウンタ win 和了判定のフラグ(0:和了ではない 1:和了) ctable コピーした手牌テーブル(この和了判定に用いる) table 手牌テーブル check 面子チェックのカウンタ koutu 刻子の数 syuntu 順子の数
|
●ソース
;和了判定 *agari atama = 0 : win = 0
*table_init ;手牌テーブルコピー(初期化) dim ctable, 38 memcpy ctable, table, 38*4
*atama_check ;雀頭チェック if (atama >= 38) { return } if (ctable.atama < 2) { atama++ : goto *atama_check } ctable.atama -= 2
;面子チェック check = 0 : koutu = 0 : syuntu = 0 repeat -1 ;刻子チェック if (ctable.check >= 3) { ctable.check -= 3 : koutu++ } a = check if (ctable.a = 0) { check++ if (check < 38) { continue } win = 1 : break } if (a >= 30) { break } ;順子チェック a++ : if (ctable.a = 0) { break } a++ : if (ctable.a = 0) { break } a = check ctable.a-- a++ : ctable.a-- a++ : ctable.a-- syuntu++ loop if (win = 1) { return } else { atama++ : goto *table_init }
|
●手牌テーブル(table[], ctable[])
× 一萬 二萬 三萬 四萬 五萬 六萬 七萬 八萬 九萬 [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
× 一筒 二筒 三筒 四筒 五筒 六筒 七筒 八筒 九筒 [10] [11] [12] [13] [14] [15] [16] [17] [18] [19]
× 一索 二策 三索 四索 五索 六索 七索 八索 九索 [20] [21] [22] [23] [24] [25] [26] [27] [28] [29]
× 東 南 西 北 白 發 中 [30] [31] [32] [33] [34] [35] [36] [37]
|