ニムト関連プログラム
- プレーヤー側のインスタンスを作る → リストにする。
- プレーヤーインスタンスのリストを渡して、ディーラーインスタンスを作る (各プレーヤーに dealer のインスタンスを教える (各プレーヤーの
get_know_dealer()
が呼ばれる)。カードも配られる (各プレーヤーのget_hand()
)。 - ディーラーが各プレーヤーのカードを 1 枚ずつ得る (各プレーヤーインスタンスの、
put_card()
が呼ばれる) - ディーラーが受け取ったカードを場に並べていく。ただし、場のどのカードよりも小さい数のカードが出された場合は、そのプレーヤーインスタンスにどの列を引き取るか訊く (対応プレーヤーの、
taking_column()
が呼ばれる)。その列のカードがなんだったか記録される (__earned_cards に格納)。また、6 枚目のカードを出したプレーヤーにも前の 5 枚が記録される。どの場合も、即座に場のカードが更新される。 - 手順 3,4 を繰り返す。
- 最後にスコアを表示する。
- 手順 2-7 を繰り返して、誰かの合計スコアが 66 を超えた時点で終わる。
get_know_dealer()
ディーラー側で呼んで、ディーラーのインスタンスにアクセス可能にする (変更不要)
get_hand()
ディーラー側で呼んで、手札を得る (変更不要)
put_card()
ディーラー側で呼んで、どのカードを出すか知らせる (変更可能: 基本クラスでは手札の左から順番に出すアホな仕様)
taking_column()
一番小さい数を出したときに Dealer 側で呼んで、どの列を引き取るか知らせる (変更可能: 基本クラスでは一番上の列を引き取るアホな仕様)
self.dealer.num_hand
手札の初期枚数
self.dealer.num_field
場のカード列の数
self.dealer.max_card
カードの最大値
self.dealer.num_max_column
場の一列におけるカードの最大枚数
self.dealer.num_players
プレーヤー人数
self.dealer.field
今のターンの場の状況
self.dealer.played_cards
今のターンの各プレイヤーの出したカード
self.dealer.score
現在のスコア
python3 nimmt.py
: 1 ゲーム
python3 nimmtPack.py
: 1000 ゲーム (変更可能)
必要条件
GNU の getopt が使えること
実行方法
sh play_nimmt.sh [オプション] [パラメーター]
-h
オプションで、ヘルプが出るので参照。
または、nimmtPack.py を実行。
実行方法
python3 format_score.py [オプション]
-h
オプションで、ヘルプが出るので参照。