Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame
- from brick import Brick
- from ball import Ball
- from panel import Panel
- WIDTH = 480
- HEIGHT = 320
- FPS = 30
- BLACK = (0, 0, 0)
- WHITE = (255, 255, 255)
- RED = (255, 0, 0)
- GREEN = (0, 255, 0)
- BLUE = (0, 0, 255)
- PURPLE = (100, 0, 100)
- def collide_brick(speed_y):
- for brick in bricks: #рассматриваем каждый кирпич из группы bricks
- if pygame.Rect.colliderect(ball.rect, brick.rect):
- brick.kill()
- return 10 #если мы столкнулись, теперь мяч летит вниз
- return speed_y #если не столкнулись, то летим как летели
- # Создаем игру и окно
- pygame.init()
- pygame.mixer.init()
- screen = pygame.display.set_mode((WIDTH, HEIGHT), pygame. RESIZABLE)
- pygame.display.set_caption("Break out")
- clock = pygame.time.Clock()
- #screen.fill(PURPLE)
- background_image = pygame.image.load('images/background.png')
- screen.blit(background_image, (0, 0))
- pygame.display.flip()
- #rect1 = pygame.Rect(0, 0, 20, 30)
- #pygame.draw.rect(screen, WHITE, rect1)
- #pygame.draw.circle(screen, WHITE, (x, y), 50)
- x = WIDTH//2 - 40
- y = HEIGHT - 10
- radius = 15
- ball = Ball(WIDTH//2, HEIGHT//2, radius, WHITE, 2, 10)
- screen.blit(ball.image, ball.rect)
- game_state = "start_menu"
- def draw_start_menu():
- screen.blit(background_image, (0, 0))
- font = pygame.font.SysFont('arial', 40)
- title = font.render('Break out', True, WHITE)
- font = pygame.font.SysFont('arial', 20)
- start_button = font.render('press SPACE to start', True, WHITE)
- screen.blit(title, (WIDTH//2 - title.get_width()//2, HEIGHT//2 -70))
- screen.blit(start_button, (WIDTH/2 - start_button.get_width()/2, HEIGHT/2 + start_button.get_height()/2))
- pygame.display.update()
- def draw_game_over():
- screen.blit(background_image, (0, 0))
- font = pygame.font.SysFont('arial', 40)
- text = font.render('GAME OVER', True, WHITE)
- screen.blit(text, (WIDTH//2, HEIGHT//2))
- font = pygame.font.SysFont('arial', 20)
- press = font.render('press SPACE to continue', True, WHITE)
- screen.blit(press, (WIDTH//2, HEIGHT//2 - 100))
- pygame.display.update()
- bricks = pygame.sprite.Group()
- for i in range(3):
- for j in range(10):
- tmp_brick = Brick(j * 48, i * 10, 'images/brick.png')
- bricks.add(tmp_brick)
- bricks.draw(screen)
- panel = Panel(WIDTH//2 - 40, HEIGHT - 10, 'images/panel.png')
- screen.blit(panel.image, panel.rect)
- #pygame.display.flip()
- running = True
- while running:
- # Держим цикл на правильной скорости
- clock.tick(FPS)
- # Ввод процесса (события)
- for event in pygame.event.get():
- # check for closing window
- if event.type == pygame.QUIT:
- running = False
- if event.type == pygame.KEYDOWN:
- if game_state == "start_menu" and event.key == pygame.K_SPACE:
- game_state = "game"
- if game_state == "game_over" and event.key == pygame.K_SPACE:
- game_state = "start_menu"
- if event.key == pygame.K_LEFT:
- x = x - 20
- elif event.key == pygame.K_RIGHT:
- x = x + 20
- if game_state == "game":
- if pygame.Rect.colliderect(ball.rect, panel.rect):
- #if (ball.rect.y == 8 or ball.rect.y == 9):
- # if (ball.speed.x <
- ball.speed_y = -10
- ball.speed_y = collide_brick(ball.speed_y)
- screen.blit(background_image, (0, 0))
- bricks.draw(screen)
- #pygame.draw.circle(screen, WHITE, (x, y), 50)
- panel.update(screen, x, y)
- ball.update(screen)
- if len(bricks) == 0:
- game_state = "game_over"
- if ball.y >= HEIGHT:
- game_state = "game_over"
- if game_state == "start_menu":
- draw_start_menu()
- if game_state == "game_over":
- draw_game_over()
- pygame.display.update()
- pygame.quit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement