Перейти к содержимому

Как сделать онлайн игру на python

  • автор:

Создаём «Змейку» — первую игру на Python и Pygame

Учимся программировать через разработку игр. Сегодня напишем знакомую всем «Змейку» — вспомним правила игры и реализуем их на Python.

Иллюстрация: Оля Ежак для Skillbox Media

Антон Яценко

Антон Яценко
Изучает Python, его библиотеки и занимается анализом данных. Любит путешествовать в горах.

Pygame — популярная библиотека для создания игр под различные устройства на Windows, macOS, Linux или Android. Она помогает разработчику не только описать геймплей, но и работать с клавиатурой, мышью, акселерометром, звуком и видео.

Первая версия Pygame была представлена Питом Шиннерсом в октябре 2000 года. За 22 года вокруг библиотеки сложилось большое комьюнити, а о работе с ней написано несколько десятков книг. Последняя стабильная версия на июль 2022 года — 2.1.2.

Давайте разберёмся в том, как устроена Pygame, и напишем свою первую игру — классическую «Змейку» на Python, которую студенты часто берут для курсовой работы по программированию.

Устанавливаем Pygame и разбираемся

Pygame — не самостоятельная библиотека. На самом деле это обёртка для библиотеки SDL, Simple DirectMedia Layer. Именно SDL позволяет задействовать любые внешние устройства — например, мышь или клавиатуру. А Pygame делает работу с ними удобной для Python-разработчика.

Установить Pygame просто. Для этого воспользуемся терминалом или командной строкой и командой pip:

Теперь игровое окно не закрывается само по себе. Однако и закрыть его мы тоже не сможем — если нажать на кнопку «Выход», ничего не произойдёт. Исправляем это с помощью кода: добавляем событие QUIT, закрывающее окно.

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

Шаг 3

Описываем движения змейки

Управлять перемещением змейки можно с помощью специального класса Pygame KEYDOWN. Класс позволяет использовать четыре стандартных события, получая их с клавиавтуры: K_UP, K_DOWN, K_LEFT и K_RIGHT — они соответствуют движениям змейки вверх, вниз, влево и вправо. Срабатывание любого события из класса KEYDOWN приводит к изменению положения змейки. Зададим шаг этого движения в 10 пикселей.

Кроме того, мы должны создать две переменные для хранения значений координат первой клетки нашей змейки по осям x и y. Назовём их x1_change и y1_change.

Шаг 4

Учитываем препятствия — границы игрового поля

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

Шаг 5

Добавляем еду для змейки

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

А если выполнить условие для завершения игры, то появится сообщение с предложением выйти из игры или начать её заново:

Шаг 6

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

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

Шаг 7

Добавляем отображение счёта

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

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

Итоговый код

Наш код полностью и без комментариев:

import pygame import time import random pygame.init() white = (255, 255, 255) yellow = (255, 255, 102) black = (0, 0, 0) red = (213, 50, 80) green = (0, 255, 0) blue = (50, 153, 213) dis_width = 800 dis_height = 600 dis = pygame.display.set_mode((dis_width, dis_height)) pygame.display.set_caption('Змейка от Skillbox') clock = pygame.time.Clock() snake_block = 10 snake_speed = 15 font_style = pygame.font.SysFont("bahnschrift", 25) score_font = pygame.font.SysFont("comicsansms", 35) def Your_score(score): value = score_font.render("Ваш счёт: " + str(score), True, yellow) dis.blit(value, [0, 0]) def our_snake(snake_block, snake_list): for x in snake_list: pygame.draw.rect(dis, black, [x[0], x[1], snake_block, snake_block]) def message(msg, color): mesg = font_style.render(msg, True, color) dis.blit(mesg, [dis_width / 6, dis_height / 3]) def gameLoop(): game_over = False game_close = False x1 = dis_width / 2 y1 = dis_height / 2 x1_change = 0 y1_change = 0 snake_List = [] Length_of_snake = 1 foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0 foody = round(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0 while not game_over: while game_close == True: dis.fill(blue) message("Вы проиграли! Нажмите Q для выхода или C для повторной игры", red) Your_score(Length_of_snake - 1) pygame.display.update() for event in pygame.event.get(): if event.type == pygame.KEYDOWN: if event.key == pygame.K_q: game_over = True game_close = False if event.key == pygame.K_c: gameLoop() for event in pygame.event.get(): if event.type == pygame.QUIT: game_over = True if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: x1_change = -snake_block y1_change = 0 elif event.key == pygame.K_RIGHT: x1_change = snake_block y1_change = 0 elif event.key == pygame.K_UP: y1_change = -snake_block x1_change = 0 elif event.key == pygame.K_DOWN: y1_change = snake_block x1_change = 0 if x1 >= dis_width or x1 < 0 or y1 >= dis_height or y1 < 0: game_close = True x1 += x1_change y1 += y1_change dis.fill(blue) pygame.draw.rect(dis, green, [foodx, foody, snake_block, snake_block]) snake_Head = [] snake_Head.append(x1) snake_Head.append(y1) snake_List.append(snake_Head) if len(snake_List) > Length_of_snake: del snake_List[0] for x in snake_List[:-1]: if x == snake_Head: game_close = True our_snake(snake_block, snake_List) Your_score(Length_of_snake - 1) pygame.display.update() if x1 == foodx and y1 == foody: foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0 foody = round(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0 Length_of_snake += 1 clock.tick(snake_speed) pygame.quit() quit() gameLoop()

Что дальше?

Узнать об особенностях работы с Pygame и возможностях библиотеки можно в официальной документации. Углубиться в разработку и попробовать другие игры можно благодаря специализированным книгам:

  • «Учим Python, делая крутые игры» Эла Свейгарта;
  • «Beginning Game Development with Python and Pygame: From Novice to Professional» Уилла Макгугана;
  • «Program Arcade Games: With Python and Pygame» Пола Винсента Крэйвена.

Больше интересного про код в нашем телеграм-канале. Подписывайтесь!

Можно ли создавать онлайн игры (2D) на Python PyGame?

Привет! Недавно я посмотрел ролик на YouTube, про вечеринку в Fortnite, тусовка была масштабной, и я вдохновившись этим событием, решил создать 2D игру где можно объединиться с игроками и сражаться с «Боссами», игра конечно должна была быть мультиплеерным, но когда я погуглил, мне выходили только «2D игра на Pygame» и т.д. в котором не было мультиплеера. Так можно ли создать мультиплеерную игру на Python с PyGame, или есть другие фреймворки? И если знаете книги или же курсы по этой теме, прошу скинуть в ответы.

  • Вопрос задан более трёх лет назад
  • 2088 просмотров

Комментировать
Решения вопроса 0
Ответы на вопрос 2
Делай добро и бросай его в воду.
А как ты гуглил?
spoiler

5f574432b9800370492821.png

(риторический вопрос, являющийся ответом)
Ответ написан более трёх лет назад
Имя Фамилия @alikk_python Автор вопроса

5f57449de9b07780744772.png

Вот так.

А ты хорошо знаешь английский? Потому что без него будет ну очень туго. Ведь 90% всей информации на английском языке.

И если информации очень много, она структурирована и существует уже много лет, то велик шанс, что попадёшь в те 10%, которые уже переведены на русский (или даже первоисточник на русском).

А если информация относительно нова, и она разрознена по интернету, то собирать её придётся по крупицам. Геймдев — очень стремительно развивающаяся сфера, статьи и гайды начинают протухать уже примерно за пару лет. И python — не самый лучше выбор для нормальной игры, поэтому фанатов и желающих поделиться инфой людей гораздо меньше, чем, скажем, по Unity. Так что без английского в данном случае — никак.

Имя Фамилия @alikk_python Автор вопроса
dollar, Да, вполне хоршо

Алик Питоненко, тогда тебе нужно просто правильно гуглить. 🙂 Путём ввода ключевых слов, а не «свет мой гугл, расскажи, да всю правду доложи». Это и есть ответ на вопрос.

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

Имя Фамилия @alikk_python Автор вопроса
dollar, Есть курсы по «Правильному гуглению»?
Нет, но как то ни парадоксально, можно сделать так:
spoiler

5f574756d03d6956706364.png

И можно найти не курсы, но какие-то статьи.

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

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

python

  • Python
  • +2 ещё

Ошибка 400: EXPIRE_DATE_INVALID в коде бота для telegram, как исправить?

  • 1 подписчик
  • 37 минут назад
  • 13 просмотров

Как создать игру на Python с использованием Pygame

Узнайте, как создать свою первую игру на Python с использованием библиотеки Pygame, отрисовки графики, обработки ввода до добавления звуков!

Алексей Кодов
Автор статьи
10 июля 2023 в 17:48

Python — один из самых популярных языков программирования, и его использование в разработке игр становится все более популярным. В этой статье мы рассмотрим, как создать простую игру на Python с использованием библиотеки Pygame.

Что такое Pygame?

Pygame — это кросс-платформенная библиотека для разработки видеоигр на языке программирования Python. Она включает в себя множество функций, которые облегчают разработку игр, таких как отрисовка графики, обработка ввода и управление звуком ��.

Установка Pygame

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

pip install pygame 

Создание окна игры

Первым делом, создадим окно игры. Вот пример кода для создания окна размером 800×600 пикселей:

import pygame pygame.init() screen = pygame.display.set_mode((800, 600)) pygame.display.set_caption("Моя игра") running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False pygame.display.flip() pygame.quit()

Python-разработчик: новая работа через 9 месяцев
Получится, даже если у вас нет опыта в IT

Работа с графикой

Теперь добавим нашему окну игры фон и спрайт (игровой объект). Сначала загрузим изображения:

background = pygame.image.load("background.png") sprite = pygame.image.load("sprite.png")

Затем отрисуем их на экране:

screen.blit(background, (0, 0)) screen.blit(sprite, (100, 100))

Обработка ввода

Чтобы сделать игру интерактивной, добавим обработку ввода с клавиатуры. Вот пример кода для перемещения спрайта влево или вправо при нажатии на стрелки:

keys = pygame.key.get_pressed() if keys[pygame.K_LEFT]: sprite_rect.x -= 5 if keys[pygame.K_RIGHT]: sprite_rect.x += 5

Добавление звуков

Наконец, давайте добавим звуки в нашу игру. Загрузим звуковые файлы и проиграем их при определенных событиях:

jump_sound = pygame.mixer.Sound("jump.wav") hit_sound = pygame.mixer.Sound("hit.wav") if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE: jump_sound.play() if sprite_collides_with_enemy: hit_sound.play()

Теперь вы знаете основы создания игры на Python с использованием Pygame! Эти примеры — лишь отправная точка, и вы можете использовать их для создания своих собственных игровых проектов. Удачи в разработке! ��

Создание игры на Python

Игра на Pygame с нуля / Урок #1 – Разработка игр на Python для начинающих

Игра на Pygame с нуля / Урок #1 – Разработка игр на Python для начинающих

Python – многофункциональный язык, что позволяет создавать сайты, программы и даже игры. Вы научитесь разрабатывать игры на Pygame с нуля на базе языка Питон. Ваша игра будет обладать всем необходимым: интерфейс, меню, анимации, физика, картинки и прочее.

Видеоурок

Полезные ссылки:

  1. Видео на тему работы компьютера ;
  2. Курс по языку Python ;
  3. Официальный сайт Python ;
  4. Программа PyCharm ;
  5. Установка PyGame .

Информация про Pygame

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

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

Приложения написанные на PyGame могут спокойно работать на Андроид и на ПК. Поддержки iOS здесь нет по причине закрытости самой платформы iOS для сторонних разработчиков. Вы можете прописать код один раз, создать игру и позже запускать ее как на компьютере, так и на Android устройствах.

Как делают игры?

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

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

Для того чтобы понять что такое игра — нужно понять из чего она состоит. Классическая 2Д игра состоит из множества изображений. Например: основной игрок, задний фон, враги и тому прочее. Если вы начнете динамично менять эти картинки, то получите анимацию, если же вы начнете их двигать в разные координаты, то получите передвижение. То есть в базовом понимании игра состоит из картинок, которые либо сменяются, либо передвигаются.

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

Это и есть базовое описании процесса отображения игр компьютером.

На что способен Pygame?

Pygame позволяет строить игры разного жанра с разным набором функций. Главное что делает библиотека – позволяет вам отобразить изображение на экране вашего ПК. Отобразив какое-либо изображение вы можете начать двигать его по координатам и вот вы уже получите эффект движения в игре. Или же вы можете начать динамично менять изображения друг за другом и вы получите эффект анимации.

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

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

Примеры игр

Начать изучать какую-то библиотеку без понимая того что вы сможете на ее основе создать – дело не мотивирующее. Поэтому сперва предлагаем посмотреть на примеры тех игр, что были разработаны на основе языка Питон и библиотеки Pygame.

Такие проекты не могут похвастаться графикой и функциями как в играх класса ААА, но несмотря на это они могут быть интересны с точки зрения своего функционала и действий в игре. Одной из таковых игр является Historical Wargame Simulator. Это игра в жанре стратегии, где у вас набор из множества функций и действий. Смотря на эту игру даже сложно осознать что она создана только за счет языка Python.

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

Приведем пример нескольких:

  • игра TRUNKMAN с реально крутой графикой и интересной задумкой;
  • игра Necrostation выполненная в духе классических олд скульных игр с кучей анимацией;
  • игра Gleamshroom, где вам предстоит играть за гриб. В игре нужно преодолевать разные препятствия и в конце добраться до конечной точки;
  • игра Planyt – классический платформер со множеством анимаций, красивым дизайном и интересной задумкой;
  • игра Explon’t, которая смахивает на жанр платформера. В ней также много графики, красивый дизайн, интересный функционал и насыщенная картинка.

И вот подобных проектов созданных на Pygame очень и очень много. Многие из них представлены на официальном сайте самой библиотеки Pygame, так что можете заценить все эти игры там.

План курса

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

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

Прежде чем перейти к изучению самого курса вам стоит изучить язык Питон . Без базовых знаний этого языка вам будет сложно понять код. Вам не требуется досконально знать язык. Наоборот, вы можете его знать совсем поверхностно и этих знаний вам хватит для прохождения курса по Pygame.

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

На нашем сайте вы найдете дополнительные курсы по теме языка Python. Если вас интересует полное изучения языка и его фреймворков, то рекомендуем вашему вниманию программу обучения: « Python разработчик ».

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

Задание к уроку

Библиотека PyGame

На что способна библиотека PyGame? Какие функции она предоставляет и что вы можете получить при её использовании?

Посмотреть ответ

Библиотека PyGame дает возможность вам создавать игры как под ПК, так и под Андроид.

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

Большое задание по курсу

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *