Занятие № 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 выглядит следующим образом:

Программа готова. Попроси своего соседа нажать на спрайт с котом и ввести для тебя сообщение и ключ. Потом сосед должен передать тебе зашифрованное сообщении и ключ для расшифровки. Теперь нажми на спрайт с ключом и введи зашифрованное сообщение и ключ, который тебе сообщил сосед. Теперь программа должна по буквам произнести расшифрованное сообщение.