Как сделать игру 3 в ряд на python

Добавил пользователь Morpheus
Обновлено: 19.09.2024

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

Для реализации игр на Питон мы можем выбрать одну из нескольких библиотек. Можно работать с: Kivy, Tkinter, PyQt или же с любой другой библиотекой, что обеспечивает построение графического интерфейса через Python. Таких библиотек много, но мы возьмем библиотеку PyGame , которая даже своим названием говорит о её предназначении.

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

Настройка проекта

Перед использованием PyGame его нужно установить через терминал. Прописываем команду:

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

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

Создание платформера

Для создания платформера потребуется написать куда больше строк кода. Мы прикрепляем весь код проекта ниже. В коде есть комментарии для лучшего понимания:

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




(фото на задний фон)

Видео на эту тему

Также вы можете просмотреть детальное видео по разработке 2D платформера на Python + PyGame:


Дополнительный курс

На нашем сайте также есть углубленный курс по изучению языка Питон . В ходе огромной программы вы изучите не только язык Питон, но также научитесь создавать веб сайты за счёт веб технологий и фреймворка Джанго. За курс вы изучите массу нового и к концу программы будете уметь работать с языком Питон, создавать на нём полноценные ПК приложения на основе библиотеки Kivy, а также создавать веб сайты на основе библиотеки Джанго.

Больше интересных новостей

PWA – технология будущего? Разработка PWA проекта

PWA – технология будущего? Разработка PWA проекта

Что должен знать каждый Full Stack разработчик?

Что должен знать каждый Full Stack разработчик?

Какой выбрать CMS для сайта? Обзор 5 движков для веба

Какой выбрать CMS для сайта? Обзор 5 движков для веба

НЕЙРОСЕТЬ: просто о сложном! Создание нейронной сети на Python

НЕЙРОСЕТЬ: просто о сложном! Создание нейронной сети на Python

Код в уроках был написан на Python 3.7 и Pygame 1.9.6

Что такое Pygame?

  • Графика и анимация
  • Звук (включая музыку)
  • Управление (мышь, клавиатура, геймпад и так далее)

Игровой цикл

В каждом кадре происходит масса вещей, но их можно разбить на три категории:

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

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

В этом шаге все выводится на экран: фоны, персонажи, меню. Все, что игрок должен видеть, появляется на экране в нужном месте.

Время

Еще один важный аспект игрового цикла — скорость его работы. Многие наверняка знакомы с термином FPS, который расшифровывается как Frames Per Second (или кадры в секунду). Он указывает на то, сколько раз цикл должен повториться за одну секунду. Это важно, чтобы игра не была слишком медленной или быстрой. Важно и то, чтобы игра не работала с разной скоростью на разных ПК. Если персонажу необходимо 10 секунд на то, чтобы пересечь экран, эти 10 секунд должны быть неизменными для всех компьютеров.

Создание шаблона Pygame

Теперь, зная из каких элементов состоит игра, можно переходить к процессу написания кода. Начать стоит с создания простейшей программы pygame, которая всего лишь открывает окно и запускает игровой цикл. Это отправная точка для любого проекта pygame.

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

Дальше необходимо открыть окно игры:

pygame.init() — это команда, которая запускает pygame. screen — окно программы, которое создается, когда мы задаем его размер в настройках. Дальше необходимо создать clock , чтобы убедиться, что игра работает с заданной частотой кадров.

Теперь необходимо создать игровой цикл:

Игровой цикл — это цикл while , контролируемый переменной running . Если нужно завершить игру, необходимо всего лишь поменять значение running на False . В результате цикл завершится. Теперь можно заполнить каждый раздел базовым кодом.

Раздел рендеринга (отрисовки)

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

Таблица цветов RGB

Экраны компьютеров сделаны из пикселей, каждый из которых содержит 3 элемента: красный, зеленый и синий. Цвет пикселя определяется тем, как горит каждый из элементов:

Каждый из трех основных цветов может иметь значение от 0 (выключен) до 255 (включен на 100%), так что для каждого элемента есть 256 вариантов.

Узнать общее количество отображаемых компьютером цветов можно, умножив:

Теперь, зная, как работают цвета, можно задать их в начале программ:

А после этого — заполнить весь экран.

А это значит, что процесс отрисовки происходит один раз за кадр, а не при добавлении каждого элемента.

В pygame это происходит автоматически. Нужно всего лишь сказать доске, чтобы она перевернулась, когда отрисовка завершена. Эта команда называется flip() :

Главное — сделать так, чтобы функция flip() была в конце. Если попытаться отрисовать что-то после поворота, это содержимое не отобразится на экране.

Раздел ввода (событий)

Игры еще нет, поэтому пока сложно сказать, какие кнопки или другие элементы управления понадобятся. Но нужно настроить одно важное событие. Если попытаться запустить программу сейчас, то станет понятно, что нет возможности закрыть окно. Нажать на крестик в верхнем углу недостаточно. Это тоже событие, и необходимо сообщить программе, чтобы она считала его и, соответственно, закрыла игру.

События происходят постоянно. Что, если игрок нажимает кнопку прыжка во время отрисовки? Это нельзя игнорировать, иначе игрок будет разочарован. Для этого pygame сохраняет все события, произошедшие с момента последнего кадра. Даже если игрок будет лупить по кнопкам, вы не пропустите ни одну из них. Создается список, и с помощью цикла for можно пройтись по всем из них.

В pygame много событий, на которые он способен реагировать. pygame.QUIT — событие, которое стартует после нажатия крестика и передает значение False переменной running , в результате чего игровой цикл заканчивается.

Контроль FPS

Пока что нечего поместить в раздел Update (обновление), но нужно убедиться, что настройка FPS контролирует скорость игры. Это можно сделать следующим образом:

Команда tick() просит pygame определить, сколько занимает цикл, а затем сделать паузу, чтобы цикл (целый кадр) длился нужно время. Если задать значение FPS 30, это значит, что длина одного кадра — 1/30, то есть 0,03 секунды. Если цикл кода (обновление, рендеринг и прочее) занимает 0,01 секунды, тогда pygame сделает паузу на 0,02 секунды.

Наконец, нужно убедиться, что когда игровой цикл завершается, окно игры закрывается. Для этого нужно поместить функцию pygame.quit() в конце кода. Финальный шаблон pygame будет выглядеть вот так:

Ура! У вас есть рабочий шаблон Pygame. Сохраните его в файле с понятным названием, например, pygame_template.py , чтобы можно было использовать его каждый раз при создании нового проекта pygame.

В следующем руководстве этот шаблон будет использован как отправная точка для изучения процесса отрисовки объектов на экране и их движения.

Шесть, pygame для создания простой игры в тетрис (Basic 1)

1. Начальный интерфейс

Предыдущие игры были относительно простыми, поэтому код был написан процессно-ориентированным способом. На этот раз игра может быть более сложной (например, битва человек-машина, онлайн-битва, использование реквизита и т. Д.). На этот раз я пишу этот проект более объектно-ориентированным.
Окно игры разработано с использованием специального класса Panel для облегчения управления и контроля отдельного игрового окна.
Размер главного окна игры составляет 30 пикселей на квадрат, поэтому ширина составляет 3010 = 300, высота 3020=600


Изображение эффекта

2. Управление кубом


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

В-третьих, создайте блоки и сбросьте блок

Определите функцию для создания блока

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

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

Установить время обновления местоположения

Обновить позицию текущего движущегося блока в основном цикле


Теперь вы можете увидеть эффект падения куба

В-четвертых, суждение о приземлении блока

Добавьте функцию оценки перемещения в класс Block, следующая функция can_move может определить, упал ли блок на дно

Измените функцию перемещения Panel на

Здесь добавлена ​​функция add_block для сохранения приземлившихся блоков, поэтому Panel внесла три дополнительных изменения.
1. Добавьте переменную массива для хранения отброшенных блоков.

2. Определите функцию add_block.

3. Нарисуйте self.rect_arr краской.


Теперь вы видите, что блок упадет на дно, а затем упадет новый блок.

Вставить текущую полную программу

Напишите сначала эту главу, переходите к следующей главе

Интеллектуальная рекомендация

UIWebView-OC и взаимодействие JS

1. Перехватить указанный URL-адрес в прокси-методе webView. 2. По перехваченному URL-адресу определите специальное поле, указанное в URL-адресе, для обработки соответствующего события. 3. Передайте ис.

Реализация стека


[Libuv эффективное программирование] Libuv обучение супер подробный учебник 2 - основы Libuv

Каталог статьи рамки Libuv Синхронный I / O Асинхронный ввод / вывод Ручки и просит цикл событий Ссылаться на рамки Libuv Из официальной документации, вы можете найти картину дизайн рамы:libuv/docs/sr.

Ваш городской слоган? Python Trawly Анализ национальных купонов выпустил данные

| Лю рано Источник | Ранний Python (ID: Zaoqi-Python) Недавно в различных формах поощряется более разнообразные формы купонов потребления и субсидии потребления, а некоторые города постоянно добавляют.


Нажмите на картинку, чтобы выделить картинку

Код Поскольку включенные js и css больше, нелегко копировать, пожалуйста, загрузите интерфейс загрузки "Мышь Нажмите на картинку, изображение большой .rar" для загрузки.

Перед тем как двигаться дальше, давайте посмотрим на основные разделы нашей статьи:

Установка Pygame

Первое, что нам надо сделать, это установить библиотеку Pygame. Это можно сделать, просто выполнив следующую команду:

Выполнив это, просто импортируем эту библиотеку и приступим к разработке игры. Но перед этим давайте взглянем на основные функции данной библиотеки, которые мы будем использовать при создании игры.

Создание экрана

Для создания экрана при помощи Pygame нужно воспользоваться функцией display.set_mode() . Также необходимо пользоваться методом init() для инициализации экрана в начале кода и методом quit() для его закрытия в конце. Метод update() используется для применения каких-либо изменений на экране. Еще существует метод flip() , который работает похожим с update() образом. Разница заключается лишь в том, что метод flip() переписывает весь экран целиком, а метод update() применяет именно изменения (хотя если его использовать без параметров, то он тоже переписывает весь экран) .

Результат:


Теперь, запустив этот код, вы увидите, что экран не пропадает, как раньше. На нем будут отображаться все действия игры. Мы этого добились благодаря функции event.get() . Также, при помощи функции display.set_caption() , мы вывели заголовок нашего экрана — ‘Snake game by Pythonist’.

Теперь, когда наш экран полностью подготовлен, нам предстоит нарисовать на нем змейку. Этому посвящен следующий раздел.

Лаборатория Django-разработки

За 3 месяца отработай навыки Django-разработки до профессионального уровня на серьезном проекте под руководством наставника.

Создание змейки

Перед тем как создать змейку, мы инициируем несколько цветовых переменных для раскрашивания самой змейки, еды и экрана. В Pygame используется цветовая схема RGB (RED, GREEN, BLUE). Установка всех цветов в 0 соответствует черному цвету, а в 255 — соответственно, белому.

Фактически, наша змейка является прямоугольником. Чтобы нарисовать прямоугольник в Pygame, можно воспользоваться функцией draw.rect() , которая нарисует нам прямоугольник заданного цвета и размера.

Результат:


Как можно увидеть, змейка создана в виде голубого прямоугольника. Теперь нам нужно научить ее двигаться.

Движение змейки

Чтобы передвигать змейку, мы будем использовать ключевые события из класса KEYDOWN библиотеки Pygame. События K_UP , K_DOWN , K_LEFT , и K_RIGHT заставят змейку двигаться вверх, вниз, влево и вправо соответственно. Также, цвет дисплея меняется от черного (по умолчанию) до белого при помощи метода fill() .

Для сохранения изменений координат x и y мы создали две новых переменные: x1_change и y1_change .

Результат:

В игре змейка игрок проигрывает, если касается границы экрана. Чтобы задать такое поведение, мы должны использовать инструкцию if , которая будет следить за тем, чтобы координаты x и y были меньше размеров экрана. Мы будем использовать для этого переменные, чтобы вы могли потом, при случае, легко внести какие-либо изменения в игру.

Результат:


Добавление еды

Результат:


Terminal:


Увеличение длины змейки

Результат:

Вывод счета на экран

И последнее, но весьма важное дело: вам нужно отображать счет игрока. Для этого мы создали функцию Your_score . Это функция будет показывать размер змейки за вычетом 1 (так как это начальный размер змейки).

Результат:


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

Лаборатория Django-разработки

За 3 месяца отработай навыки Django-разработки до профессионального уровня на серьезном проекте под руководством наставника.

Читайте также: