суббота, 9 октября 2021 г.

Обработка событий в turtle python

Здравствуйте, дорогие читатели моего блога.  Сегодня тема посвещена процессу обработки событий нажатия клавиш модулем turtle в языке программирования turtle.


обработка событий в turtle python


Теория
В данный модуль встроены функции обработки событий, вот некоторые из них:

1. onclick(fun, btn, add) - нажатие на клавишу мыши, где
fun — вызываемая функция, btn — номер клавиши мыши (1 —
левая, по умолчанию),
add (значения True или False, если True
(по умолчанию), то к кнопке будет добавлена новая привязка,
иначе она заменяет прежнюю);

2.
onkey(fun, key) - нажатие на клавишу клавиатуры, где fun
вызываемая функция, key — название клавиши, например,
«space», «up», «a»;

3.
ontimer(fun, t) - устанавливает таймер, где fun
вызываемая функция,
t — число t >= 0, время в
миллисекундах, после истечения которого будет вызвана
функция
fun

Практика
На практике мы попробуем все из этих функций: onclick, onkey и ontimer.

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

Для того чтобы обрабатывались события нажатия клавиш используют класс Screen(), которая создаёт область покрытия всего окна для обнаружения события.

Ниже представлено начало нашей программы:
  1. import turtle
  2. import random
  3. w = turtle.Screen()
  4. w.title("Квадраты")
  5. w.bgcolor('light blue')

В качестве рализации работы двух первых функций создадим две функции (метода) для построения двух квадратов. Оба будут разных размеров. Но один будет получать координаты начала построения напрямую от указателя мыши, а второй вызывать случайные значения координат при нажатии клавиши Up.

def cvadro(x,y):
    turtle.color("green")
    turtle.width(10)
    turtle.up()
    turtle.goto(x,y)
    turtle.down()
    for i in range (4):
        turtle.forward(100)
        turtle.right(90)

def cvadro1():
    x= random.randint(-400, 400)
    y= random.randint(-400, 400)
    turtle.color("red")
    turtle.width(10)
    turtle.up()
    turtle.goto(x,y)
    turtle.down()
    for i in range (4):
        turtle.forward(100)
        turtle.right(90)

Далее, нам необходимо вызвать функции onclick и onkey и привязать к ним созданные методы.
Для метода onkey необходимо использовать функцию listen(). Данная функция необхадима для активации нашего screen, чтобы программа поняла на каком холсте рисовать.

w.onclick(cvadro, 1)
w.onkey(cvadro1, "Up")
w.listen()

Обратите внимание на код в методах. В начале кода используется turtle.up(), для того чтобы черепашка не оставляла след при перемещении по холсту к исходной точке.
Также прошу обратить внимание на формат записи клавиши в onkey(). Наименование клавиши записывается в кавычках с большой буквы.

Кликнем по F5 чтобы запустить программу и кликаем левой кнопкой мыши по любой области холста. В результате мы наблюдаем построение зелёного квадрата в том месте где находился указатель мыши.

Если мы будем кликать по клавише Up то будет рисоваться красный квадрат в происзвольной начальной точке относительно размеров окна. Пример ниже.

События с клавиш в turtle python

Если же нам необходимо чтобы квадрат создавался по истечению определённого времени, то воспользуемся методом ontimer.

w.ontimer(cvadro1, 1000)

Для данной команды нужно ввести два параметра:
- имя вызываемого метода
- время, через которое будет вызываться метод

Вы можете просмотреть видеоурок по данной теме здесь:

Итог

Исходя из изложенного материала мы изучили особенности считывания событий клавиш, кнопок мыши и отсчёт времени в модуле turtle.



пятница, 8 октября 2021 г.

Сборка игры.

Остался последний штрих в разработке нашей первой игры – это её сборка. Собранная игра может запускаться почти на любом компьютере с операционной системой windows. Для этого необходимо добавить аддон «сохранения игры и её экспорт в формат .exe».

Запустим параметр «Настройки».

сборка игры в blender exe



В открывшимся окне выберем «Дополнения»- «Игровой движок» и поставим галочки напротив «Game Engine …». Не забудьте сохранить настройки.

Рис.181 Сохранение игры.

 

Плагин сборки игры

Рис.182 Сохранение игры.

Теперь нужно выбрать функцию «Экспортировать», перед этим вы должны быть на начальной сцене игры. Среди представленных вариантов экспорта выбираем «Save As Game Engine Runtime»

 

Сборка игры blender

В открывшимся окне выбираем место где будет проходить сборка игры. Лучше, для этой цели создать папку «Mushroom_adventure».


 

путь сохранения игры

Выбрав нужную папку сохраняем игру.


 

сохранение игры blender

 Результат сборки представлен ниже.


 

собранная игра в blender

Запускаем файл «гриб.blend» - это приложение с расширением .exe.

Рис.186 Сохранение игры.

 

игра на blender

Игровое окно можно растягивать под экран. Поздравляю, игра создана.

 

Заключение.

В данной книге мы рассмотрели основы разработки игры жанра «Платформер». Я рекомендую улучшить данную игру самостоятельно, а лучше сделать свою, опираясь на те знания и опыт, которые вы получили. Проект, представленный в книге, вы можете скачать по ссылке: https://github.com/Antipat/Mushroom_adventure.git

Чтобы улучшить свои навыки в разработке игр рекомендую ознакомиться с направлениями в играх, трудовыми буднями игроделов и алгоритмами создания игр.

Желаю вам удачи, вы открывает для себя безграничный огромный цифровой мир.

Перейти к странице курса

Настройка фона и выхода

Теперь осталось настроить фон и фоновую музыку. В данном случае всё делается по предыдущей схеме.

Рис.166 Игра.

 

игра в blender

Сверху справа добавим текст «Нажмите кнопку E, если хотите покинуть игру». При нажатии данной кнопки игрока должно переместить на начальную сцену заставки игры. Создание данной сцены было намеренно пропущено и вот сейчас мы можем её создать.

Для начала, создадим текст. Чтобы текст можно писать на кириллице, необходимо указать где взять нужный шрифт.

Рис.167 Настройка текста.

 

Шрифт в blender

 Нужный шрифт расположен в папке «Windows»-«Fonts».

Рис.168 Настройка текста.

 

Шрифты для blender

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



 

Text в Blender

Добавим материал (цвет) для текста и увеличим объём. Для настройки объёма используем функцию «Выдавить» в окне «Текст».

Рис.170 Настройка текста.

 

Цвет для текста в blender

Для того чтобы текст в игре отображался в цвете, необходимо перевести его в 3d объект с полисеткой. Для перевода текста в полигональную модель используют комбинацию клавиш «Alt+C».

Рис.171 Настройка текста.

 


В этом случае текст уже нельзя редактировать как текстовый объект. Конечный результат представлен ниже.



 

GUI в Blender game

Теперь, чтобы перейти на нужную сцену при нажатии «E» нужно её создать. В данную сцену добавим фон и главных персонажей игры, скопировав их.

Рис.173 Настрока заставки.

 

фоновая заставка игры

Добавим в заставке две кнопки «Выход» и «Играть». Желательно сделать для них анимацию нажатия.


 

Кнопки в UI Blender



 

Игровой player в Blender

Перейдём в редактор логики и настроим кнопку «Играть». Так как нам нужно нажать курсором мыши на кнопку «Играть», то необходимо сделать так, чтобы данный курсор стал видимым. Для этого выделим фон и добавим логику всегда отображать курсор мыши.



 

Переход между сценами в игре

Теперь можем выделить кнопку «Играть». Для неё создадим два игровых свойства «kk» и «v». Для начала, сделаем так, чтобы кнопка запускала анимацию, когда мы навели курсор мыши и нажали левой кнопкой мыши. Во время нажатия ЛКМ игровому свойству «v» необходимо присвоить значение 1. Как только игровое свойство «kk» станет равной 100, то перейти на сцену с первым уровнем.

Чтобы свойство «kk» достигло значение 100 постепенно, необходимо использовать сенсор «всегда» с режимом задержки 0 кадров и сенсор «свойство», где определить, что «v»=1.А в актуатор добавим свойство, которое будет менять значение «kk» на 1 каждые 0 кадров задержки.



 

игровые свойства blender

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

Теперь настроим кнопку «Выход». Процедура таже, только вместо сцены из сенсоров берём «игра».



 

кнопка выхода из игры

Последним штрихом будет возвращение в данную сцену из второго уровня после нажатия клавиши "E". Данную логику наложим на текст.


 

переход между сценами клавишей

 Основные элементы игровой механики платформера были рассмотрены. Теперь вам осталось сделать в качестве закрепления такие задания:

- добавить функцию выхода в меню игры из первого игрового уровня
- добавить другие игровые предметы для первого и второго уровня, так чтобы начислялись разные очки.

- разработать алгоритм усложнения уровней (перемещение, скорость, случайность).


Перейти к странице курса


Установка mLink на Windows, macOS и Linux

mBlock 5 Webpage and mLink Quick Start Guide You can also use mBlock 5 on the web without downloading it. mBlock 5 webpage:   https://ide.mb...