Advertisement
Klokova_Sofi

pygame breakout main

Jun 4th, 2023
876
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.00 KB | None | 0 0
  1. import pygame
  2. from brick import Brick
  3. from ball import Ball
  4. from panel import Panel
  5.  
  6. WIDTH = 480
  7. HEIGHT = 320
  8. FPS = 30
  9.  
  10. BLACK = (0, 0, 0)
  11. WHITE = (255, 255, 255)
  12. RED = (255, 0, 0)
  13. GREEN = (0, 255, 0)
  14. BLUE = (0, 0, 255)
  15. PURPLE = (100, 0, 100)
  16.  
  17.  
  18. def collide_brick(speed_y):
  19.     for brick in bricks:         #рассматриваем каждый кирпич из группы bricks
  20.         if pygame.Rect.colliderect(ball.rect, brick.rect):
  21.             brick.kill()
  22.             return 10        #если мы столкнулись, теперь мяч летит вниз
  23.     return speed_y       #если не столкнулись, то летим как летели
  24.  
  25. # Создаем игру и окно
  26. pygame.init()
  27. pygame.mixer.init()
  28. screen = pygame.display.set_mode((WIDTH, HEIGHT), pygame. RESIZABLE)
  29. pygame.display.set_caption("Break out")
  30. clock = pygame.time.Clock()
  31.  
  32. #screen.fill(PURPLE)
  33.  
  34. background_image = pygame.image.load('images/background.png')
  35. screen.blit(background_image, (0, 0))
  36.  
  37. pygame.display.flip()
  38.  
  39. #rect1 = pygame.Rect(0, 0, 20, 30)
  40. #pygame.draw.rect(screen, WHITE, rect1)
  41. #pygame.draw.circle(screen, WHITE, (x, y), 50)
  42.  
  43. x = WIDTH//2 - 40
  44. y = HEIGHT - 10
  45. radius = 15
  46. ball = Ball(WIDTH//2, HEIGHT//2, radius, WHITE, 2, 10)
  47. screen.blit(ball.image, ball.rect)
  48.  
  49. game_state = "start_menu"
  50. def draw_start_menu():
  51.     screen.blit(background_image, (0, 0))
  52.     font = pygame.font.SysFont('arial', 40)
  53.     title = font.render('Break out', True, WHITE)
  54.     font = pygame.font.SysFont('arial', 20)
  55.     start_button = font.render('press SPACE to start', True, WHITE)
  56.     screen.blit(title, (WIDTH//2 - title.get_width()//2, HEIGHT//2 -70))
  57.     screen.blit(start_button, (WIDTH/2 - start_button.get_width()/2, HEIGHT/2 + start_button.get_height()/2))
  58.     pygame.display.update()
  59.  
  60. def draw_game_over():
  61.     screen.blit(background_image, (0, 0))
  62.     font = pygame.font.SysFont('arial', 40)
  63.     text = font.render('GAME OVER', True, WHITE)
  64.     screen.blit(text, (WIDTH//2, HEIGHT//2))
  65.     font = pygame.font.SysFont('arial', 20)
  66.     press = font.render('press SPACE to continue', True, WHITE)
  67.     screen.blit(press, (WIDTH//2, HEIGHT//2 - 100))
  68.     pygame.display.update()
  69.  
  70. bricks = pygame.sprite.Group()
  71. for i in range(3):
  72.     for j in range(10):
  73.         tmp_brick = Brick(j * 48, i * 10, 'images/brick.png')
  74.         bricks.add(tmp_brick)
  75. bricks.draw(screen)
  76.  
  77. panel = Panel(WIDTH//2 - 40, HEIGHT - 10, 'images/panel.png')
  78. screen.blit(panel.image, panel.rect)
  79.  
  80. #pygame.display.flip()
  81.  
  82. running = True
  83. while running:
  84.     # Держим цикл на правильной скорости
  85.     clock.tick(FPS)
  86.     # Ввод процесса (события)
  87.     for event in pygame.event.get():
  88.         # check for closing window
  89.         if event.type == pygame.QUIT:
  90.             running = False
  91.         if event.type == pygame.KEYDOWN:
  92.             if game_state == "start_menu" and event.key == pygame.K_SPACE:
  93.                 game_state = "game"
  94.             if game_state == "game_over" and event.key == pygame.K_SPACE:
  95.                 game_state = "start_menu"
  96.  
  97.             if event.key == pygame.K_LEFT:
  98.                 x = x - 20
  99.             elif event.key == pygame.K_RIGHT:
  100.                 x = x + 20
  101.     if game_state == "game":
  102.         if pygame.Rect.colliderect(ball.rect, panel.rect):
  103.             #if (ball.rect.y == 8 or ball.rect.y == 9):
  104.             #    if (ball.speed.x <
  105.             ball.speed_y = -10
  106.  
  107.         ball.speed_y = collide_brick(ball.speed_y)
  108.  
  109.  
  110.         screen.blit(background_image, (0, 0))
  111.         bricks.draw(screen)
  112.             #pygame.draw.circle(screen, WHITE, (x, y), 50)
  113.         panel.update(screen, x, y)
  114.         ball.update(screen)
  115.  
  116.         if len(bricks) == 0:
  117.             game_state = "game_over"
  118.  
  119.     if ball.y >= HEIGHT:
  120.         game_state = "game_over"
  121.  
  122.     if game_state == "start_menu":
  123.         draw_start_menu()
  124.     if game_state == "game_over":
  125.         draw_game_over()
  126.  
  127.     pygame.display.update()
  128. pygame.quit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement