Sub早い生徒は、発展課題「数字ではなく、10種類の絵を表示させる。」に挑戦していました。10枚の画像を配列にして、1〜10の乱数に応じた画像を表示させればいいわけですね。Sub第14回・もぐらたたき<もぐらたたき>今回も2時間をかけて、もぐらたたき(もぐらでなく、くま?)を模索しながら作ってもらいました。3つのレベルを選ぶことができ、それによって絵の切り替わるスピードが調整できる。スタートボタンを押すと、ランダムに絵が表示される。表示された絵をクリックすると、絵は消えて得点が加算される。1回のゲーム時間は30秒。Form上にオブジェクトを並べ、プロパティの設定をしていきます。実行したところでは見えませんが、タイマーが2つ使われています。1つは、もぐら(くま?)の表示を制御する、もう1つは30秒を計測するという答えが返ってきました、OK。前回同様、ソースコードは一切提示せず、作成の手順だけをヒントとして与え、1から作ってもらいました。一定の時間間隔で、もぐらをランダムに表示させるにはどうしたらよいか。もぐらのランダム表示を、一定時間(30秒)で終わらせるにはどうしたらいいか。もぐらのランダム表示の時間間隔を(初級、中級、上級に応じて)変えるにはどうしたらよいか。もぐらをクリックできたら、得点を加算していくにはどうしたらいいか。一定の時間間隔で、もぐらをランダムに表示させるにはどうしたらよいか。True」にするという考え方が主流でした。中には、Pictureオブジェクトを使ってやってみようという生徒もいました。試しに実行してみて気づくこと、前に表示されたもぐらが残ってしまいます。タイマー1のタイマーイベントは、前のもぐらを消した後に、乱数に応じて次ぎのもぐらを表示させるという手順を踏む必要性があることに思いいたります。もぐらのランダム表示を、一定時間(30秒)で終わらせるにはどうしたらいいか。タイマー2を用いて30秒を計測します。「IF文」による条件分岐で、30秒を越えたら終了処理をします。もぐらのランダム表示の時間間隔を(初級、中級、上級に応じて)変えるにはどうしたらよいか。タイマー1のIntervalを適当に設定していけばいいわけです。生徒の1人が「最初の段階で、例えば初級のところが選択された状態にしたい。それはそうですね、確かに。したらいいか模索をして、結局その生徒自身が解決しました。Subもぐらをクリックできたら、得点を加算していくにはどうしたらいいか。もぐらの絵(Image1)のクリックイベントで得点を加算します。得点に応じて終了のメッセージを変える。同時に2つの絵を表示させる。その他、どうしたらゲームがおもしろくなるか考えるを示しました。ほとんどの生徒が2時間でほぼ完成、最後に1つの例として以下のものを提示しました。Sub第15回・実技テスト2学期に学習した内容を確認する意味で、実技テストを実施しました。どれでもできるものから取り組んでもらいました。課題以上に工夫した点も評価をするとしました。30分ほどの時間設定で、早い生徒は4題めに取りかかっていました。以下に問題と、終了後に示した解答例を紹介します。1.メッセージボタンを押すとメッセージが表示される。Sub2.画像の切り替えボタンに応じて画像が切り替わる。秒数を指定してスタートボタンを押す。指定時間が経過したらメッセージを出す。Sub4.さいころ「さいころをふる」と書かれたボタンを押すと、1〜6の数字のいずれかが表示される。Sub5.図形の描画ボタンを押すと、以下のような時計の絵が表示される。Sub第16回・じゃんけん<じゃんけん>早いもので、最終回となりました。この際だからゲームに徹してしまおうということで、じゃんけんゲームを作ってもらうことにしました。自分の手の出し方はもちろん自分の意志通り、そして相手(コンピュータ)の手の出し方は予測はできません。連勝記録をとり、新記録と比較して更新していくというものです。何らかのゲームを作る時に、自分の意志で決まるもの、自分の意志で決まらないもの、そしてスコアを記録していくことが多かれ少なかれ必要だろうと思い、それの要素を盛り込んだわけです。いつものように完成品をデモして、その内容を確認します。コンピュータを相手にじゃんけんをする。連勝回数を更新したときは、新記録の覧を書き直す。作成の手順をヒントとして示しました。作成の手順じゃんけん(自分は選んだボタンによる、コンピュータは乱数を使う。)じゃんけんの結果を判定して、メッセージをだす。連勝回数を記憶するための変数(i:integer)と新記録を記憶するための変数(j:integer)を設定する。勝った場合は、連勝回数を増やす。負けた場合、これまでの連勝回数が新記録を更新するかどうか判定する。じゃんけん(自分は選んだボタンによる、コンピュータは乱数を使う。)自分の手を出す方は、割合簡単に仕上げていました。ボタンが押されたら、それに対応する画像を表示させればいいわけです。問題はコンピュータの方です。じゃんけんの手は3手あるわけですから、乱数を3つに振り分ければいいわけです。3)」とすれば、xの値として考えられるのは{0,1,2}ですから、それぞれに3手をあてはめればいいわけです。じゃんけんの結果を判定して、メッセージをだす。自分の手とコンピュータの手の組み合わせは9通りあります。それぞれの場合に応じてメッセージを出せばいいわけです。Case文」を使っている生徒とがいました。連勝回数を記憶するための変数(i:integer)と新記録を記憶するための変数(j:integer)を設定する。変数が2つ必要だということを理解しなければなりません。どちらも初期値0を「Form_Load()」で表示させます。勝った場合は、連勝回数を増やす。9つの場合わけのうち、勝った場合は、「i」の値を1増やし、「i」を表示です。この「i」を表示するというのを忘れがちです。値を増やしただけでは、ユーザーに伝わりません。負けた場合、これまでの連勝回数が新記録を更新するかどうか判定する。負けた場合、その時点での「i」の値と「j」の値を比較し、「i」の方が大きい場合は「j」の値を更新します。12人いる生徒のうち、2名はほぼ自力で完成に近いところまでできました。解答例として以下のものを提示しました。解答例を示されても、それをそのまま自分のものにはあてはめることはできません。オブジェクトの内容と番号が違うからです。コードを分析して、それぞれの命令文の意味を理解し、自分のものと見比べなければなりません。この解答例で、工夫している点を説明しました。ひとつは、じゃんけんの3手の画像を配列にしていることです。すると、乱数で出したx={0,1,2}と番号が対応するのでわかりやすいということ。実際、生徒の中には、ぐー、ちょき、ぱーがどれがどれだか混乱している人がいました。1つは、サブプロシージャを定義していることです。じゃんけんに負けた場合、新記録を更新できたかどうかの判定をしなければなりません。これはじゃんけんの9通りの中の3通りについて、全く同じ処理をします。従って、場合分けの中で書いていくとすると、同じことを3回記述することになります。そこでその部分を独立させたということです。i)についても同じことが言えますね。