こんにちは、mickです。
プログラマ系SEとしてIT企業に11年勤務あり。
教育向けプログラミング環境のScratchのを試用中。
前回Scratchで作った簡単な足し算クイズに手を加えて行きます。
使うこと
このスクリプトでは、ここを抑えておけばOKです。
- 乱数
- 変数
乱数は、ある数字をランダム(適当、不規則)にコンピュータが選んでくれる仕組みのこと。
足し算クイズの問題を毎回違うものにするために使います。
変数は、数値や文字などをとっておく、保存しておく場所のこと。
プログラムは、数字や文字を使い続けるには、この変数を使う必要があります。
乱数で決まった足し算クイズの問題となった数字を保存する場所に使います。
なお、今回もScratch中のスクリプトはひらがなを使うなどしています。
低年齢の利用者に配慮などするためです。
足し算クイズを改造する
大まかな流れはこのようになっています。
- 気になる点から改善する方法を考える
- 元のプロジェクトをコピーする
- スクリプトを組む(プログラミングする)
- テストしてから完成
改造スクリプト

前回のスクリプトを改造したスクリプトです。
これまではいつも同じクイズがだされました。
今回はクイズのたびに内容が変わるようにしています。
気になる点から改善する方法を考える
元のスクリプトの気になる点を考えます。
最初の足し算クイズではいつも決まった問題が出されます。
そして答えがいつも同じ。
これだと1回、多くても2回くらいやればクイズをしなくなるでしょう。
毎回違う足し算クイズが出るようにする
このように足し算クイズを改造していきたいと思います。
元のプロジェクトをコピーする
元のプロジェクトをコピーします。
元のプロジェクトを残すことで、いつでもやり直すことができます。
メニュー>ファイル>コピーを保存

コピーすると元のプロジェクトの名前に「Copy」が末尾に付いたプロジェクトができあがります。

今回はこれを「たしざんクイズ2」としています。
スクリプトを組む(プログラミングする)
これまでのスクリプトを改造していきます。
実際の大まかなプログラムの流れはこちら
- 変数を用意する
- コンピュータが決めた数字を変数にいれる
- 数字と文字をつなげてクイズを組み立てる
- 変数からクイズの正解を用意する
変数を用意します。変数は、「変数」から作り、選びます。

「変数」にある「変数を作る」で変数を作ります。
「すべてのスプライト用」で「新しい変数名」を入力、そして「OK」で作成となります。

ここでは2つの変数「はこA」「はこB」作っています。
2つの数字を足し合わせるクイズだからです。
コンピュータが決めた数字、乱数を変数に入れます。
これは「変数に代入する」といいます。
乱数は「演算」から、乱数を変数に代入するには「変数」から選びます。
矢印のあるダイアログボックスから代入先の変数を選ぶことができます。
文字と変数をつなげてクイズの文字を作り上げます。

「演算」から文字をつなげるブロックを選びます。

今回は3つ使い、それをつなげてひとつのクイズの文字を作り上げました。

最後は変数から正解を計算します
「演算」から条件文と足し算を選び、それらを組み合わせて作り上げています。

クイズの正解か正解でないかの判定を「制御」の条件文に入れて完成です。

Scratchは、組み合わせができるもの同士はブロックの形が楕円だったり横長のひし形だったりと同じで、パズルのようになっています。
このおかげで直感的にブロックを組み合わせることができるか、できないかがわかるようになってるんですね。
とてもよくできている設計だと思います。
テストしてから完成


スクリプトが完成したら、早速動かしていきます。
今回のスクリプトは、スクリプトを動かすごとに異なるクイズになっています。
1から10の間の数字で足し算をするようになっています。
そして、正解と正解でないルートにいくようになります。
テストをして、自分の思うようなスクリプトの動きができていれば完成です。
おつかれさまでした。
まとめ。
前回Scratchで作成した足し算クイズを改造しました。
最初から今回のようなプログラムを作ればいいと思うかも知れません。
でもプログラミングは小さなプログラムの組み合わせ。
この小さなプログラムを組み合わせながら作業をしていきます。
そして常に改造(実際には修正ということが多いです)を繰り返してプログラムをよいものに作り上げていきます。
この記事ではそのことが少しでも表現できていれば幸いです。
初稿 2020/08/10