ソースファイル Kadai17_1.zip Kadai17_1_ver2.zip memo.txt
乱数発生用のDiceクラスを定義
コンストラクタで発生する乱数の範囲(minNumber、maxNumber)を指定します。
コンストラクタが引数一つのときは、1から指定した数字までとなります。
コンストラクタで 指定するminとmaxが同値のときは必ずその値を発生させるように動きます。
shuffle()メソッドで乱数を発生します。getNumber()で数値を取り出します。shuffle()しない限りは同じ値を返します。
setter/getterで値を取得しますが、setterは乱数発生の範囲を指定できるだけで数値そのものを指定することはできません。 同じ値を返したいときはminとmaxに同じその値を入れることで対応できます。
カード(Card)とカード全体(Trump)の情報を保持するクラス
Cardクラスは、単純に suit と number を保持しています。メソッドもgetter/setterのほか、表示用のメソッドのみです。
Trumpクラスは、カード全体52枚の情報を保持します。boolean stat配列で使用済み(true)、未使用(false)を管理します。
Trumpクラスのchoice()メソッドを実行すると、カードを一枚選択します。その際該当するstat[][]配列をtrueにして使用中ということを示すようにしています。 choice()は乱数でsuitとnumberを選びます、使用中だった場合は、未使用のものが見つかるまでsuitとnumberを再選択します。
キー入力用のメソッドを持っているだけのクラス
プロンプトとエラーメッセージと、入力を受け付ける数字の範囲を指定して生成します。
数字しか受け付けません。
チップを管理するクラス
add()〜 1チップずつ加減 〜とadd10()〜 10チップ単位で加減 〜のメソッドを用意していますが、本ゲームでは基本的にチップの増減はadd()を主体として使っています。
add()/add10()は引数に指定した数だけチップを増減します。減算にも対応してチップの加減算両方に対応しています。
メインクラスのBigOrSmallクラスを定義して呼び出し
勝敗はgame()メソッドで行っています。ふつうにチップを賭けるときと、勝利時のBETを賭けるときの勝負ルーチンを一つにまとめたかったのでメソッド化しています。勝敗をintで返します。1ならば勝利としています。
cdとnextcdは選択しているカードを入れているCard型変数です。最初のチャレンジではcdに最初の選択カード、次に引いたカードはnextcdに入れます。それでgame()を呼び出しています。勝利時は次の選択カードをcdに入れて、nextcdとcdでgame()に挑むようにして、再代入の回数を減らしています(ので部分的にみると読みづらいかもしれない)。