cribbage -
カードゲームクリベッジ
/usr/games/cribbage [
-req ]
name ...
cribbage
は、一方をプログラムが担当し他方をユーザが担当する形式で、
カードゲームのクリベッジをプレイします。
始めに、プログラムはユーザにゲームのルールが必要か尋ねます。-
必要と答えたなら、
According to Hoyle
から適切な節を
more (I)
で表示します。
cribbage
オプションには次のものがあります:
- -e
- プレイヤが自分の手札やクリブの得点化を間違えた時、正しい得点の
説明を教えます。(これは特に始めたてのプレイヤに便利です。)
- -q
- すべてのメッセージを短い形式で表示します。-
これはこのオプションを
指定せずにゲームをプレイしてきたユーザにのみお薦めします。
- -r
- プレイヤにカード束をカットするよう求めるのではなく、
プログラムがランダムにカード束をカットします。
cribbage
はまず、プレイヤに短いゲーム
(“ 1 周 ” すなわち 61
まで) と長い ゲーム (“
2 周 ” すなわち 121 まで)
のどちらをプレイしたいか
尋ねます。`s'
と答えると短いゲームになります。その他の応答は何でも
長いゲームをプレイします。
最初のゲーム開始時に、最初のクリブを誰が取るかを
決めるために、カード束をカットするようプレイヤに求めます。ユーザは
カード束の何枚下のカードをカットするかを示す
0 から 51 の間の数字を
答えなければいけません。よりランクの低いカードをカットしたプレイヤが
最初のクリブを取ります。1
回以上ゲームをプレイすると、前回の
ゲームの敗者が今回のゲームの始めのクリブを取ります。
手札を配るごとに、プログラムはまずプレイヤの手札と誰のクリブであるかを
表示し、それからクリブへ
2
枚のカードを捨てるようプレイヤに求めます。
カードは 1 行につき 1
枚ずつ、後で説明するようにして指定します。
カードを捨てた後、(プレイヤのクリブなら)
プログラムがカード束を
カットするか、(プログラムのクリブなら)
プレイヤにカード束をカットするよう
求めます。
後者の場合、適切な応答は残りの
40
枚のカードから何枚下のカードをカットするかを
示す 0 から 39
の数字です。
カード束をカットした後、子
(クリブを持たないほう)
が最初のカードを
出してプレイが始まります。カードすべてが使われるまで、クリベッジの
ルールに従い、プレイは続きます。プログラムは、全ポイントの得点化と、
テーブル上のカードの合計に、絶えず注意を払います。
プレイが終わると手札が得点化されます。プログラムは適切なカード
(それに角括弧で囲んだ、カットしたカード)
を表示して、プレイヤに自分の
手札
(もしプレイヤのクリブならそれも)
を得点化するよう求めます。
プレイはどちらかのプレイヤがゲーム限界点
(61 か 121) に達するまで
続きます。
数字入力が求められている時の復帰文字は、最も低い正当な値を
タイプすることと同じになります。例えば、カード束をカットする時には
一番上のカードを選ぶことと同じです。
カードはランクにスーツを続けて指定します。ランクは、
`a', `2', `3', `4', `5', `6', `7', `8', `9', `t', `j', `q', `k'
あるいは、“ace”,
“two”, “three”, “four”,
“five”, “six”, “seven”,
“eight”, “nine”, “ten”,
“jack”, “queen”, “king”
のいずれかで指定できます。
スーツは、`s', `h', `d', `c'
あるいは、 “spades”,
“hearts”, “diamonds”, “clubs”
のいずれかで指定できます。
カードは <rank> “ ” <suit>
あるいは <rank> “ of ”
<suit>
のように指定できます。
ランクとスーツの 1
文字指定を用いる場合、スーツとランクを分けるスペースは
省けます。また、希望のランクのカードは
1
枚だけプレイ可能なら、ランクの
入力だけで充分です。例えば、手札が
“2H, 4D, 5C, 6H, JC, KD” で
ダイアモンドのキングを捨てたければ、次のいずれの入力でも可能です。
“k”, “king”, “kd”, “k
d”, “k of d”, “king d”, “king of
d”, “k diamonds”, “k of diamonds”,
“king diamonds”, “king of diamonds”
/usr/games/cribbage
Earl T. Cohen
が論理を書きました。
Ken Arnold
が画面指向のインタフェースを追加しました。