Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Задача на Pygame

Гоша Скрынников Ученик (75), открыт 4 дня назад
import pygame

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() Хм… жизни есть, а как их можно потратить? Правильно! Ударяясь о стенки! Как только жизни закончатся – экран окрашивается в красный!
1 ответ
PS Просветленный (22525) 4 дня назад
Сначала надо выпрямить базовую структуру обработки событий и движения, а потом уже прикручивать жизни и красные экраны. Иначе это будет просто нагромождение костылей поверх кривой основы.
Похожие вопросы