上のアイキャッチ画像はAIによって生成されました。
お友達と手紙のやりとり、楽しいですよね!
でも、もし手紙を落としてしまったり、だれかに見られてしまったら一大事…!
特に好きな人のことや、なやみなんか、絶対に見られたくないですよね。
そこで、この記事ではScratchを使って「暗号文を作ったりもどしたりするプログラム」の作り方を紹介します。
このプログラムがあれば、手紙の内容をだれにも読めない秘密の言葉に変えることができます。
秘密の言葉で手紙を書けば、安心して大切な話もできますね!
約束してくださいね。
Scratchはインターネットにつながるパソコンから無料で利用できます。
Scratch公式サイト: https://scratch.mit.edu/
Scratchのアカウントの作り方と基本的な使い方は、下の記事で紹介しています。
2つのリストを使って暗号文を作る
暗号文を作る方法はいろいろありますが、今回は2つのリストを使った方法を紹介します。
あいうえお順にならんだ「かなリスト」と、順番がバラバラな「カナリスト」を作り、対応する文字に変える仕組みです。
完成プログラム
完成したソースコードは下の通りです。
暗号にするプログラム
ひらがなで文字列(ならんだ文字の集まり)を入力すると、暗号にしてくれるプログラムです。
ひらがな以外の文字はそのまま出力されます。
暗号をもどすプログラム
暗号文を元にもどせないと意味がありませんね。
カタカナで暗号文を入力すると、もとの文字列にもどしてくれるプログラムも作ります。
リストから文字を探すプログラム
リストから文字を探すプログラム。ブロック定義にしなくてもOKです。
プログラム解説
このプログラムは、変数・リスト・ブロック定義を使います。
- 変 数:データを一時的に覚えておくための入れ物
- リスト:たくさんのデータを順番にならべ管理できるようにしたもの
- ブロック定義:ある処理をまとめたもの
下の記事でくわしく解説しています。使い方がよく分からない人は読んでみてくださいね。
スプライトを準備する
スプライトをひとつ準備します。
暗号をもどすプログラムは、暗号にするプログラムを作ってからスプライトをコピーして作るので、最初はひとつでOKです。
スプライトの見た目や背景は好きなモノを選んでください。
変数・リスト・ブロック定義を作成
必要な変数・リスト・ブロック定義を作成します。
変数
変数カテゴリ→「変数を作る」から、変数を4つ作ります。
- 入力:入力した文字列
- 出力:出力する文字列
- in:入力した文字列の何番目の文字か
- list:リストの何番目か
リスト
変数カテゴリ→「リストを作る」から、リスト2つを作ります。
- かなリスト:あいうえお順にならんでいる
- カナリスト:順番がバラバラになっている
メモ帳などにデータを作ってから読み込むと、楽ですよ。
ブロック定義
ブロック定義も2つ用意します。
ブロック定義カテゴリ→「ブロックを作る」で作れます。
- かなリスト検索
- カナリスト検索
中の処理は、後で解説します。
暗号にするプログラム
スプライトをクリックした時に、実行します。「このスプライトが押されたとき」を出しましょう。
「(出力)を( )にする」で、変数「出力」を初期化します。
「(暗号に変換したい文字列を入力してください)と聞いて待つ」と「(入力)を(答え)にする」で、入力された文字列を変数「入力」に格納します。
入力した文字列を1文字ずつ取り出して、かなリストにあるか検索します。
「(in)を(1)にする」で、変数「in」の初期値を設定します。1文字目から順番にみるので、初期値は1です。
「(入力の長さ)回繰り返す」で、入力した文字数分くり返しましょう。
ブロック定義「かなリスト検索」で、かなリストの何番目の文字か検索します。変数「list」には、かなリストの何番目か格納されます。
かなリストにあった場合と、なかった場合で処理を分けます。
「もし (list) > かなの長さ なら」の中には、リストになかった場合の処理を入れます。
「(出力)を(出力と入力のin番目の文字)にする」で入力した文字をそのまま出力しましょう。
「でなければ」の中には、リストにあった場合の処理を入れます。
「(出力)を(出力とカナのlist番目の文字)にする」で、カナリストの対応する文字を出力しましょう。
「(in)を(1)ずつ変える」で、入力した文字列の次の文字をみるようにし、くり返しの最初の処理へもどります。
くり返しをぬけたら「(出力)と(5)秒言う」で変換後の文字列を表示しましょう。
かなリスト検索
入力した文字が、かなリストの何番目の文字か検索するブロック定義を作ります。
「(list)を(1)にする」で変数「list」の初期値を設定します。1番目の要素から順番にみるので、初期値は1です。
以下の条件をどちらか満たすまで「(list)を(1)ずつ変える」を実行します。
- 入力のin番目の文字 = かなのlist番目 → リストにあった
- list > かなの長さ → 最後までみたけれどリストになかった
暗号をもどすプログラム
暗号にするプログラムでは、入力した文字がかなリストの何番目の文字か探し、対応するカナリストの文字に変換しました。
暗号をもどすプログラムではその逆を行います。
-
- 暗号にする :かな → カナ
- 暗号をもどす:カナ → かな
暗号にするプログラムのスプライトをコピーして、どこを直せばいいか自分で考えてみてくださいね。
まとめ
「暗号文を作ったりもどしたりするプログラム」の作り方を紹介しました。
約束を守って、みんなと仲良く楽しい手紙の交換を楽しんでくださいね!