暗号解読って、冒険みたいにワクワクする響きですよね!
今回は数字の暗号を解読してお友達と遊ぶことが出来るツールを作ってみます。
暗号解読ツールのコンセプト
0~9までの数字を組み合わせて作成された「暗号」をスクラッチで自動解読するツールを作成します。
暗号の桁数はゲーム性を高めるために、その場で設定可能な仕様にしてみます。
遊び方は以下のような感じを想定しています。
- お友達が暗号「164979(例)」を入力
- プログラムで解読スタート
- 解読完了「164979ですね?」と表示
- 「当たったー!すごーい!」となる(笑)
「調べる」ブロックを活用する
相手に答えの入力を求めるような場合は「調べる」ブロックを使いましょう。
ここで、元も子もない話をひとつだけします…。
スクラッチでは、入力した答えが分かってしまうので、以下のスクリプトで解読は完了してしまいます。
ただ、これでは何も面白くも楽しくもないので、変数を使って、しっかり機能するツールを作っていきます。
「変数」ブロックを組み合わせて使う
コンセプトに記載した通り、暗号の桁数をその場で設定できるようにします。
さらに暗号解読の変数も用意したいので、以下のふたつの変数ブロックを作成してください。
この時、左側にチェックを入れることでステージエリアに変数の値が表示されるので、見ていて楽しいと思います。
次に入力項目のためのスクリプトを設定します。
ここまでは特に問題ないと思います。
残るは解読機能の実装です。
解読機能を実装する
前提条件として、暗号は数字のみなので、数字の組み合わせを全パターン試すことで解読が可能になりそうです。
ここで大切なのが桁数ですが、例えば3桁であれば全パターンとは何パターンなのでしょうか?
答えは000~999までを試すのが全パターンです。
計算式にすると「10x10x10」つまり「10の3乗」となります。
この計算をするために、スクラッチでは便利なブロックがあります。
「絶対値」の部分を「10∧」に変えて数字を「3」と入力して、ブロックをクリックしてみましょう。
すると「1000」と表示されると思います。
ブロックの表記的には分かりにくいですが、「10の(入力した数字)乗」の答えになるブロックなのです。
さて、これで準備は整ったので、スクリプトを完成させましょう。
まとめと補足
これで、暗号解読ツールは無事完成しました。
補足1
このツールには欠点があります。
「0」から始まる数字は桁数の表示結果が異なります。
例えば4桁に設定した場合に「0348」と入力すると「348ですね!」と「0」を省いた数字が表示されます。
補足2
遊び方をアップさせる方法を紹介します。
「入力した暗号は~~~ですね!」と表示された後に「調べる」ブロックの「答え」にチェックを入れてみましょう。
すると、ステージエリアに表示されますので、答え合わせが出来て楽しいかと思いますので試してみて下さい!
補足3
桁数の設定は、あまり大きくしないでください。
「15桁」なども出来なくはありませんが、プログラムがなかなか終わらないので、最大でも「9桁」くらいに留めておいた方がいいかもしれません。
今回は数字の暗号解読をしましたが、文字などで行うことも可能です。
ただし、その場合スクリプトの作成は今回と同じではうまく動いてくれません。
ぜひチャレンジしてみて下さい(*^-^*)
コメント