提供: Japanese Scratch-Wiki

大文字と小文字の判別から転送)

このきじは ひらがなのページがありません。ごめんなさい。編集者向け:作成する
分岐.png:この項目はScratch 2.0を説明しています。Scratch 1.4については、大文字小文字の判別 (1.4)をご覧ください。

Scratch 1.4までは、ラテン文字の大文字と小文字を区別する要素が限られていたため、大文字小文字の判別は、今よりも複雑な手順が必要だった。 Scratch 2.0では、次のようなコスチュームを使う方法と変数名を使う方法で大文字小文字を判別できる。

26個のコスチュームを使う方法

通常、<[A] = [a]>はTrue(真)になってしまうが、コスチューム名は大文字と小文字が区別されるため、以下のスクリプトで判定できる。

コスチューム1、a〜zまで\(ギリシャ文字等を使いたいときはα~ω、キリル文字を使いたいときはа~я\)の名前のコスチュームを追加::grey
使用する文字をリストに追加::grey//大文字を先にしてその後に小文字、その他を追加
[変数A v] を [1] にする
<[使用文字 v] に ( (変数A) 番目\( (何かの文字) \)の文字) が含まれる> まで繰り返す
[変数A v] を (1) ずつ変える
end
コスチュームを [コスチューム1 v] にする
コスチュームを (((変数A) 番目( [使用文字 v] ) :: list) と [ ]) にする
もし <(コスチューム #) = [1]> なら
[変数A v] を (26) ずつ変える//ラテン文字のみの場合
end

53個のコスチュームを使う方法

コスチュームに名前をつけるときは、大文字小文字が区別されない。したがって、1つのスプライト内で「A」と「a」のような、大文字小文字が違うだけの2つのコスチューム名をつけることはできない。しかし、コスチュームを () にするブロックなどは、大文字と小文字を区別する。これを利用して、ある文字が大文字であれば「大文字」、小文字であれば「小文字」という文字を変数に入れるのが、次に紹介するスクリプトである。

まず最初に、53個のコスチュームを用意して、それらに次の規則にしたがった名前をつけていく必要がある。

  1. 1番目のコスチュームに「文字なし」などの、ほかのコスチュームとぶつからない名前をつける。
  2. 2番目のコスチュームの名前を「A」(大文字)にする
  3. 3番目のコスチュームの名前を「at」などの「a」+ <好きな文字>にする。(手順4でも、ここで後ろにつけた文字と同じ文字を使うこと)
  4. 手順2〜3をくり返す (4番目を「B」、5番目を「bt」、6番目を「C」……、のように名付けていく)。「Z」、「zt」まで、すべてのラテン文字について2つずつコスチュームを用意したら終了。

このようにして、53個のコスチュームをつくって名前をつけたら、それらが順番に並ぶように入れ替えておこう。

次に、スクリプトの作成にすすむ。ここでは、入力された文字が大文字かを小文字かをカスタムブロックで判別する。

定義 大文字小文字をしらべる (文字)
もし <<((文字) の長さ) = [1]> ではない> なら 
[大文字小文字 v] を [エラー!] にする // 2文字以上の文字が入力された場合と、文字が入力されていない場合、エラーにする
[このスクリプト v] を止める
end
コスチュームを [文字なし v] にする // 1番目のコスチューム
コスチュームを (文字) にする // 文字が小文字の場合、コスチュームは「文字なし」のまま変わらない
もし <(コスチューム #) = [1]> なら // コスチュームが変わっていないということは、文字が小文字であると判断
コスチュームを ((文字) と [t]) にする // 小文字のコスチュームは末尾に「t」 (または自分で選択した好きな文字) が付いているはず
end
もし <(コスチューム #) = [1]> なら // まだコスチュームが変わっていない場合、ラテン文字以外の文字と判断
[大文字小文字 v] を [その他] にする
[このスクリプト v] を止める
end
もし <((コスチューム #) を (2) で割った余り) = [0]> なら // コスチューム番号が2で割り切れる場合、文字を大文字と判断
[大文字小文字 v] を [大文字] にする
でなければ
[大文字小文字 v] を [小文字] にする
end 

2個のコスチュームを使う方法

この方法でも、コスチュームブロックで大文字と小文字が区別されることを利用する。まず、次の2個のコスチュームを用意する。

  • 「文字なし」という名前のコスチューム
  • 「ABCDEFGHIJKLMNOPQRSTUVWXYZ」という名前のコスチューム
定義 大文字? (文字)
[ラテン文字一覧 v] を [ABCDEFGHIJKLMNOPQRSTUVWXYZ] にする
[i v] を [1] にする
[チェック結果 v] を [] にする
((ラテン文字一覧) の長さ) 回繰り返す 
もし <((i) 番目\( (ラテン文字一覧) \)の文字) = (文字)> なら 
[チェック結果 v] を ((チェック結果) と (文字)) にする //「文字」が小文字の場合、そこだけ小文字になる。たとえば文字がbならば、「AbCDEFG……」となる。大文字の場合、大文字のまま入る。たとえば文字がBなら、「ABCDEFG……」となる。
でなければ
[チェック結果 v] を ((チェック結果) と ((i) 番目\( (ラテン文字一覧) \)の文字)) にする
end
[i v] を (1) ずつ変える
end
コスチュームを [文字なし v] にする// 1つめのコスチューム
コスチュームを (チェック結果) にする
もし <(コスチューム #) = [2]> なら // コスチュームが2つめの「ABCDEFGHIJKLMNOPQRSTUVWXYZ」という名前のものに変わっていれば
[大文字? v] を [true] にする
でなければ
[大文字? v] を [false] にする
end

54個の変数を使う方法

変数名では大文字小文字が区別されるので、これを利用して大文字、小文字を判別する方法もある。たとえば、 「A」と「a」という変数を同時に使用することができる。この方法は、上に紹介した「53個のコスチュームを使う方法」「2個のコスチュームを使う方法」よりも高速に動作するため、速度が必要なときはこの方法を使うとよい。

Warning 警告: このメソッドでは、ScratchプロジェクトのJSONを編集したブロック (通称、「ハッキングブロック」) を使っている。JSONファイルの編集やハッキングブロックの使用を避けたい場合は、先ほど紹介した2つの方法を使用してほしい。
定義 変数を作る
[文字一覧 v] を [ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz] にする
[p1 v] を [1] にする
(26) 回繰り返す 
((p1) 番目\( (文字一覧) \)の文字) を [1] にする
[p1 v] を (1) ずつ変える
end
(26) 回繰り返す 
((p1) 番目\( (文字一覧) \)の文字) を [0] にする // これらのハッキングブロックは、大量の変数を手軽に作成するために使用している。そのため、ハッキングブロックの使用は必須ではないが、使用することで1つずつ手作業で52個の変数をつくる手間が省略できる
[p1 v] を (1) ずつ変える
end

定義 (文字) が大文字かどうかしらべる
もし <((文字) \( [スプライト1 v] \)) = [1]> なら 
[大文字? v] を [yes] にする
[大文字? v] を [no] にする
end