提出小課題(プログラミング)
・競争ゲーム;予想を入力し当たりか外れかを表示させるなどなど。
・提出物;プログラム(コード)を印刷して提出。
以下の順でプログラムをしてください。絶対に順番を飛び越してはいけません。一つが完成しきちんと動いたら次の問題に修正していってください。
プログラムの先頭あたりに、コメント文として、学籍番号と名前を明記すること!
時間になったら、その時点で完成しているプログラムを提出していただきます。
提出方法は、時間になったら指示します。
※注意;
○課題「2人のパラシュート早く降下するのはどれ?競争」
設定;2人がパラシュートで上空から降下してきます。
先に地面についた者を勝ちとします。
以下、まず「1」のプログラムを作成したら、次に「2」になるようプログラムを修正していってください。
決して先に「2」など先を作ってはいけません。絵やメッセージなど見栄えは一切気にする必要はありません。
プログラムが動くことが大事です。
- 基礎部分のプログラム
- 2つのパラシュート降下競争ゲームを作ってください。
- 早く下についた者を勝ちとします。
- ランダムに下降させ、どれが勝つかは決まっていないプログラムにしてください。
- 勝った者がどれかをメッセージで表示させてください。
- 注意:
- ピクチャーボックスはコントロール配列とせず、別々のもの(例えばPicture1とPicture2)としてください。
- 2つのどれかが地面についたら終了とさせてください。
つまり、例えば0番がついたら終了とするのではなく、2つの内どれか先に着いた段階でゴールとします。Do文の終了条件及び勝ちの判定条件がちょっと複雑になってしまいますが、慌てずじっくりと考えてください(AndもしくはOrを利用する必要があります)。
- 2つのパラシュートはピクチャーボックスで表現するものとします。
但し、絵は無くて結構です。
- 左から0番、右を1番としておきましょう。
- パラシュートに性格を持たせよう[拡張1]
- 上記では2人(パラシュート)は同じようなランダムさで落ちてきます。
- ここでは2人に各々性格を持たせて落ち方に違いがあるようにしましょう。
- 但し、どれが勝つかはわからないように!
- 駄目な例;1番は1〜4までのさいころで、2番は1〜6までのさいころ、3番は1〜8までのさいころで落ちてくるとすると、殆どの場合3番が先に落ちてしまうので、駄目です。
- 考え方の例;
- 性格として例えば、「地道」「普通」「気まぐれ」の三つを表現するとします。
- 「地道」はさいころを使わず、常に3つづつ落ちるようにします。
- 「普通」はさいころ2〜4(期待値は3となる)を利用して落ちるようにします。
- 「気まぐれ」は時には大きく落ちることもあれば小さくしか落ちないこともあるとします。
例えば0〜6(期待値は3)のさいころを利用して落ちるようにすると、落ちないときもあれば6個も落ちることもあるとなります。
- これらをうまくInt( Rnd(1) * n + m) で表現してみましょう。
- Int()は括弧内を整数にするという働きをする命令です。座標は必ず整数でないといけないので、これが必要となります。
- Rnd(1)は0〜1未満(0.9999...)のどれかの数字になります。
- これにnを掛けることにより、0〜n未満の数字になります。
- 更にmを足すことにより、m〜(n+m)未満の数字になります。
- そしてIntにより整数にすると、m〜(n+m-1)のどれかの整数になるわけです。
- さいころの例 Int(Rnd(1)*6+1) で確かめてみましょう。
- スタートとゴールの変更[拡張2]
- 上記プログラムを変更・拡張します。
- 上記では画面の一番上をスタート、画面一番下をゴールとしました。
- 今度は、スタート地点を画面の上から少し下とし、ゴールを画面下から少し上とします。
- ゴールである地面(画面最下より少し上)に、線を引いてください。
- 注意:
- ゴール線(地面という想定)は、プログラム実行後に現れるのでOKです。
つまり、Line文で書かせればよいです。
- ゴール線は画面最下ではなく、その少し上とします。この少しをどのようにプログラムで表現するかですが、Form画面の高さを参考にして、例えば、画面の高さの上から90%をゴールとしてみましょう。
- 同様にスタート地点は、Form画面最上ではなく、その少し下としますが、例えば画面の高さの上から10%をスタートとしてみましょう。
- 予想を入力できるようにし、予想が当たったのかを判断させよう[拡張3]
- どれが勝つかの予想を入力できるようにしましょう。
- また勝ったか負けたかを判定して、メッセージを表示させましょう。
- 注意:
- メッセージはラベルのCaptionを利用して簡単なメッセージを表示させましょう。
- 予想の入力は、InputBox()を利用し、0,1のいづれかを入力してもらうようにします。
- メッセージのバラエティを豊富にし、異常入力を拒否させよう[拡張4]
- 勝ち・負けのメッセージにバリエーションを持たせましょう。
- 予想の入力時に、異常な入力、例えば0,1以外だったら再度入力できるようにしましょう。
- 注意:
- 勝ち・負けのそれぞれの場合のメッセージとして、各々3つの違ったメッセージパターンを準備し、さいころを振ってどれかを適当に表示させましょう。この際に配列を利用すること。
- 予想の入力は0か1のどちらかであるはずだが、もしユーザがそれ以外の予想をした場合(例えば2番など)、再度入力をさせるようにしましょう。
Do文を使って実現するとよいとおもわれます。
- 勝ったら花火[拡張5]
- 勝ったら(予想が当たったら)、メッセージと共に花火をあげてみよう。
- 花火とは、Circle文を使って同心円を描かせる程度でよい。
- もっと時間があったならば。。。[更なる拡張]
- 予想番号と共に持ち点を賭けるようにすうこともできるはず。
- 2つの競争ではなく、3つの競争にすることもできるはず。
(コントロール配列にした方が便利かも)
- 勝ったら絵を切り替えて喜ぶような絵を表示させることも可能なはず。
- ふらふら横に揺れながら落として行く様にもできるはず。
- その他アイデアと工夫次第で色々と拡張できるぞ。。。
[「C班」プログラミング基礎のTopに戻る]