Меня зовут Гарипов Антон, я ученик 10А класса МБОУ СОШ#10
В этой статье мы делать нашу первую игру в Python. Ей будет всем известная игра Змейка. Писать игру мы будем с помощью редактора кода PyCharm и библиотеки PyGame. Надеюсь что моя работа поможет кому-то найти новое хобби, получить некий опыт в работе с языком Python
1.Импортируем сам PyGame. Первым делом зададим поле, его величину и размер секции змейки, а также начальные положения змейки и яблока (откуда мы начнем игру, и где будет первое яблоко). Ими будут случайными величинами нашего диапазона нашего разрешения ( 800 на 600 ), затем определим длину змейки, за это отвечает параметр length, а также направления ее движения то есть по оси x и y. А за её скорость возьмем показания кадров в секунду.
Инициализируем модули PyGame, задаем окно рабочей программы (объект класса clock для регулирования скорости змейки.
На каждой итерации главного цикла будем закрашивать поверхность в черный цвет
Итак, добавляем саму змейку и яблоко, нарисуем все секции змейки, они у нас будут квадраты зеленого цвета. Пока что у нас только голова. А яблоко будет таким же квадратом, только красного цвета. Определим движение нашей змейки, её один шаг - это размер её головы, тоесть "1"
Теперь задаем задержку для fps (кадров в секунду), также включим проверку событий на закрытие нашего приложения, чтобы оно спокойно закрывалось.
Ну и конечно змейке нужно сделать управления. Программе нужна информация о всех нажатых клавишах. Управлять мы ей будем по стандарту на W,A,S,D. Под каждую клавишу назначаем соответствующие направления dx, dy.
В данный момент наша змейка выглядит так:
Чтобы она была необходимого размера, мы сделаем срез координат в соответствии со значением переменной, отвечающей за её длину
Теперь рассмотрим случай увеличения змеи (поедание яблока), теперь когда координата змейки равна координате яблока - выходит что мы его съели, поэтому заново размещаем это яблоко, его мы уже сверху прописали, так что просто копируем и вставляем. И тут же пишем, что при поедании яблока скорость растёт.
Каждая игра не может быть бесконечной, нам конечно надо рассмотреть случай когда мы проиграли, то есть когда змейка вышла за пределы поля, значит надо определить крайние положения x и y, за которыми игра не продолжается и обрывается цикл. А также наша змея может съесть себя
Но теперь у нас новая проблема, змейка ходит во всех направлениях, а значит нам нужно запретить ей ходить в некоторые направления, например, когда змея ползёт вверх, она не должна идти в низ, и по бокам аналогично, для этого заблокируем ей клавиши.
Теперь как только она идет в одну сторону, мы будем запрещать ей идти в обратную, вот так:
И что же у нас получается, мы запрограмировали ей все базовые правила поедания цели, рост и увеличение скорости, определили случаи окончания игры, а также написали правильное управление.
Но согласитесь, такая змейка мало кого впечатлит, чего же нам не хватает?
Давайте украсим нашу змейку, добавим ей фон, счет, и меню проигрыша. Вот это точно улучшит нашу игру, сделает её интереснее, приятнее и конечно красивее.
И так, определим шрифт и его размер для набранных очков. И введем переменную, которая увеличится при поедании яблок.
Рендерим надпись, и задаём ей цвет, надпись расположим в левом верхнем углу.
Аналогично делаем шрифт для конечной надписи, вместо завершения главного цикла ставим еще один цикл, включая проверку приложения
Наша змейка выглядит как-то не естественно, сделаем ей деления секций.
В завершении, остаётся выбрать картинку для фона. Мне кажется к нашей игре отлично подойдет 8-bit картинка, которая будет очень атмосферно смотреться, ищем в интернете подходящую.
Загружаем картинку, и вместо закрашивания поверхности в черный цвет будем использовать её.
Ну вот теперь-то наша змейка выглядит как полноценный, доведенный до ума проект.
Спасибо за просмотр, надеюсь моя статья кого то