コードオブジーニアスでは、「プログラミングを通して、アイデアをカタチにする」をテーマにプログラミング学習を進めています。
プログラミングを知っているだけではなく、プログラミングを使って何かを創り出せるような人になることを目指して日々プログラミング学習に励んでいます。
各プログラミング言語を学習したタイミングで、それぞれオリジナル作品を作ることにチャレンジしています。
ここでは、生徒が実際に作ったオリジナル作品を紹介していきます。
作品紹介
今回紹介する作品は、以下のようなゲームです。
作品名 | Noodle +(ヌードルプラス) |
---|---|
作者 | O.K.さん(中学2年生) |
プログラミング言語 | JavaScript |
どんな作品? | 勉強用のアプリです。学習用アプリを自分でも作ってみたいと思い作りました。 |
実際の作品はこちら。
さらに作品について掘り下げて見ていきたいと思います。
今回は、猫先生から作成者へのインタビュー形式でまとめてみました。
インタビュー
どんなアプリ?
まずはどんなアプリか教えてほしいにゃ
勉強系の単語帳アプリです。出てくる問題に一問一答で答える形式です。カーソルを合わせてクリックすると選択肢を選ぶことができます
これは勉強に使えそうにゃ~!!
この作品を作ろうと思った理由
どうしてこのアプリを作ろうとしたのか教えてほしいにゃ
ぼくは、「atama+」というアプリで勉強していました。しかし、諸事情で使えなくなってしまい、「使えないなら自分で作ってしまえ」精神でこのアプリを作りました。ちなみに「noodle」はスラングで頭とか脳とかそういう意味なので本家をオマージュしてこの名前にしました。
「使えないなら自分で作ってしまえ」精神、とても素晴らしいにゃ~。
工夫したところは?
それでは、工夫したのはどんなところにゃ。
1周目で間違えた問題をやり直せるようにしました。また、ホーム画面にヌードル先生を追加しました。かわいいのでモチベのアップにつながります。
ためになるだけでなく、モチベーションにも気を配って作られてるなんて驚きだにゃ!!
難しかったところは?
アプリを作っている時に、難しかったのはどんなところにゃ。
問題をどう表示し、どうやって正誤処理をするかが難しかったです。問題と解答をそれぞれ配列を使って管理しています。問題が毎回同じ順番だとあまりためにならないので、ランダムな順番に表示されるようにしています。その際、どうプログラムを作るかが難しかったです。
データの持ち方と、処理が難しかったようだにゃ。解答後のデータも配列に持っているみたいで、とても複雑なプログラムになっているにゃ。一つ一つのプログラムの意味を理解しながら作っている様子が伝わってきたにゃん。
プログラムについて
インタビューの中でも出てきた部分について実際のプログラムを見ながら説明したいと思います。
問題の終了判定
すべての問題が解き終わったことをどう判定しているかです。1個問題を解いたら、解き終わった配列に追加していき、問題の配列の数と、解き終わった配列の数が一致したら、問題終了と判定しています。
// 解き終わった配列に、追加
this.englishOldChoices.push(this.englishWords1);
// ~~~~~~~~ 省略 ~~~~~~~~
// 問題の配列の数と、解き終わった配列の数が一致したら、問題が終わったと判断
if (choices.length == this.englishOldChoices.length) {
this.solve01Image.destroy;
this.solve02Image.destroy;
this.solve03Image.destroy;
this.solve04Image.destroy;
this.endroll();
return;
}
問題をランダムに出題
問題をランダムに出題する処理です。配列から1つをランダムに取り出し、それが解答済みの配列に含まれていないかをチェックします。含まれていなければ、出題する問題を確定しています。
while (true) {
// 問題からランダムに1つを取得
this.englishWords1 = Phaser.Math.RND.between(
0,
choices.length - 1
);
// ランダムに引いた1つがすでに解答済みなら、もう一度ランダムに引き直す。解答済みじゃないものが出るまで繰り返す
if (this.englishOldChoices.includes(this.englishWords1)) {
continue;
} else {
break;
}
}
他にも、選択する解答の場所をランダムにしたり、クリックしたら〇✕を表示したり、やり直し機能があったり、スペリングチェックがあったりとここでは紹介しきれないくらいたくさんの工夫がありました。
作りたい機能を実現するにはどうしたらいいかを試行錯誤しながら作り上げてくれました。うまくいかない時に試行錯誤して、問題を解決していくプロセスが大切ですね
気になる方は、以下から定期受講コースの詳細をご確認ください。