Занятие № 10. Строки в Scratch

Упражнение № 1. Игра “Исправь ошибку”

Разработаем игру со следующими правилами: первый игрок вводит слово состоящее не более чем из шести букв. Затем программа заменяет в этом слове случайную букву на символ дефиса (-). Второй игрок должен угадать, какое слово загадал первый игрок. Если ему удается это сделать, он победил. Иначе победил первый игрок загадавший слово.

Запустите Scratch и выберите спрайт, который будет управлять игрой.

Сначала нужно создать переменные которые понадобятся для работы программы. Все переменные и их назначение указаны в таблице.

Переменная Назначение
новоеСлово Будет хранить слово, в котором случайную букву заменили дефисом
поз Переменная цикла. Необходима для перебора номеров букв в исходном слове
слово Хранит исходное слово, которое ввёл первый игрок
случПоз Номер буквы, которую программа заменит на дефис. Выбирается случайным образом

Также стоит убрать со сцены мониторы переменных.

Выберите спрайт который будет отвечать за ведение игры и создайте для него блок Создать вопрос. Этот блок будет заменять случайную букву на дефис.

Переменной поз задаём начальное значение равное 1, так как нумерация букв в строке начинается с единицы 1. Переменной новоеСлово в качестве значения задаём пустую строку. По мере выполнения программы в этой переменной будут появляться новые символы 2. В переменную случПоз записываем случайное число от 1 до количества букв исходном слове (используем блок длина …). Букву под этим номером заменим на дефис 3. Запускаем цикл повторить n раз который выполнится столько раз, сколько букв в загаданном слове 4. Внутри блок повторить n раз размещаем блок если … то … иначе. Если текущая позиция (поз) равна случайно выбранной ранее (случПоз) то в переменную новоеСлово записывается старое значение переменной новоеСлово плюс символ дефис. Иначе к переменной новоеСлово добавляем букву из оригинального слова, которая стоит на текущей позиции (поз) 5. После блока с условием увеличиваем переменную поз на единицу, чтобы перейти к следующей букве исходного слова 6.

Теперь добавьте к спрайту скрипт с основной логикой игры.

Просим у первого игрока ввести слово. С помощью цикла повторять пока не убеждаемся, что во введённом слове будет не более шести букв 1. После этого запоминаем введённое слово в переменную и вызываем ранее созданный блок Создать вопрос 2. После этого просим второго игрока ввести свою догадку и показываем ему изменённое слово из переменной новоеСлово. С помощью блока если … то … иначе определяем, отгадал ли второй игрок слово 3. Если слово не отгадано, изначальное слово будет выведено на экран.

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

Идеи по улучшению игры

Попробуй добавить возможность угадать слово с трёх попыток. Для этого тебе понадобится блок повторить.

Упражнение № 2. Шифр Цезаря

Создадим программу с помощью которой можно будет кодировать и декодировать сообщения зашифрованные с помощью шифра Цезаря.

Создайте новый проект в Scratch. Добавьте на сцену ещё один спрайт Key. После нажатия на спрайт с котом будет вызываться скрипт шифрования строки. При нажатии на спрайт с ключом можно будет расшифровать сообщение.

Создадим необходимые переменные которые нужны для работы программы. Назначение переменных описаны в таблице.

Переменная Назначение
алфавит Хранит все буквы русского алфавита
сообщение Сообщение которое надо зашифровать
ключ Ключ который будет использоваться для шифрования и для расшифровки
шифровка Хранит зашифрованное сообщение
позБуквы Используется в блоке Зашифровать букву для перебора всех букв алфавита
позСообщения Используется в основной программе для перебора всех букв сообщения

Создайте блок Зашифровать букву с параметром буква. В этот блок мы будем передавать букву которую нужно зашифровать согласно введённому ключу.

С помощью блока повторить мы будем перебирать все буквы алфавита 1. Текущий номер буквы хранится в переменной позБуквы. Если буква которую передали в качестве аргумента совпадает с текущей буквой из алфавита, то мы вычисляем согласно формуле новую букву 2. По формуле вычисляем букву для шифровки 3. Затем увеличиваем значение позБуквы на единицу 4.

Теперь создадим основной скрипт для шифрования сообщения.

В переменную алфавит необходимо записать все букву русского алфавита: абвгдеёжзийклмнопрстуфхцчшщъыьэюя 1. После того, как пользователь введёт сообщение которое надо зашифровать и ключ для шифрования запускаем цикл повторить столько раз, сколько букв в сообщении 2. Внутри цикла вызываем созданный ранее блок Зашифровать букву 3.

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

Выберите спрайт Key и создай для него блок Расшифровать букву.

Обратите внимание, что в формуле стоит знак минус.

Основная программа для спрайта Key выглядит следующим образом:

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