読者です 読者をやめる 読者になる 読者になる

#桑名# はじめてのプログラミング教室

三重県桑名市在住のITエンジニア、たかあきです。はじめてのプログラミング教室を始めましたー。小学生と中学生の子どもがメインですが大人初心者も大歓迎。教室でのワークの様子やプログラミングに関する記事を掲載します。体験と講座のお申込みは、JEUGIAカルチャーセンター桑名(Tel:0594-27-7211)までお願いします。教室についてのご質問は、ブログにコメントいただければ返信します!

今回は特別テーマ2「計算ゲーム作り」に挑戦!

こんばんわ!!、JEUGIAカルチャーセンター桑名で「はじめてのプログラミング教室」の講師やってます!、たかあきです。
本日はプログラミング第8回目を行いました。

本日は、1月に行った特別テーマ1 「アニメ作り」に続いて、特別テーマ2 「計算ゲーム作り」に挑戦でした。
前回の教室で最後に "計算を使ったゲームを作ろう" というお題を出しました。各自アイディアを持って来てもらい本日作品作りを行いました。
アイディア通りに上手く行くかな??、2h以内に完成するかな?と心配もありましたが、無事3人ともプログラム完成しました。

先生、オリジナル作品を作ってもらうとき、見てるだけがいいのか…どこまで声をかけようか…迷います。先生も試行錯誤ですが、生徒からたくさんの学び頂いています。どうも有難う!!

今回の作品、ken君は「5秒ぴったりGAME」、syu君とsyun君は「30カウントゲーム」を作ってくれました。
「5秒ぴったりGAME」は、子どもの頃よくストップウォッチで遊んだ5秒ぴったりで止めるあれです! ken君はアレンジして、時間が短いかあるいは時間を超えた場合にナイトがドラゴンに捕まってしまい、5秒ぴったりだと逃げ切るという設定です。

f:id:takaaki-niikawa:20170319014716j:plain


先ず、この設定が良かったです。ゲームを盛り上げる演出ができていると思います。
次にテストしてドラゴンから逃げ切る時間を5秒ジャストではなく、4.9秒以上5.2秒以下の誤差を付けていることです。
また、ナイトのプログラムでドラゴンに捕まったか判断する部分がきれいに書けていました。110歩歩くとX座標250に到達するから逃げ切ったと判断しているんだね。

f:id:takaaki-niikawa:20170319014802j:plain

もう一つ改善するとしたら、4.9秒以上と5.2秒以下の条件を2つのブロックで分けて作るより、一つにまとめるとすっきりします。

f:id:takaaki-niikawa:20170319014736j:plain


syu君の「30カウントゲーム」は完成一番乗りでした。課題に対して、頭でプログラムを組み立てる力が付いてきた~と感じています。
1から開始して1~3個まで数字を順番に言いあい、30を言ったら負けのゲームです。
syu君作成したプログラムの斬新なところは、3より大きい数字を言うとちゃんと間違えを指摘してくれるところです。syu君のプログラムでは、3より大きい数字の場合無効になる(スキップ)される仕様のようです 

f:id:takaaki-niikawa:20170319014846j:plain


一つ改善するとしたら、まだ先生使い分けを説明していませんでしたが、メッセージは「メッセージを送る」と「メッセージを送って待つ」の2種類があります。「メッセージを送る」ではメッセージを送った後プログラムが次に進みますが、「メッセージを送って待つ」はメッセージを送った先のプログラムが終わり戻ってくるまで待ちます。
実は、syu君のプログラムでは、メッセージを送った後のプログラムで3より大きい数字の場合に無効にして数を引いているので、合計を再計算しているね。実は後のプログラムでこの合計が関わってくるので、「メッセージを送って待つ」の方が良いです。手直ししてみて!!

f:id:takaaki-niikawa:20170319014937j:plain


最後に、syun君も「30カウントゲーム」を作ってくれました。このゲーム実は難しいと思うんです。先生も始めに悩みました。
人 vs 人か、人 vs コンピュータか。順番に数字を言いあうのをどうやって実現するか…。

f:id:takaaki-niikawa:20170319015022j:plain


syun君、始めはスプライトを2つ置いて作り始めたね。その場合、スプライト同志が連携しないといけないので、「メッセージを送って待つ」の仕組みが必要だと思う。
最終的に、人 vs コンピュータにして、スプライトを1つで作りました。
一つ改善するとしたら、一回のくり返しの中に、"コンピュータが乱数で数字を決める部分"と"人が数字を入力する部分"が入っています。もしコンピュータが30を言って負けても次に進んでしまうからコンピュータの数字を決めた後に勝ち負けの判断を入れよう。

f:id:takaaki-niikawa:20170319015250j:plain