スクラッチ-クイズをランダムに出題できるように

前回ではクイズを出題して答え合わせをするところまでやってみました。

前回の最後に繰り返しと変数を使うとプログラミングがすっきりするとお伝えしましたが私は以下のような形にしています。

スクラッチ-プログラムをシンプルに

今回は問題を出す順番を変えてみたいと思います。

いつも問題が出る順番が同じだったら少し面白くないですね。

問題をランダムにすることで自分オリジナルの英単語帳などを作ってみても面白いかもしれません。

それではチャレンジしてみましょう!

乱数を使って出る問題を変えてみよう

ランダムと言えば『乱数』ですね。

『〇〇から〇〇までの乱数』ブロックを使ってみましょう。

リストの長さを利用する

最初の値は1で良さそうですね、後ろの値はどうしましょうか?

リストに入っているデータの数にしたいですね。

そんな時は『変数』エリアのリスト系ブロックが並んでいるところの『〇〇の長さ』ブロックを使いましょう。

指定したリストに入っているデータの個数を返してくれます。

スクラッチ-リストの長さブロック

変数に出し問題の順番を入れておく

乱数を作ったら『問題の順番』変数に乱数を使います。

スクラッチ-問題の順番を乱数に

『問題の順番』変数を乱数にできたら繰り返し処理の一番最初におきましょう。

スクラッチ-問題の順番の変数設定を繰り返しの最初に

あと繰り返しの最後にいる『問題の順番を1ずつ変える』は不要になりましたので削除しましょう。

削除したら実際に動かしてみましょう!

スクラッチ-ランダムに問題が出題される

作った順番ではなくランダムに問題が出題されていますね!

ただ1点思った通りになっていないところがないでしょうか?

同じ問題が出題されてしまってますね。

次は同じ問題を出さないようにしてみましょう。

一度出題された問題はでないようにする

続いて同じ問題が出題されないようにしましょう。

同じ問題を出題されないようにするにはどんな情報が必要でしょうか?

まず出題した問題を覚えておく必要がありますね。

覚えておくには『リスト』を使いましょう。

出題した問題のリストを作る

まず出題した問題を覚えておくためのリストを作ります。

リストの中には出題した問題の番号を入れておきましょう。

リスト名を『出題された問題』にして、『すべてのスプライト用』を選択しましょう。

リストの中身と乱数の値を比較する

次に問題を出題するかどうかを判定するために先ほど作成したリストと乱数の値を比較します。

リストには出題された問題の番号が入っているので乱数の値と比較してリストに番号が入っていなければ出題してOKということになりますね。

少し難しくなりますが1つ1つやっていきましょう。

まずは比較するプログラムですが『出題された問題』リストに『問題の順番』変数が入っていないという条件を作ります。

リストの中に入っているかをチェックするには『〇〇に〇〇が含まれる』ブロックを使います。

さらに含まれないという条件にしたいので『〇〇ではない』ブロックを使います。

スクラッチ-出題された問題と出題した問題の比較

条件ができたら出題されていない番号に当たるまで乱数を実行すれば良いです。

ある条件まで繰り返したいというような場合には『〇〇まで繰り返す』ブロックを利用します。

『問題の順番』変数に乱数を設定するブロックを繰り返しブロックで囲みましょう。

スクラッチ-問題の順番を設定する

上記のブロックを出題するクイズゲームのプログラムに追加しましょう。

スクラッチ-クイズゲームの全体

2点繰り返し処理の前に追加しているブロックがあります。

1つは『出題された問題のすべてを削除する』ブロックです。

他のリストと同様に最初は空っぽにしておく必要があります。

もう1つは 『問題の順番を1から答えの長さまでの乱数にする』ブロックです。

問題の順番には最初何も値が設定されていないので初期値を設定しておく必要があります。

設定しないと問題リストから値を取得できず何も問題が出されなくなってしまいます。

プログラムができたら実行してみましょう!

スクラッチ-クイズをランダムに出題できるように

いい感じにランダムに出題されるようになりましたね。

今回はここまで、お疲れ様でした!

次はしたの記事チャレンジしてみてください!

おすすめの記事