アスペクト指向勉強会 - 実践編 (第9回)
何度か目は覚めたものの、どうしても起きられず4時間遅れで参加。(^^;;)
ブラックジャックのゲームの要件のまとめが終了。
次回は Theme の抽出を行います。ようやく AOAD らしくなりそう。
ちなみに要件のリストは以下のとおり。(書いちゃって大丈夫かな?)
- 概要
- R1: プレイヤーはプレイヤー同士ではなくディーラーとの間で1対1の勝負を行う
- R2: プレイヤーが何人かいる場合には、ディーラーは複数のプレイヤーと同時に勝負をする
- R3: プレイヤーは、手持ちのカードのポイントの合計が、ディーラーよりも大きく21以下になるようにすることを目標とする
- R4: ゲームでは、ジョーカーを除く、52枚のトランプを使用する
- R5: カードのポイントは、カード2〜10ではその数字通りの値である
- R6: 絵札であるK (キング)、Q (クイーン)、J (ジャック) は10と数える
- R7: A (エース) のみは、1あるいは11のどちらかとして数えることができる
- テーブル
- R8: システムが用意するテーブルの数は n 個とし、テーブルの数は増減しないものとする
- R9: ユーザーはテーブルを指定してゲームに参加、もしくは見学することができる
- R10: 1つのテーブルに参加できるユーザーの数は1〜4人とする
- R11: ユーザーは参加者が4人未満のテーブルに対し参加を表明し、着席できる
- R12: プレイヤーはゲームの途中で、退席、退出をすることはできない
- R13: プレイヤー以外のユーザーはいつでも退席、退出ができる
- R14: 1つのテーブルを見学できるユーザーの数には制限がない
- R15: 見学者は、ゲームを観賞するだけで、参加することはできない
- ログイン
- R16: ゲームに参加するユーザーはログインをしていなければならない
- R17: ログインはユーザー名と、パスワードで認証を行う
- R18: 未登録ユーザーはユーザー名と、パスワードを入力してユーザー登録をおこなう
- R19: ユーザーはユーザー登録時に所持金として50ポイント与えられる
- R20: ゲストユーザー (ログインしていないユーザー) はゲームに参加はできないが見学はできる
- ログアウト
- R21: 着席者はログアウトをすることはできない
- R22: 着席者以外のユーザーはいつでもログアウトができる
- ゲームの開始
- R23: 最初のユーザーが着席してから5秒後、もしくは前回のゲームが終了してから5秒後に、着席しているユーザーでゲームを開始する
- R24: 前回のゲーム終了時に着席しているユーザーは、ゲームの開始時にゲームの参加、見学、退出を表明する
- R25: 前回のゲーム終了時に着席しているユーザーで、参加表明がなかったユーザーはゲーム開始時に自動退席となる
- ベット
- R26: ゲームを開始後、最初に各プレイヤーは賭け金 (ベット) を決める
- R27: プレイヤーはゲーム開始時に強制的に1ポイントのベットを行う
- R28: プレイヤーは所持金の範囲内で追加のベットを行うことが出来る
- R29: プレイヤーが追加のベットをできる時間は7秒間とする
- カード配布
- R30: プレイヤーのカードは、ディーラーに向かって一番右のプレイヤーから順番に配布する
- R31: ディーラーはプレイヤー全員にカードを、表向きで2枚ずつ配る
- R32: ディーラーはプレイヤーごとにカードを、1度に2枚ずつ配る
- R33: ディーラーのカードはプレイヤーへの配布が終わった後に配布する
- R34: ディーラーは自分自身にカードを、表向きで1枚、裏向きで1枚 (ホールカード) 配る
- ナチュラル21
- R35: 最初のカード配布時点で、カードのポイントの合計が21であることを「ナチュラル21」(又は「ナチュラルブラックジャック」) と呼ぶ
- R36: プレイヤーがナチュラル21で、ディーラーがナチュラル21でなかった場合には、プレイヤーはベットの1.5倍の払い出しを受ける
- R37: プレイヤーもディーラーもナチュラル21の場合には引き分け (プッシュ) となる
- R38: プレイヤーがナチュラル21ではなくディーラーがナチュラル21の場合にはプレイヤーの負けとなる
- R39: プレイヤーは、ディーラーに向かって一番右のプレイヤーから順番にプレイを行う
- R40: プレイヤーはヒット (hit; カードをもう1枚引く) またはスタンド (stand; カードを引かずにその時点のポイントで勝負する) の選択を行う
- プレイヤーのプレイ
- R41: プレイヤーの思考中の持ち時間は7秒とし、持ち時間を越えると自動的にスタンドが選択される
- R42: プレイヤーは21を超えなければ何回でもヒットすることができる
- R43: プレイヤーが21を超えてしまうことをバスト (bust) と呼び、直ちにプレイヤーの負けとなる
- R44: プレイヤーが全員スタンドするとディーラーは自分のホールカードを開く
- R45: ディーラーは、自分のカードのポイントの合計が17以上になるまでカードを引き続ける
- ディーラーのプレイ
- R46: ディーラーが21を超えた場合には21を超えていないプレイヤーは全員勝利する
- R47: プレイヤーとディーラーが同じポイントの場合にはプッシュとなる
- R48: ディーラーのポイントは、手持ちのカードのポイントの合計が21を超えなければ、Aは11と考えて計算する
- 配当のルール
- R49: プレイヤーが勝った場合は、賭け金と同額の払い出しを受ける
- R50: 引き分けの場合は、賭け金がプレイヤーに返還される
- R51: プレイヤーが負けた場合は、賭け金が没収される
- 機能外要求
- R52: ユーザインターフェースはGUIとする
- R53: 特別なアプリケーションのインストールを必要とせず、利用できる
- R54: 遠隔地からネットワークを介してアプリケーションを利用できる
- R55: ネットワークに障害があった場合も、ゲームを途中から再開できる
- R56: ユーザー情報 (ユーザー名、パスワード、所持金) は、データベースに保存される
- R57: ゲーム開始時にテーブル名、各参加者のユーザー名、所持金をログに取る
- R58: ゲーム終了時にテーブル名、各参加者のユーザー名、掛け金、ゲーム結果、所持金をログに取る