«
Python

Python – Разработка игр для начинающих на Pygame

Python - Разработка игр для начинающих на Pygame

Заинтересованы в создании игр, но не знаете с чего начать? Этот пост для вас.

В этом посте предполагается, что вы хоть немного знакомы с Python (такими понятиями, как классы, циклы, функции и методы).

Что такое Pygame?

Pygame – это библиотека для python, которая позволяет нам создавать 2D игры. На самом деле это оболочка для мультимедийной библиотеки SDL (Simple DirectMedia Layer). Он может обрабатывать опросы событий, вставлять изображения в окно, звук и т.д. Вы можете получить это здесь .

Что в игре?

При создании 2D-игры используется очень простой скелет. Основная большая часть игры – это основной цикл. Как следует из названия, mainloop – это фрагмент кода, который выполняется многократно во время выполнения игры. Основной цикл имеет следующую структуру:

Loop: poll for events do calculations modify objects paint images on screen

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

Начинем

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

Следующее изображение предоставляется для вас:

Изображение игрока

Теперь введите следующую команду в любом текстовом редакторе по вашему выбору и сохранить его как game.py.

#!/usr/bin/env python2 import pygame as pg import sys WIDTH = 360 HEIGHT = 480 WHITE = (255, 255 , 255) class Player(pg.sprite.Sprite): def __init__(self, imagePath): # We first set the appropriate object variables self.image = pg.image.load(imagePath) # These are the coordinates of the player on the screen self.x, self.y = (WIDTH/2, HEIGHT/2) self.speed = 5 def move(self, mov_tup): # mov_up contains changes made to the x and y positions # we simply add those changes to the player's position self.x += mov_tup[0] self.y += mov_tup[1] def main(): pg.init() # initialise pygame pg.display.set_mode((WIDTH, HEIGHT)) # setting the window's dimensions mainS = pg.display.get_surface() FPS = 60 # Frames per second # the main window can now be accessed through mainS player = Player("player.png") # The clock is necessary for refreshing the screen clock = pg.time.Clock() mov_tup = (0, 0) # This is the actual mainloop while True: for event in pg.event.get(): if event.type == pg.QUIT: pg.quit() sys.exit() elif event.type == pg.KEYDOWN: if event.key == pg.K_d: mov_tup = (player.speed, 0) if event.key == pg.K_a: mov_tup = (-player.speed, 0) if event.key == pg.K_w: mov_tup = (0, -player.speed) if event.key == pg.K_s: mov_tup = (0, player.speed) player.move(mov_tup) mainS.fill(WHITE) # Fill the screen with the colour white mainS.blit(player.image, (player.x, player.y)) # Paint the player in the correct pos pg.display.update() # re-paint FPS times a second clock.tick(FPS) main()

Игра выглядит примерно так:

Фон игры

Как все это сочетается

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

Во-вторых, под pygame цвета понимаются как кортежи значений RGB (красный, зеленый, синий). Для белого все значения максимально 255.

Сам код легко понять. Во- первых, мы создали игрока класс, который наследуется от Sprite класса Pygame (Это будет объяснено позже). Объект player является экземпляром этого класса. Мы дали ему атрибут изображения и два атрибута позиции. Затем мы добавили метод перемещения, который принимает кортеж из двух значений и добавляет их к позициям. Таким образом, изменения в позициях добавляются к соответствующим позициям игрока, чтобы он мог перейти на новую позицию.

В основной функции мы инициализируем pygame. Затем мы просим pygame создать экран желаемого размера и «храним» его в mainS. Мы создаем объект часов и инициализируем значение mov_tup.

Затем наступает интересная часть. В mainloop есть цикл for, который перебирает все события, записанные Pygame. Он проверяет, нажал ли пользователь какой-либо из W, A, S или D. В зависимости от нажатой клавиши значение mov_tuple изменяется.

Метод move объекта player вызывается во время каждой итерации цикла. Он просто сдвигает атрибуты x и y объекта. Метод блитов рисует игрока в соответствии с заданными координатами. Поэтому наш мяч находится в постоянном движении, пока мы не намеренно изменим его направление.

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

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

А сейчас нечто совершенно другое

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

Следующая часть скоро придет.

Источник записи: https://thedebuggers.com

Связанные записи
Python

Функциональное программирование на Python

Python

Объекты, переменные и функции в Python - Отладчики

Python

Введение в Python для начинающих