Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- import pygame
- def draw_text(screen,text,size,x,y,color): # Функция для текста на экране
- font_name = pygame.font.match_font('arial') # Выбираем тип шрифта для текста
- font = pygame.font.Font(font_name, size) # Шрифт выбранного типа и размера
- text_image = font.render(text, True, color) # Превращаем текст в картинку
- text_rect = text_image.get_rect() # Задаем рамку картинки с текстом
- text_rect.center = (x,y) # Переносим текст в координаты
- screen.blit(text_image, text_rect) # Рисуем текст на экране
- pygame.init() # Инициализируем модуль pygame
- width = 1200 # ширина игрового окна
- height = 700 # высота игрового окна
- fps = 30 # частота кадров в секунду
- game_name = "Arkanoid" # название нашей игры
- # Цвета
- BLACK = "#000000"
- WHITE = "#FFFFFF"
- RED = "#FF0000"
- GREEN = "#008000"
- BLUE = "#0000FF"
- CYAN = "#00FFFF"
- YELLOW = "#FFFF00"
- #Создаем игровой экран
- screen = pygame.display.set_mode((width, height))
- pygame.display.set_caption(game_name) # Заголовок окна
- icon = pygame.image.load('icon.png') # Загружаем файл с иконкой
- pygame.display.set_icon(icon) # Устанавливаем иконку в окно
- timer = pygame.time.Clock() # Создаем таймер pygame
- run = True
- pic = pygame.image.load('smile.png') # Загружаем спрайт
- pic = pygame.transform.scale(pic, (100,100)) # Указываем размеры
- pic_rect = pic.get_rect() # Получаем рамку спрайта
- bg = pygame.image.load('bg.jpg') # Загружаем задний фон
- bg_rect = bg.get_rect() # Получаем рамку фона
- speedx = 10
- speedy = 10
- lives = 3
- racket = pygame.image.load('racket.png') # Загружаем спрайт игрока
- racket_rect = racket.get_rect() # Получаем рамку спрайта игрока
- racket_rect.x = width / 2 - racket.get_width()/2
- racket_rect.y = height - 50
- ping = pygame.mixer.Sound('ping.mp3') # Звук отскока
- loose = pygame.mixer.Sound('loose.mp3') # Звук проигрыша
- pygame.mixer.music.load('8bit.mp3') # Загружаем музыку
- pygame.mixer.music.set_volume(0.1) # Громкость 10%
- pygame.mixer.music.play(-1) # Бесконечный повтор
- while run: # Начинаем бесконечный цикл
- timer.tick(fps) # Контроль времени (обновление игры)
- for event in pygame.event.get(): # Обработка ввода (события)
- if event.type == pygame.QUIT: # Проверить закрытие окна
- run = False # Завершаем игровой цикл
- key = pygame.key.get_pressed() # Считываем нажатия на клавиши
- if key[pygame.K_LEFT] and racket_rect.left > 0: # Движение влево
- racket_rect.x -=10
- if key[pygame.K_RIGHT] and racket_rect.right < width: # Движение вправо
- racket_rect.x +=10
- # Рендеринг (прорисовка)
- # screen.fill(CYAN) # Заливка заднего фона (больше не нужна)
- screen.blit(bg,bg_rect) # Отрисовываем картинку для заднего фона
- screen.blit(pic, pic_rect) # Отрисовываем смайлик
- screen.blit(racket, racket_rect) # Отрисовываем ракетку
- draw_text(screen, "Lives: " + str(lives), 30, width//2, 30, BLACK) # текст
- pic_rect.x += speedx
- pic_rect.y += speedy
- bg_rect.x -= 2 # Фон плывет влево
- if bg_rect.x <= -width: # Если дошли до середины
- bg_rect.x = 0 # Вовзращаем фон
- if pic_rect.top > height: # Если зашли за нижнюю границу экрана
- lives -= 1 # Уменьшаем количество жизней на 1
- loose.play() # Звук проигрыша
- pic_rect.y = 0 # Поднимаем смайлик вверх
- pic_rect.x = random.randint(0, width) # Случайное по горизонтали
- if lives == 0:
- run = False # Завершаем игровой цикл
- print('Game Over') # Выводим надпись на экран
- if pic_rect.right > width or pic_rect.left < 0: # Если прав или лев граница
- speedx = -speedx
- ping.play()
- if pic_rect.top < 0: # Если достигли верха экрана
- speedy = -speedy
- ping.play()
- # Если столкнулись с ракеткой и смайлик выше ракетки
- if pic_rect.colliderect(racket_rect) and pic_rect.bottom < racket_rect.bottom:
- speedy = -speedy
- ping.play()
- pygame.display.update()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement