Занятие № 10. Строки в Scratch
Упражнение № 1. Игра “Исправь ошибку”
Разработаем игру со следующими правилами: первый игрок вводит слово состоящее не более чем из шести букв. Затем программа заменяет в этом слове случайную букву на символ дефиса (-). Второй игрок должен угадать, какое слово загадал первый игрок. Если ему удается это сделать, он победил. Иначе победил первый игрок загадавший слово.
Запусти Scratch и выбери спрайт, который будет управлять игрой.
Сначала нужно создать переменные которые понадобятся для работы программы. Все переменные и их назначение указаны в таблице.
Переменная | Назначение |
---|---|
новоеСлово | Будет хранить слово в котором случайную букву заменили дефисом (-) |
поз | Переменная цикла. Необходима для перебора номеров букв в исходном слове |
слово | Хранит исходное слово, которое ввёл первый игрок |
случПоз | Номер букву, которую программа заменит на дефис. Выбирается случайным образом |
Также стоит убрать со сцены мониторы переменных.
Выбери спрайт который будет отвечать за ведение игры и создай для него блок Создать вопрос. Этот блок будет заменять случайную букву на дефис.
Переменной поз задаём начальное значение равное 1, так как нумерация букв в строке начинается с единицы 1
. Переменной новоеСлово в качестве значение задаём пустую строку. По мере выполнения программы в этой переменной будут появляться новые символы 2
. В переменную случПоз записываем число от одного до числа букв исходном слове (используем блок длина …). Букву под этим номером заменим на дефис 3
. Запускаем цикл повторить n раз который выполнится столько раз, сколько букв в загаданном слове 4
. Внутри блок повторить n раз размещаем блок если … то … иначе. Если текущая позиция (поз) равна случайно выбранной ранее (случПоз) то в переменную новоеСлово записывает старое значение переменной новоеСлово плюс символ дефис. Иначе к переменной новоеСлово добавляем букву из оригинального слово которая стоит на текущей позиции (поз) 5
. После блока с условием увеличиваем переменную поз на единицу, чтобы перейти к следующей букве исходного слова 6
.
Теперь добавь к спрайту скрипт с основной логикой игры.
Просим у первого игрока ввести слово. С помощью цикла повторять пока не убеждаемся, что во введённом слове будет не более шести букв 1
. После этого запоминаем введённое слово в переменную и вызываем ранее созданный блок Создать вопрос 2
. После этого просим второго игрока ввести свою догадку и показываем ему изменённое слово из переменной новоеСлово. С помощью блока если … то … иначе определяем, отгадал ли второй игрок слово 3
. Если слово не отгадано, изначальное слово будет выведено на экран.
Нажми флажок и проверь со своим соседом, правильно ли работает программа. Попроси человека за соседним компьютером загадать слово, и попробуй отгадать его.
Идеи по улучшению игры
Попробуй добавить возможность угадать слово с трёх попыток. Для этого тебе понадобится блок повторить.
Упражнение № 2. Шифр Цезаря
Создадим программу с помощью которой можно будет шифровать и расшифровать сообщения зашифрованные с помощью шифра Цезаря.
Создай новый проект в Scratch. Добавь на сцену ещё один спрайт Key. После нажатия на спрайт с котом будет вызываться скрипт шифрования строки. При нажатии на спрайт с ключом можно будет расшифровать сообщение.
Создадим необходимые переменные которые нужны для работы программы. Назначение переменных описаны в таблице.
Переменная | Назначение |
---|---|
алфавит | Хранит все буквы русского алфавита |
сообщение | Сообщение которое надо зашифровать |
ключ | Ключ который будет использоваться для шифрования и для расшифровки |
шифровка | Хранит зашифрованное сообщение |
позБуквы | Используется в блоке Зашифровать букву для перебора всех букв алфавита |
позСообщения | Используется в основной программе для перебора всех букв сообщения |
Создадим блок Зашифровать букву с параметром буква. В этот блок мы будем передавать букву которую нужно зашифровать согласно введённому ключу.
С помощью блока повторить мы будем перебирать все буквы алфавита 1
. Текущий номер буквы хранится в переменной позБуквы. Если буква которую передали в качестве аргумента совпадает с текущей буквой из алфавита, то мы вычисляем согласно формуле новую букву 2
. По формуле вычисляем букву для шифровки 3
. Затем увеличиваем значение позБуквы на единицу 4
.
Теперь создадим основной скрипт для шифрования сообщения.
В переменную алфавит необходимо записать все букву русского алфавита: абвгдеёжзийклмнопрстуфхцчшщъыьэюя
1
. После того, как пользователь введёт сообщение которое надо зашифровать и ключ для шифрования запускаем цикл повторить столько раз, сколько букв в сообщении 2
. Внутри цикла вызываем созданный ранее блок Зашифровать букву 3
.
Нажми на спрайт с котом, введи сообщение и ключ. После этого спрайт с задержкой в две секунды произнесёт зашифрованные буквы сообщения.
Выбери спрайт Key и создай для него блок Расшифровать букву.
Обрати внимание, что в формуле стоит знак минус.
Основная программа для спрайта Key выглядит следующим образом:
Программа готова. Попроси своего соседа нажать на спрайт с котом и ввести для тебя сообщение и ключ. Потом сосед должен передать тебе зашифрованное сообщении и ключ для расшифровки. Теперь нажми на спрайт с ключом и введи зашифрованное сообщение и ключ, который тебе сообщил сосед. Теперь программа должна по буквам произнести расшифрованное сообщение.