Использование случайных чисел для создания игровых элементов в Scratch
Scratch — популярная визуальная программная среда, позволяющая создавать интерактивные проекты, включая компьютерные игры. Одним из ключевых элементов при разработке игр в Scratch является использование случайных чисел. В этой статье мы рассмотрим, каким образом случайные числа могут быть использованы для создания разнообразных игровых элементов.
Генерация случайных чисел в Scratch
В Scratch используется алгоритмический подход к генерации случайных чисел. Это означает, что при каждом запуске проекта будет генерироваться одно и то же последовательность случайных чисел. Для того чтобы получить действительно случайные числа, необходимо использовать специальные блоки кода.
Один из таких блоков — «случайное число от 1 до N». Этот блок позволяет сгенерировать случайное число в заданном диапазоне. Например, если мы хотим получить случайное число от 1 до 10, мы можем использовать этот блок и задать значение N равным 10.
Кроме того, Scratch предоставляет возможность генерировать случайные числа в диапазоне с плавающей точкой. Для этого можно использовать блок «случайное число от 0 до 1», который возвращает случайное число от 0 до 1.
Использование случайных чисел для создания игровых элементов
Случайные числа могут быть использованы для создания различных игровых элементов. Например, они могут использоваться для определения случайного положения объекта на экране. Мы можем использовать блок «позиция по X» и «позиция по Y» для установки случайных значений координат объекта.
Также, случайные числа могут быть использованы для создания случайного движения объекта. Мы можем использовать блок «изменить X на случайное число от -10 до 10» и «изменить Y на случайное число от -10 до 10» для изменения координат объекта на случайное значение в заданном диапазоне.
Другим примером использования случайных чисел является создание случайного цвета для объекта. Мы можем использовать блок «изменить цвет на случайный цвет» для установки случайного цвета объекта.
Преимущества использования случайных чисел в игровых проектах
Использование случайных чисел в игровых проектах в Scratch позволяет создавать более интересные и разнообразные игровые ситуации. Благодаря случайности, каждый запуск игры может быть уникальным, что делает игровой процесс более захватывающим.
Кроме того, использование случайных чисел способствует развитию алгоритмического мышления и логического мышления у разработчиков игр. Они должны анализировать и предсказывать случайные значения, чтобы создать балансированный и интересный игровой процесс.
Использование случайных чисел также может быть сложным для начинающих программистов. Они могут столкнуться с проблемой повторяемости случайных чисел или неопределенности в игре. Поэтому важно обучать программистов основам работы со случайными числами и поддерживать их в процессе создания игровых проектов.
Заключение
Использование случайных чисел в Scratch является важным элементом при создании игровых проектов. Они позволяют создавать разнообразные игровые элементы, делают игровой процесс более интересным и способствуют развитию алгоритмического мышления у разработчиков игр. Однако, важно помнить о сложностях, с которыми могут столкнуться начинающие программисты при работе со случайными числами.
Урок 15. Случайные числа. Делаем игральный кубик

Замечание: с января 2019 года на сайте Scratch доступна новая версия редактора — Scratch 3.0, который внешне немного отличается от Scratch 2.0, в котором записывался данный урок. Поэтому если возникнут вопросы, пиши их, пожалуйста, в комментариях к видео или внизу этой страницы сайта. Мы провели сравнение двух версий языка в серии прямых эфиров.
Scratch 2.0 по-прежнему можно использовать, скачав и установив программу на свой компьютер. Мы записали также видео-уроки о том, как установить Scratch 2.0 и Scratch 3.0 на свой компьютер.
Ольга Елисеева
Вам также понравится
Быстрый обзор и установка Scratch 2.0 и Scratch 3.0
Опубликовано автором
Урок 1. Моя первая анимация (мультфильм)
Опубликовано автором
Добавить комментарий Отменить ответ
© Творческое программирование для всех 2016 — 2024 | Использование материалов сайта разрешается с обязательными прямыми ссылками на соответствующие страницы | АЭЛИТ
Блок движения
![]()
Блок движения — это блок, который каким-либо образом перемещает спрайт по осям X и Y и меняет его направление. Спрайт не может выходить за пределы сцены, а его направление исчисляется от 0 до ±180. Недоступен для сцены.
Список блоков
идти (10) шагов::motion
идти (10) шагов
Описание: Блок для перемещения на сцене, 1 шаг — 1 пиксель в направлении спрайта.
Повернуть по часовой стрелке на () градусов :англ:
повернуть вправо на (15) градусов::motion
повернуть вправо на (15) градусов
Описание: Поворачивает спрайт вокруг себя на количество градусов
Повернуть против часовой стрелки на () градусов :англ:
повернуть влево на (15) градусов::motion
повернуть влево на (15) градусов
Описание: Поворачивает спрайт вокруг себя на количество градусов
Повернуть в направлении () :англ:
повернуться в направлении (90)
повернуться в направлении (90)
![]()
Описание: Поворачивает спрайт в указанное направление
Повернуться к ( v) :англ:
повернуться к (указатель мышки v)::motion
повернуться к (указатель мышки v)
Описание: Поворачивает спрайт в направлении объекта: указателя мышки или другого спрайта
Перейти в x: () y: () :англ:
перейти в x: (0) y: (0)::motion
перейти в x: (0) y: (0)
Описание: Перемещает спрайт на указанные координаты
Перейти на ( v) :англ:
перейти на (указатель мышки v)
перейти на (указатель мыши v)
Описание: Перемещает спрайт на координаты указанного объекта: указателя мышки или другого спрайта. В Скретч 3.0 добавили пункт «случайное место» (random position)
Плыть () секунд в точку x: () y: () :англ:
плыть (1) секунд в точку x: (0) y: (0)::motion
плыть (1) секунд в точку x: (0) y: (0)
Описание: Плавно перемещает спрайт на указанные координаты в течение указанного времени. Если время малое, а расстояние большое — передвигаться будет рывками.
Плыть () секунд к ( v)
плыть (1) секунд к (случайное положение v)
Версия: 3.0
плыть () секунд к ( v)
Описание: Плавно перемещает спрайт к указанному объекту в течение указанного времени. Если время малое, а расстояние большое — передвигаться будет рывками.
Изменить x на () :англ:
изменить x на (10)::motion
изменить x на (10)
Описание: Изменяет координату X у спрайта на указанное значение
Установить x в () :англ:
установить x в (0)::motion
установить x в (0)
Описание: Задаёт координату X у спрайта в указанное значение
Изменить y на () :англ:
изменить y на (10)::motion
изменить y на (10)
Описание: Изменяет координату Y у спрайта на указанное значение
Установить y в () :англ:
установить y в (0)::motion
установить y в (0)
Описание: Задаёт координату Y у спрайта в указанное значение
Если касается края, оттолкнуться :англ:
если касается края, оттолкнуться
если касается края, оттолкнуться
Описание: Когда касается края сцены (координаты превышают размер сцены), вычитает из текущего направления 180 градусов (поворачивает спрайт в обратном направлении): было 90° — стало −90°, было 0° — стало −180°, было −135° — стало 45°
Установить способ вращения [ v] :англ:
установить способ вращения [влево-вправо v]
Версия: 2.0
установить способ вращения [влево-вправо v]
Описание: Задаёт стиль вращения: только по горизонтали (влево-вправо; только 90° и −90°), без вращения (не вращать; только 90°), во все стороны (кругом; любой угол). Блок «направление» показывает угол, но спрайт отображается только в рамках, указанных в скобках.
Через Shift+Ctrl+R присутствовал в Скретч 1.4 и использовал номера: зайди в меню Scratch-Objects → ScratchSpriteMorph → instance → motion ops, добавь код
setRotationStyleTo: t1 rotationStyle _ t1 ^ self
далее зайди в меню Scratch-Objects → ScratchSpriteMorph → class → block specs → blockSpecs и добавь код
#- (‘set rotation style %n’ #- #setRotationStyleTo: 2)
Циклы
Мы уже не раз использовали циклы. Обычно это был цикл «повторять всегда». Всего в Scratch три разновидности цикла. Это блоки «повторять всегда», «повторить … раз», «повторять пока не …».

Цикл «повторять всегда» не дает скрипту самому закончить свою работу. В результате он работает бесконечно, повторяя и повторяя выполнение вложенных в тело цикла блоков. Прервать такое зацикливание можно, остановив работу всей программы (нажать на красный кружок над сценой) или с помощью специальной команды в теле цикла, которая срабатывает при заданном условии.
С циклом «повторить … раз» мы тоже знакомы. Он повторяет вложенные в него команды количество раз, которое указано в его заголовке. Особенностью этого цикла является то, что заранее известно количество повторов.
Конечно, мы можем запрашивать у пользователя количество повторов, или оно может определяться в результате арифметической операции, результат которой мы не знаем. Но все-равно, когда поток выполнения программы доходит до цикла «повторить … раз», программе уже известно количество повторов.

Новым для нас и самым сложным из всех циклов является цикл «повторять пока не … «. Тело этого цикла выполняется до тех пор, пока условие в его заголовке не вернет правду. Как только условное выражение станет истинным, цикл прекратит свою работу. Но когда условие станет правдой, мы не знаем. Поэтому неизвестно количество повторов цикла.
Тело цикла «повторять пока не …» может вообще ни разу не выполниться, если условие сразу вернет правду. Или же цикл так и не сможет завершиться, если условие всегда будет оставаться ложью.
Вспомним этот пример из прошлого урока:

Здесь, если человек вводит положительное число, то программа зацикливается в цикле «повторять всегда» и спрайт ходит по сцене.
Однако, если человек вводит строку или отрицательное число, программа выполняет ветку «иначе» и завершается.
Что если мы хотим, чтобы программа продолжала запрашивать у пользователя число, пока он его не введет. То есть, когда человек вводит строку, программа должна сообщать ему о неправильном вводе и снова запрашивать число. В таком случае не обойтись без цикла «повторять пока не …».

Логика здесь следующая. Пользователя просят ввести скорость. Если он вводит положительное число, то выражение «модуль от ответ = ответ» возвращает правду. Поэтому тело цикла «повторять пока не …» не будет выполнено ни разу. Поток выполнения программы сразу перейдет к циклу «повторять всегда», внутри которого реализована ходьба спрайта.
Если человек вводит строку, выражение «модуль от ответ = ответ» возвращает ложь. Тело цикла «повторять пока не …» будет выполняться. Пользователю покажут предупреждение и снова попросят ввести скорость. Если он опять введет строку, ему снова покажут предупреждение и снова попросят ввести скорость.
И так будет до тех пор, пока человек не введет положительное число. Когда это произойдет, мы не знаем. Но только после этого программа сможет перейти к циклу «повторять всегда».
Рассмотрим второй пример использования цикла «повторять пока не …». Составим программу, в которой человеку предлагается угадать загаданное компьютером число. Однако перед этим познакомимся с блоком, генерирующим случайные цифры.

Команда «выдать случайное от … до …» генерирует случайное число в диапазоне от первого указанного числа до второго включительно. Например, если дана команда «выдать случайное от 10 до 30», то программа выдаст любое число, которое не меньше 10 и не больше 30. Это, например, может быть число 10, а может быть 17, или 25. Также возможно получить число 30.
В Scratch допустимо сначала указать большее число, а затем меньшее. Например, «выдать случайное от 100 до 50». Команда и в этом случае будет правильно работать и генерировать любое число от 50 до 100.
Кроме того, можно указывать отрицательные и дробные числа. В последнем случае целая и дробная часть разделяются точкой, а не запятой.
Итак, чтобы компьютер загадал случайное число, нам нужна команда «выдать случайное от … до …». Это число надо будет где-то сохранить, чтобы потом сравнивать с тем, что вводит человек. Значит, нам понадобиться переменная.
Человек должен отгадывать число до тех пор, пока не отгадает. Значит, нам понадобиться цикл «повторять пока не …». Что значит, пока не угадает? Это значит, что пока то, что ввел человек не совпадет с тем, что загадал компьютер, цикл должен продолжать крутиться и все просить и просить ввести очередное число.
В случае совпадения чисел, цикл должен прекращать свою работу, а на сцене должно появляться поздравление.

Переделайте скрипт про угадывание числа так, чтобы
- компьютер загадывал число от 1 до 100.
- Если человек вводит число, которое больше загаданного, то программа должна говорить ему «слишком много».
- Если человек вводит число, которое меньше загаданного, то программа должна говорить ему «слишком мало».
Подумайте, когда программа выполняется, какой способ отгадывания числа самый оптимальный. То есть как нужно отгадывать число, чтобы угадать его за меньшее количество попыток?
X Скрыть Наверх
Программирование в Scratch. Курс