【Robo Blocksの使い方】文字を扱うブロック_その3 逆さ言葉クイズ
ソフトバンクロボティクスでPepperを使ったプログラミング教育を担当してる佐藤です!
以前紹介した文字操作のブロックを使って、実際に文字を操作するプログラムを作成してみます。
今回は前回のしりとりプログラムとは少し毛色の違う、逆さ言葉クイズプログラムです!
逆さ言葉クイズ
逆さ言葉クイズとは、逆さから読まれた言葉を聞いて元の言葉を当てるゲームです。
例えばお題が「ロボット」なら、出題は「トッボロ」になります。
逆さ言葉クイズをつくる
早速作っていきましょう。
まずはお題を用意します。今回は3問用意してランダムにどれか1問が出題されるように作ってみます。お題はリストに格納しましょう。リストを使うとお題を増やしたくなった時などに変更が楽になります。
次に出題するお題を抽選します。
お題の抽選はリストの長さブロックを利用し以下のようにします。こうしておくとお題の数が増えたときに自動で対応できます。
変数"お題番号"を使い、抽選したお題番号からお題を取り出します。
これでこのブロックは3つのお題のうちどれか一つのお題になります。
では、このお題を出題するため逆さ言葉にしましょう。
ある言葉を逆さにするためには以下のような手順を行うことになります。
1.言葉の長さを取得する
2.言葉の長さ回以下を繰り返す
3.言葉の長さ-n番目の一文字を取り出して記録する
4.nを1増やす
ブロックで作ってみます。
「1.言葉の長さを取得する」は長さブロックで簡単に実現できます。
「2.言葉の長さ回以下を繰り返す」を作ります。
これは繰り返しブロックで簡単に作ることができます。
この時、この後の処理のために繰り返しの回数を数えられるようにしておきましょう。今回の場合、繰り返し回数という変数を用意しました。
次は「3.言葉の長さ-n番目の一文字を取り出して記録する」です。
この部分が逆さ言葉を作る上で一番重要な箇所となります。
まずは逆さにした言葉を記憶しておく変数を用意しましょう。ここでは変数"出題内容"を用意しました。
初期値は空にしておきます。この後、この変数に文字をくっつけていくので、0などにしておくと冒頭に0がついてしまうためです。
では、変数"出題内容"に逆さ言葉を格納しましょう。逆さ言葉はお尻から文字をとっていきますので、例えばお題が3文字なら、3文字目+2文字目+1文字目になります。この"n文字目"の"n"は文字の長さ-繰り返し回数で表すことができますので、以下のようにブロックを組み合わせます。
nの指定ができましたので、"番目の文字ブロック"を使ってお題からn番目の文字を取り出す組み合わせは以下になります。
これを出題内容に格納します。
出題内容=n番目の文字としてしまうと毎回1文字を上書きすることになり、結果が必ず1文字になってしまい、逆さ言葉を作ることができません。そこで文字を結合する"○と○"ブロックを使って1文字づつ繋げていくように組みます。出題内容が1文字づつ増えていくイメージです。
ここまでのブロックをつなげると、お題リストから1つ抽選して逆さ言葉を生成するプログラムの完成です。
ここまででプログラムとしてはほぼ完成ですが、クイズですので出題と回答する部分も作ります。
聞き取りブロックを使って以下のようにしたら完了です。
まとめ
文字列を扱うプログラムの例として逆さ言葉クイズを作ってみました。
逆さ言葉クイズはプログラムがシンプルに作れるかつ、遊んでみると結構面白いので文字列操作の練習としてぴったりのお題だと思います。
習作としてぜひ作ってみてください!