この課題はJavaSE基本文法の卒業課題です。

個々人でチャレンジしてください。

コンピュータが用意した0-99の数を探すゲーム。

ユーザーが推測した数を入れると正解よりも大きいか小さいか,または正解であるかをコンピュータが答える。

それを繰り返すことで答えを探す。

ただし、5回以内に正解できないとゲームオーバー。

なお、答えの数は乱数を使って毎回別の答えを用意する。

ヒント1:0-99の範囲の整数の乱数を発生させるにはMathクラスのランダムメソッドが便利です。

ヒント2:キーボード入力は以下のScannerクラスが便利です。

●数当てゲームを作成してください。

1.ユーザーが3回以内で正解したら褒め言葉を言う

ユーザーが文字を入力したなどのキーボード入力エラー処理は考慮しなくてよい。

(出力例1:大成功ケース)

秘密の答え:25

5回以内に数を当ててね。3回以内ならすごいことだよ。

キーボードから数値を入力してください>25

大あたり!すごいことだよ!

(出力例2:成功ケース)

秘密の答え:89

5回以内に数を当ててね。3回以内ならすごいことだよ。

キーボードから数値を入力してください>50

もっと大きいよ

キーボードから数値を入力してください>75

もっと大きいよ

キーボードから数値を入力してください>82

もっと大きいよ

キーボードから数値を入力してください>89

あたり。まあまあすごいよ。

(出力例3:失敗ケース)

秘密の答え:3

5回以内に数を当ててね

キーボードから数値を入力してください>1

もっと大きいよ

キーボードから数値を入力してください>2

もっと大きいよ

キーボードから数値を入力してください>4

もっと小さいよ

キーボードから数値を入力してください>5

もっと小さいよ

キーボードから数値を入力してください>6

もっと小さいよ

5回以内で答えられなかったのでゲーム終了

 

2.タイマーで経過時間(秒)を表示する

(出力例)

秘密の答え:9

5回以内に数を当ててね。3回以内ならすごいことだよ。

キーボードから数値を入力してください>50

もっと小さいよ

キーボードから数値を入力してください>25

もっと小さいよ

キーボードから数値を入力してください>12

もっと小さいよ

キーボードから数値を入力してください>6

もっと大きいよ

キーボードから数値を入力してください>9

あたり。まあまあすごいよ。

27秒かかったよ

ヒント:時間を計測するためには、java.lang.SystemクラスのcurrentTimeMillisメソッドを参照ください。

 

3.プレイヤーにレベルを選択させる

(1)0~9  (2)0~99 (3)0~999

の3通りでレベルを選択させる。

1~3以外の入力があった場合は再入力を促す。

(出力例)

レベルを選んで下さい (1)0~9  (2)0~99 (3)0~999 > 4

(#^ω^)もう一度レベルを選んで下さい (1)0~9(2)0~99(3)0~999 >3

秘密の答え:69

5回以内に数を当ててね。3回以内ならすごいことだよ。

キーボードから数値を入力してください>69

\(^o^)/大あたり!1回目だからすごいことだよ!

3秒かかったよ

条件:繰り返しと分岐を組み合わせてユーザーからのエラー入力を適切に処理すること。

 

4.最後に入力履歴を表示する。

(出力例)

レベルを選んで下さい (1)0~9  (2)0~99 (3)0~999 > 1

秘密の答え:7

5回以内に数を当ててね。3回以内ならすごいことだよ。

キーボードから数値を入力してください>50

もっと小さいよ

キーボードから数値を入力してください>25

もっと小さいよ

キーボードから数値を入力してください>12

もっと小さいよ

キーボードから数値を入力してください>6

もっと大きいよ

キーボードから数値を入力してください>8

もっと小さいよ

5回以内で答えられなかったのでゲーム終了(@^^)/~~~

18秒かかったよ

次回のために履歴を表示するので参考にしてね (^^)!

50→25→12→6→8→終了!

ヒント:ユーザーからの入力履歴を配列等に格納しておく。

 

5.自由改良

チーム内で話し合いの上、自由に改良する

 

●Hit & Blowを作成してください

※新しいプロジェクトを作成すること

6.コンピューターが3桁の数値を出題する

以下の例のように、3桁であるか否かをチェックすること。

ただし、ユーザーが入力したのが文字列であった場合のエラー処理はまだ考えなくてよい。

(出力例:成功ケース)

—Hit & Blow—
コンピューターが用意した3桁の数字を当ててください。
3桁の数字に重複はありません。
あなたが入力した数字の
位置と数字が当たってたらhit、
数字だけあってたらblowです。
3桁ともヒットになったらあなたの勝ちです。
10回以内に当ててください。
秘密の答え867
— 1回目の3桁の数値を入力 —
867
hit:3 blow:0
あなたの勝ちです!(^_-)-☆

(出力例:エラーケース)

(中略)
秘密の答え679
— 1回目の3桁の数値を入力 —
12
3桁で入力してください。
解答権を1回分失いました。
— 2回目の3桁の数値を入力 —
aaa
hit:0 blow:0
— 3回目の3桁の数値を入力 —
796
hit:0 blow:3
— 4回目の3桁の数値を入力 —

ヒント1:キーボード入力した3桁の文字列から目的の1桁の文字を取得するためには、 StringクラスのcharAt() メソッドを調べてください。

ヒント2:1桁の文字を数値に変換するためには、 CharacterクラスのgetNumericValue() メソッド を調べてください。

7.バリデーションをする

3桁の数値以外が入力された場合はユーザーに再入力を依頼する。

ヒント:3桁の数値かどうかを判定するためには、キーワード:「正規表現」 で調べてください。

8.1桁から10桁の出題に対応する。

「レベルを選んでください(1-10):」と表示する。

ヒント:なし。

 

 

以上。

 

JavaSEの問題集トップページに戻る