pygame.init() # Код, описывающий окно программы width = 800 # Ширина окна height = 800 # Высота окна screen = pygame.display.set_mode([width, height])
# Создаём контроль FPS clock = pygame.time.Clock() # Создаём таймер FPS = 30 # Устанавливаем нужное значение FPS
# Игровые переменные, если надо, описываем в этом блоке bg = pygame.image.load('bg.jpg') # Фоновое изображение bg_x = 0 bg_y = 0 obj1_img = pygame.image.load('blue.png') # Изображение-объект obj2_img = pygame.image.load('green.png') # Изображение-объект x1 = 100 y1 = 100 x2 = 500 y2 = 250 X = 50 Y = 50 R = 20 X1 = 100 Y1 = 50 X2 = 150 Y2 = 50 width1 = 200 # Ширина первого объекта height1 = 200 # Высота первого объекта width2 = 200 # Ширина первого объекта height2 = 200 # Высота первого объекта speed1 = 10 # Скорость перемещения изображения-объекта move_x = 0 # Флаг движения по Х: 0 - стоит, -1 - влево, 1 - вправо move_y = 0 # Флаг движения по Y: 0 - стоит, -1 - вверх, 1 - вниз BLUE = 0, 32, 255
# Игровой цикл и флаг выполнения программы game_run = True while game_run: # БЛОК ОБРАБОТКИ СОБЫТИЙ ИГРЫ for event in pygame.event.get(): if event.type == pygame.QUIT: # Закрыли окно? game_run = False if event.type == pygame.KEYDOWN: # Что-то нажали на клавиатуре? # тут проверяем какие именно клавиши нажали if event.key == pygame.K_UP: move_y = -1 if event.key == pygame.K_DOWN: move_y = 1 if event.key == pygame.K_RIGHT: move_x = 1 if event.key == pygame.K_LEFT: move_x = -1 x1 += speed1 * move_x y1 += speed1 * move_y if ((x1 >= x2 - height1) and (y2 - width1 <= y1 <= y2 + width2)): x1 -= speed1 * move_x y1 -= speed1 * move_y move_x = 0 move_y = 0 x1 += speed1 * move_x y1 += speed1 * move_y if x1 <= 0: x1 -= speed1 * move_x if y1 <= 0: y1 -= speed1 * move_y if x1 <= 0: x1 = speed1 * move_x if y1 <= 0: y1 = speed1 * move_y move_x = 0 move_y = 0
# БЛОК ИГРОВОЙ ЛОГИКИ # тут размещаем все вычисления x1 += speed1 * move_x # Изменяем X координату объекта y1 += speed1 * move_y # Изменяем Y координату объекта move_x = 0 # Остановим движение move_y = 0 # Остановим движение
# БЛОК ОТРИСОВКИ ОБЪЕКТОВ В ОКНЕ ПРОГРАММЫ # тут закрашиваем фон и рисуем все объекты программы screen.blit(bg, (bg_x, bg_y)) # Отобразим фоновое изображение screen.blit(obj1_img, (x1, y1)) # Отобразим изображение-объект screen.blit(obj2_img, (x2, y2)) # Отобразим изображение-объект pygame.draw.circle (screen, BLUE, (X, Y), R) pygame.draw.circle (screen, BLUE, (X1, Y1), R) pygame.draw.circle (screen, BLUE, (X2, Y2), R)
# Отображение нарисованных объектов pygame.display.flip()
# Контроль FPS clock.tick(FPS)
pygame.quit() Хм… жизни есть, а как их можно потратить? Правильно! Ударяясь о стенки! Как только жизни закончатся – экран окрашивается в красный!
Сначала надо выпрямить базовую структуру обработки событий и движения, а потом уже прикручивать жизни и красные экраны. Иначе это будет просто нагромождение костылей поверх кривой основы.
pygame.init()
# Код, описывающий окно программы
width = 800 # Ширина окна
height = 800 # Высота окна
screen = pygame.display.set_mode([width, height])
# Создаём контроль FPS
clock = pygame.time.Clock() # Создаём таймер
FPS = 30 # Устанавливаем нужное значение FPS
# Игровые переменные, если надо, описываем в этом блоке
bg = pygame.image.load('bg.jpg') # Фоновое изображение
bg_x = 0
bg_y = 0
obj1_img = pygame.image.load('blue.png') # Изображение-объект
obj2_img = pygame.image.load('green.png') # Изображение-объект
x1 = 100
y1 = 100
x2 = 500
y2 = 250
X = 50
Y = 50
R = 20
X1 = 100
Y1 = 50
X2 = 150
Y2 = 50
width1 = 200 # Ширина первого объекта
height1 = 200 # Высота первого объекта
width2 = 200 # Ширина первого объекта
height2 = 200 # Высота первого объекта
speed1 = 10 # Скорость перемещения изображения-объекта
move_x = 0 # Флаг движения по Х: 0 - стоит, -1 - влево, 1 - вправо
move_y = 0 # Флаг движения по Y: 0 - стоит, -1 - вверх, 1 - вниз
BLUE = 0, 32, 255
# Игровой цикл и флаг выполнения программы
game_run = True
while game_run:
# БЛОК ОБРАБОТКИ СОБЫТИЙ ИГРЫ
for event in pygame.event.get():
if event.type == pygame.QUIT: # Закрыли окно?
game_run = False
if event.type == pygame.KEYDOWN: # Что-то нажали на клавиатуре?
# тут проверяем какие именно клавиши нажали
if event.key == pygame.K_UP:
move_y = -1
if event.key == pygame.K_DOWN:
move_y = 1
if event.key == pygame.K_RIGHT:
move_x = 1
if event.key == pygame.K_LEFT:
move_x = -1
x1 += speed1 * move_x
y1 += speed1 * move_y
if ((x1 >= x2 - height1) and (y2 - width1 <= y1 <= y2 + width2)):
x1 -= speed1 * move_x
y1 -= speed1 * move_y
move_x = 0
move_y = 0
x1 += speed1 * move_x
y1 += speed1 * move_y
if x1 <= 0:
x1 -= speed1 * move_x
if y1 <= 0:
y1 -= speed1 * move_y
if x1 <= 0:
x1 = speed1 * move_x
if y1 <= 0:
y1 = speed1 * move_y
move_x = 0
move_y = 0
# БЛОК ИГРОВОЙ ЛОГИКИ
# тут размещаем все вычисления
x1 += speed1 * move_x # Изменяем X координату объекта
y1 += speed1 * move_y # Изменяем Y координату объекта
move_x = 0 # Остановим движение
move_y = 0 # Остановим движение
# БЛОК ОТРИСОВКИ ОБЪЕКТОВ В ОКНЕ ПРОГРАММЫ
# тут закрашиваем фон и рисуем все объекты программы
screen.blit(bg, (bg_x, bg_y)) # Отобразим фоновое изображение
screen.blit(obj1_img, (x1, y1)) # Отобразим изображение-объект
screen.blit(obj2_img, (x2, y2)) # Отобразим изображение-объект
pygame.draw.circle (screen, BLUE, (X, Y), R)
pygame.draw.circle (screen, BLUE, (X1, Y1), R)
pygame.draw.circle (screen, BLUE, (X2, Y2), R)
# Отображение нарисованных объектов
pygame.display.flip()
# Контроль FPS
clock.tick(FPS)
pygame.quit() Хм… жизни есть, а как их можно потратить? Правильно! Ударяясь о стенки! Как только жизни закончатся – экран окрашивается в красный!