Advertisement
Orleon

Full template arkanoid

Oct 25th, 2021
1,051
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.65 KB | None | 0 0
  1. import random
  2. import pygame
  3.  
  4. def draw_text(screen,text,size,x,y,color):         # Функция для текста на экране
  5.    font_name = pygame.font.match_font('arial')     # Выбираем тип шрифта для текста
  6.    font = pygame.font.Font(font_name, size)        # Шрифт выбранного типа и размера
  7.    text_image = font.render(text, True, color)     # Превращаем текст в картинку
  8.    text_rect = text_image.get_rect()               # Задаем рамку картинки с текстом
  9.    text_rect.center = (x,y)                        # Переносим текст в координаты
  10.    screen.blit(text_image, text_rect)              # Рисуем текст на экране
  11.  
  12. pygame.init()                           # Инициализируем модуль pygame
  13.  
  14. width = 1200                            # ширина игрового окна
  15. height = 700                            # высота игрового окна
  16. fps = 30                                # частота кадров в секунду
  17. game_name = "Arkanoid"                  # название нашей игры
  18.  
  19. # Цвета
  20. BLACK = "#000000"
  21. WHITE = "#FFFFFF"
  22. RED = "#FF0000"
  23. GREEN = "#008000"
  24. BLUE = "#0000FF"
  25. CYAN = "#00FFFF"
  26. YELLOW = "#FFFF00"
  27.  
  28. #Создаем игровой экран
  29. screen = pygame.display.set_mode((width, height))
  30. pygame.display.set_caption(game_name)   # Заголовок окна
  31.  
  32. icon = pygame.image.load('icon.png')    # Загружаем файл с иконкой
  33. pygame.display.set_icon(icon)           # Устанавливаем иконку в окно
  34.  
  35. timer = pygame.time.Clock()             # Создаем таймер pygame
  36. run = True
  37.  
  38. pic = pygame.image.load('smile.png')             # Загружаем спрайт
  39. pic = pygame.transform.scale(pic, (100,100))     # Указываем размеры
  40. pic_rect = pic.get_rect()                        # Получаем рамку спрайта
  41.  
  42. bg = pygame.image.load('bg.jpg')      # Загружаем задний фон
  43. bg_rect = bg.get_rect()               # Получаем рамку фона
  44.  
  45. speedx = 10
  46. speedy = 10
  47. lives = 3
  48.  
  49. racket = pygame.image.load('racket.png')  # Загружаем спрайт игрока
  50. racket_rect = racket.get_rect()           # Получаем рамку спрайта игрока
  51. racket_rect.x = width / 2 - racket.get_width()/2
  52. racket_rect.y = height - 50
  53.  
  54. ping = pygame.mixer.Sound('ping.mp3')    # Звук отскока
  55. loose = pygame.mixer.Sound('loose.mp3')  # Звук проигрыша
  56.  
  57. pygame.mixer.music.load('8bit.mp3')     # Загружаем музыку
  58. pygame.mixer.music.set_volume(0.1)      # Громкость 10%
  59. pygame.mixer.music.play(-1)             # Бесконечный повтор
  60.  
  61. while run:                              # Начинаем бесконечный цикл
  62.    timer.tick(fps)                      # Контроль времени (обновление игры)
  63.    for event in pygame.event.get():     # Обработка ввода (события)
  64.       if event.type == pygame.QUIT:    # Проверить закрытие окна
  65.           run = False                  # Завершаем игровой цикл
  66.    key = pygame.key.get_pressed()  # Считываем нажатия на клавиши
  67.    if key[pygame.K_LEFT] and racket_rect.left > 0:   # Движение влево
  68.        racket_rect.x -=10
  69.    if key[pygame.K_RIGHT] and racket_rect.right < width:  # Движение вправо
  70.        racket_rect.x +=10
  71.  
  72.    # Рендеринг (прорисовка)
  73.    # screen.fill(CYAN)                     # Заливка заднего фона (больше не нужна)
  74.    screen.blit(bg,bg_rect)               # Отрисовываем картинку для заднего фона
  75.  
  76.    screen.blit(pic, pic_rect)            # Отрисовываем смайлик
  77.    screen.blit(racket, racket_rect)      # Отрисовываем ракетку
  78.    draw_text(screen, "Lives: " + str(lives), 30, width//2, 30, BLACK) # текст
  79.  
  80.    pic_rect.x += speedx
  81.    pic_rect.y += speedy
  82.  
  83.    bg_rect.x -= 2                       # Фон плывет влево
  84.    if bg_rect.x <= -width:              # Если дошли до середины
  85.        bg_rect.x = 0                    # Вовзращаем фон
  86.  
  87.    if pic_rect.top > height:                   # Если зашли за нижнюю границу экрана
  88.        lives -= 1                              # Уменьшаем количество жизней на 1
  89.        loose.play()                            # Звук проигрыша
  90.        pic_rect.y = 0                          # Поднимаем смайлик вверх
  91.        pic_rect.x = random.randint(0, width)   # Случайное по горизонтали
  92.        if lives == 0:
  93.            run = False                                 # Завершаем игровой цикл
  94.            print('Game Over')                          # Выводим надпись на экран
  95.    if pic_rect.right > width or pic_rect.left < 0:     # Если прав или лев граница
  96.        speedx = -speedx
  97.        ping.play()
  98.    if pic_rect.top < 0:  # Если достигли верха экрана
  99.        speedy = -speedy
  100.        ping.play()
  101.  
  102.  
  103.  
  104.    # Если столкнулись с ракеткой         и      смайлик выше ракетки
  105.    if pic_rect.colliderect(racket_rect) and pic_rect.bottom < racket_rect.bottom:
  106.        speedy = -speedy
  107.        ping.play()
  108.    pygame.display.update()
  109.  
  110.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement