【一人遊びポーカー点数評価プログラム】 by Eiji Sugino (sugino@jaist.ac.jp) at Jul.17.1997 ・機能 一人遊びポーカーの解(5×5枚の札の並び)に対して、 総合点数を評価する。 テスト用に通常のポーカー機能も含む。 ・ファイル このパッケージには、以下のファイルが含まれる README.j 本ファイル README.e 英語版 README Makefile makeファイル main.kl1 ドライバー dealer.kl1 カードを乱数によって生成する eval.kl1 点数評価プログラム ・インストール % make によって ファイル pk が生成される。 ・使用方法 % ./pk [Seed] によってプログラムが起動される。 Seedは初期乱数のタネであり、省略可能である。 起動されるとプロンプト '>' に対して、コマンド入力を受け付ける。 なお、コマンド入力 は'.' で終らねばならない。 コマンドとして次が用意されている。 quit or exit : プログラムを終了する。 open(N) : タネをNとした乱数で、新しいカードを用意する。 5 : カードを5枚配る(通常のポーカーとして実行)。 25 : カードを25枚配る。 [card(..),...] : 明示的に任意のカードを設定する。 様式は課題にある通り。 show : 現在保持しているカードを再表示する。 ch(List) : カードを変える。変えるカードは、Listで指定する。 Listは順に、現在の手札の先頭を0,次を1,... で指定 する。 ・表示 1. 通常の5枚ポーカーの表示例 C6 C2 C3 S4 H5 ... 10787 / straight(20) 手札と得点、役を表示する。 手札の組は、spades,hearts,diamonds,clubs をそれぞれS,H,D,Cで、 また位は、10,jack,queen,king,ace をそれぞれ T,J,Q,K,A で表す。 役の()中の数字は、加点の計算に用いている内部の値である。 2. 25枚一人遊びの表示例 104 0 0 118 112 *1 ST CA C6 H9 HA ... 128 *2 S4 SJ H7 DT D5 ... 0 D2 DQ SQ S9 H6 ... 124 S2 S8 H8 S7 DK ... 116 C8 D7 H3 C3 S6 ... 106 21546 / 116 *3 --------------------------- TOTAL=22470 *4 (*1) 縦列の並びに対する点数を表示する。 (*2) 各行を表示した後ろに、その行に対する点数を表示する。 (*3) 左斜め対角線の点数 / 右斜め対角線の点数を表示する。 (*4) 総得点を表示する。 ・使用例 % ./pk プログラム起動 > 5. 5枚配る CK C2 C3 S4 H5 ... 0 / no_pair TIME=0 > ch([0]). 1枚(CK)を交換 D9 C2 C3 S4 H5 ... 0 / no_pair TIME=0 ....... > ch([0]). C6 C2 C3 S4 H5 ... 10787 / straight(20) TIME=0 =-=-=-=-=-=-=-=-=- > open(17). 別のパックを開く TIME=0 > 5. 5枚配る SQ D8 SA HA HT ... 128 / one_pair(14) TIME=0 > ch([0,1,4]). 3枚(SQ,D8,HT)を交換 D2 D6 SA HA S9 ... 128 / one_pair(14) TIME=0 > ch([0,1,4]). H5 DT SA HA D5 ... 926 / two_pairs(5,14) TIME=0 > ch([1]). H5 H4 SA HA D5 ... 926 / two_pairs(5,14) TIME=0 ........ > ch([1]). H5 C5 SA HA D5 ... 29376 / full_house(5,14) TIME=0 =-=-=-=-=-=-=-=-=- > open(7). 別のパックを開く TIME=0 > 25. 25枚配る 104 0 0 0 112 HT CA S5 D8 HA ... 128 S4 SJ H7 DT D5 ... 0 D2 CT SQ S9 H6 ... 0 S2 S8 H8 S7 DK ... 116 C8 CQ DJ C3 S6 ... 0 0 / 116 --------------------------- TOTAL=576 TIME=0 > ch([0,2,3]). 3枚(HT,S5,D8)交換 104 0 0 118 112 ST CA C6 H9 HA ... 128 S4 SJ H7 DT D5 ... 0 D2 CT SQ S9 H6 ... 0 S2 S8 H8 S7 DK ... 116 C8 CQ DJ C3 S6 ... 0 21546 / 116 --------------------------- TOTAL=22240 TIME=0 > ch([11,21]). 2枚(CT,CQ)交換 104 0 0 118 112 ST CA C6 H9 HA ... 128 S4 SJ H7 DT D5 ... 0 D2 DQ SQ S9 H6 ... 124 S2 S8 H8 S7 DK ... 116 C8 H4 DJ C3 S6 ... 0 21546 / 116 --------------------------- TOTAL=22364 TIME=16