Материал из Скретч Вики
- Данная статья для текущей версии Скретча (3.0). Для данной статьи для Скретч 1.4 см. Определение регистра (для 1.4).
Определение регистра — действие различения букв в нижнем регистре от букв в верхнем регистре.
Определение регистра — более сложный процесс, чем в Скретч 1.4, из-за большего количества ограничений на то, что является и не является чувствительным к регистру. Чтобы выполнить определение регистра в Скретч 3.0 и Скретч 2.0, необходимо применить любой из небольшого количества методов, обычно использующих чувствительность блока изменить костюм на ( v)
к регистру.
Способ с 67-мью костюмами
Наименование костюмов в их редакторе чувствительно к регистру (например, у спрайта может быть костюм под названием «А» и костюм под названием «а»), и блок изменить костюм на ( v)
тоже чувствителен к регистру. Пользовательский блок ниже показывает, как задать переменной значение «верхний» или «нижний» в соответствии с регистром данной буквы. Во-первых, следующий процесс наименования костюмов должен быть выполнен, чтобы данный блок работал:
- Самый первый костюм должен иметь название «недействительный» или любое другое не мешающее название
- Затем начните с самой первой буквы алфавита — назовите костюм «А» (в верхнем регистре)
- Следующий костюм должен быть назван «ат» или «а[любая другая буква]», однако вторая буква должна быть последовательна во всех названиях костюмов
- Повторяйте второй и третий шаг до конца алфавита. Следующие костюмы должны быть названы «Б», «бт», «В», «вт» и т. д.
После наименования всех 67-мью костюмов убедитесь в том, что они все разложены по порядку, и приступайте к программированию. Следующий скрипт использует пользовательский блок чтобы обнаружить, находится ли данная буква в верхнем регистре.
определить определить регистр (символ) если <не <(длина (символ)) = [1]>> , то задать [регистр v] значение [ошибка!] // указывает на то, что было введено более одного символа, или длина не была определена стоп [этот скрипт v] end изменить костюм на (недействительный v) //это самый первый костюм изменить костюм на (символ) // если символ в нижнем регистре, текущим костюмом останется «недействительный» если <(костюм [номер v]) = [1]> , то // если спрайт не сменил костюм из-за того, что буква в нижнем регистре изменить костюм на (объединить (символ) [т]) //все костюмы в нижнем регистре заканчиваются на «т» или выбранную букву end если <(костюм [номер v]) = [1]> , то // если спрайт до сих пор не сменил костюм задать [регистр v] значение [другой] // указывает на то, что был указан неподдерживаемый символ стоп [этот скрипт v] end если <((костюм [номер v]) mod (2)) = [0]> , то // если костюм находится с интервалом двойки, т. е. это костюм большой буквы задать [регистр v] значение [верхний] // указывает на то, что буква в верхнем регистре иначе задать [регистр v] значение [нижний] end
Способ с двумя костюмами
Костюмы чувствительны к регистру, что можно использовать для определения регистра. Необходимы два костюма. Один должен быть под названием АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ (или ABCDEFGHIJKLMNOPQRSTUVWXYZ, в зависимости от того регистр букв каких языков вы хотите определить), а другой же должен быть под любым другим названием.
определить определить регистр (символ) задать [поддерживаемые символы v] значение [АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ] задать [счётчик v] значение [1] задать [строка v] значение [] повторить (длина (поддерживаемые символы)) раз если <(буква (счётчик) в (поддерживаемые символы)) = (символ)> , то задать [строка v] значение (объединить (строка) (символ)) иначе задать [строка v] значение (объединить (строка) (буква (счётчик) в (поддерживаемые символы))) end изменить [счётчик v] на (1) end изменить костюм на (нуль v) //Это второй костюм изменить костюм на (строка) если <(костюм [номер v]) = [1]> , то //Первый костюм — АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ задать [регистр v] значение [верхний] иначе задать [регистр v] значение [нижний] end
Способ с расстоянием
Аналогично способу с двумя костюмами, но вместо костюмов используется расстояние до ( v)
, т. к. он тоже чувствителен к регистру.
определить определить регистр (символ) задать [счётчик v] значение [1] задать [строка v] значение [] повторить (33) раз если <(буква (счётчик) в [АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ]) = (символ)> , то задать [строка v] значение (объединить (строка) (символ)) иначе задать [строка v] значение (объединить (строка) (буква (счётчик) в [АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ])) end изменить [счётчик v] на (1) end если <(расстояние до (строка)) = [0]> , то задать [регистр v] значение [верхний] иначе задать [регистр v] значение [нижний] end
Способ с блоком «() от ()»
Названия спрайтов чувствительны к регистру. Данный скрипт использует [ v] от ()
, т. к. он тоже чувствителен к регистру. Спрайт должен иметь название АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ.
определить определить регистр (строка :: custom-arg) задать [поддерживаемые символы v] значение [АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ] задать [счётчик v] значение [0] задать [строка v] значение [] задать [регистр v] значение [в прогрессе] повторить (33) раз если <(буква (счётчик) в (поддерживаемые символы)) = (строка :: custom-arg)> , то задать [строка v] значение (объединить (строка :: variables) (строка :: custom)) иначе задать [строка v] значение (объединить (строка :: variables) (буква (счётчик) в (поддерживаемые символы))) end если <([костюм # v] от (строка :: variables)) = [0]> , то //проверяем, равна ли переменная спрайта нулю, что означает, что спрайт не существует задать [регистр v] значение [нижний] иначе задать [регистр v] значение [верхний] end изменить [счётчик v] на (1) end