【上級者から初心者まで】ブロック崩しゲーム作りの汎用性の高さ

【上級者から初心者まで】ブロック崩しゲーム作りの汎用性の高さ
こんにちは、沖縄市のプログラミング教室「エイド IT.KIDS」のミチノリです。ラフな格好で失礼しています。
 
エイドでは、私を含めてメンター(講師)の服装を自由にしているので、ラフな格好が多くなっていますが、授業はきちんと子どもたちが楽しく学習できるように心がけていますので、ご安心ください。

普段の授業では子供向けプログラミング学習言語として人気の高いScratch(スクラッチ)を使用することが多いのですが、Minecraft(マインクラフト)を使ったり、LEGO(レゴエデュケーション)を使ったり、時には生徒同士でコミュニケーションを図りつつ巧みな話術での攻防戦を繰り広げる人狼ゲームをやってみたりと、様々な事をトライアルしながら子どもたちと一緒に学習を続けています。
 
エイドは、すでに沖縄市に開校してから3年目に突入しているので、イベント等で出会った方も含めると数百名の沖縄の子供たちと接してきました。本当に多くの個性を持った子供たちがいます。
 
教室に来てから約30分ほど、ずーーーっと、椅子の下に隠れて何度呼びかけてもニコニコしながら出てこないタイプの子もよくいますし、コツコツと続けられる子もいますし、一つのことを説明すると一気に応用まで考え方を伸ばせる子もいます。

学習用に用意しているサンプルプログラムも、かなり多くのゲームを試行錯誤して作ってきたと思います。
 
難しすぎるゲームを課題にしてしまうと、意味がわからずに学習になりません。「なんとなく、やりたくない!勉強するのはいや!」という子供もよくいます。笑
 
いかに楽しく遊びながら、インターネットやコンピュータについて学びながらプログラミング学習ができるかを、常に考えながらカリキュラムを作っていますが、最近ふと、学習の理解度を測る上で「ブロック崩しゲーム」を作ってみるのは、とても良いなと思いました。

ブロック崩しゲームは昔からよくあるゲームの一つだと思います。画面の上部にブロックが並んでいて、自動的に動くボールを弾いてブロックを消していくゲームです。
 
今回はボールを弾く「受け皿」となる部分を車で作ってみましたが、キーボードの右と左で操作をし、ボールが地面に落ちないように弾いていく動きを作ります。Scratch(スクラッチ)では座標を使ってSprite(キャラクター)を動かすので、座標の理解が出来ているかを測ることも出来ます。
 
ボールはループして動き続けるようにプログラムを組みますが、ループしている動きの中で
受け皿となる車に触れた時に「もし 車に 触れたなら」という処理を組み込みます。繰り返しループしている動きの中に、「条件分岐」を入れていくわけです。「もし(if)」という条件を付与する事はプログラミングでは必要不可欠です。
 
 その他にも、ボールに触れたら消えてしまうブロックを入れたり、点数をカウントするために変数を追加したり、ゲームオーバーやゲームクリアの時に背景を変えてみたり、ボールを地面となる部分に落としたらゲームが終わってしまう条件を入れてみたりと、ブロック崩しゲームでは、実に様々なプログラミング方法を試す事が出来ます。
 
専門的になってしまいますが、クローンのプログラムを使って、一つのSprite(キャラクター)だけでブロックを画面に敷き詰められるように完結したプログラムでゲームを作る事も出来れば、同じ命令を持つシンプルなSpriteを複製してゲームを作る事も出来ます。実にカスタマイズの振り幅を持たす事ができるゲームだと思います。
 
プログラミング教室では、年齢と理解度の異なる子供同士が同時に学習を行うので、エイドでも上級・中級・初級といった形で、難易度の異なるカリキュラムを作成するようにしています。今までにも多くのサンプルゲームを作ってきましたが、「ブロック崩しゲーム」の汎用性の高さに改めて感心させられたので、記事として書いてみました。
 
長々とわかりづらく失礼しました!
 

スクールNEWSカテゴリの最新記事