Урок 9. Python. Наша первая игра в pygame.

Автор: | 22.11.2016

Для создания игр существует специальная библиотека pygame.

Для ее подключения необходимо в начале программы написать:

import sys, pygame

Для инициализации pygame

pygame.init()

Для загрузки спрайтов в игру

ball = pygame.image.load("ball.gif")

Для определения размеров объекта

ballrect = ball.get_rect()

Для перемещения объекта

plrect = plrect.move([0, height-100])

Где в функцию move передается массив с изменениями координат по осям x и y

 

Для обработки выхода из игры служит код:

for event in pygame.event.get():
     if event.type == pygame.QUIT:
         sys.exit()

Обработка событий клавиатуры

keys = pygame.key.get_pressed()
    if keys[pygame.K_RIGHT]:
        plrect = plrect.move([3,0])
    if keys[pygame.K_LEFT]:
        plrect = plrect.move([-3,0])

Для создания фона игры

screen.fill(black)

Для отображения объекта на экране

screen.blit(ball, ballrect)

Для управления fps

pygame.time.wait(10)

для отображения созданного кадра

pygame.display.flip()

 

Простой пример кода игры:

import sys, pygame
pygame.init()

size = width, height = 320, 240
speed = [2, 2]
black = 0, 0, 0

screen = pygame.display.set_mode(size)

ball = pygame.image.load("ball.gif")
platform = pygame.image.load("platform.png")
ballrect = ball.get_rect()
plrect = platform.get_rect()
plrect = plrect.move([0, height-100])

while 1:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
    keys = pygame.key.get_pressed()
    if keys[pygame.K_RIGHT]:
        plrect = plrect.move([3,0])
    if keys[pygame.K_LEFT]:
        plrect = plrect.move([-3,0])


    ballrect = ballrect.move(speed)

    if ballrect.left < 0 or ballrect.right > width:
        speed[0] = -speed[0]
    if ballrect.top < 0 or ballrect.bottom > height:
        speed[1] = -speed[1]
    screen.fill(black)
    screen.blit(ball, ballrect)
    screen.blit(platform, plrect)
    pygame.time.wait(10)
    pygame.display.flip()

Задание:

Доделать код чтобы мяч отталкивался от платформы.