import pygame
pygame.init()
WIDTH = 900
HEIGHT = 1100
size = (WIDTH, HEIGHT)
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Breakout")
FPS = 60
WHITE = (257, 255, 255)
GREY = (213, 210, 212)
BLACK = (0, 0, 0)
BLUE = (0, 97, 148)
RED = (163, 8, 0)
ORANGE = (184, 119, 0)
GREEN = (0, 127, 33)
YELLOW = (198, 199, 37)
balls = 1
velocity = 3.5
paddle_width = 54
paddle_height = 20
all_sprites_list = pygame.sprite.Group()
class Brick(pygame.sprite.Sprite):
def __init__(self, color, width, height):
super().__init__()
self.image = pygame.Surface([width, height])
pygame.draw.rect(self.image, color, [0, 0, width, height])
self.rect = self.image.get_rect()
class Paddle(pygame.sprite.Sprite):
def __init__(self, color, width, height):
super().__init__()
self.image = pygame.Surface([width, height])
pygame.draw.rect(self.image, color, [0, 0, width, height])
self.rect = self.image.get_rect()
def moveRight(self, pixels):
self.rect.x += pixels
if self.rect.x > WIDTH - wall_width - paddle_width:
self.rect.x = WIDTH - wall_width - paddle_width
def moveLeft(self, pixels):
self.rect.x -= pixels
if self.rect.x < wall_width:
self.rect.x = wall_width
class Ball(pygame.sprite.Sprite):
def __init__(self, color, width, height):
super().__init__()
self.image = pygame.Surface([width, height])
pygame.draw.rect(self.image, color, [0, 0, width, height])
self.rect = self.image.get_rect()
self.velocity = [velocity, velocity]
def update(self):
self.rect.x += self.velocity[0]
self.rect.y += self.velocity[1]
def bounce(self):
self.velocity[0] = self.velocity[0]
self.velocity[1] = -self.velocity[1]
paddle = Paddle(BLUE, paddle_width, paddle_height)
paddle.rect.x = WIDTH // 2 - paddle_width // 2
paddle.rect.y = HEIGHT - 65
ball = Ball(RED, 10, 10)
ball.rect.x = WIDTH // 2 - 5
ball.rect.y = HEIGHT // 2 - 5
all_bricks = pygame.sprite.Group()
brick_width = 55
brick_height = 16
x_gap = 7
y_gap = 5
wall_width = 16
def bricks():
for j in range(8):
for i in range(14):
if j < 2:
if i == 0:
brick = Brick(RED, brick_width, brick_height)
brick.rect.x = wall_width
brick.rect.y = 215 + j * (y_gap + brick_height)
all_sprites_list.add(brick)
all_bricks.add(brick)
else:
brick = Brick(RED, brick_width, brick_height)
brick.rect.x = wall_width + brick_width + x_gap + (i - 1) * (brick_width + x_gap)
brick.rect.y = 215 + j * (y_gap + brick_height)
all_sprites_list.add(brick)
all_bricks.add(brick)
if 1 < j < 4:
if i == 0:
brick = Brick(ORANGE, brick_width, brick_height)
brick.rect.x = wall_width
brick.rect.y = 215 + j * (y_gap + brick_height)
all_sprites_list.add(brick)
all_bricks.add(brick)
else:
brick = Brick(ORANGE, brick_width, brick_height)
brick.rect.x = wall_width + brick_width + x_gap + (i - 1) * (brick_width + x_gap)
brick.rect.y = 215 + j * (y_gap + brick_height)
all_sprites_list.add(brick)
all_bricks.add(brick)
if 3 < j < 6:
if i == 0:
brick = Brick(GREEN, brick_width, brick_height)
brick.rect.x = wall_width
brick.rect.y = 215 + j * (y_gap + brick_height)
all_sprites_list.add(brick)
all_bricks.add(brick)
else:
brick = Brick(GREEN, brick_width, brick_height)
brick.rect.x = wall_width + brick_width + x_gap + (i - 1) * (brick_width + x_gap)
brick.rect.y = 215 + j * (y_gap + brick_height)
all_sprites_list.add(brick)
all_bricks.add(brick)
if 5 < j < 8:
if i == 0:
brick = Brick(YELLOW, brick_width, brick_height)
brick.rect.x = wall_width
brick.rect.y = 215 + j * (y_gap + brick_height)
all_sprites_list.add(brick)
all_bricks.add(brick)
else:
brick = Brick(YELLOW, brick_width, brick_height)
brick.rect.x = wall_width + brick_width + x_gap + (i - 1) * (brick_width + x_gap)
brick.rect.y = 215 + j * (y_gap + brick_height)
all_sprites_list.add(brick)
all_bricks.add(brick)
brick_wall = bricks()
all_sprites_list.add(paddle)
all_sprites_list.add(ball)
def main(score, balls):
step = 0
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
paddle.moveLeft(10)
if keys[pygame.K_RIGHT]:
paddle.moveRight(10)
all_sprites_list.update()
if ball.rect.y < 40:
ball.velocity[1] = -ball.velocity[1]
if ball.rect.x >= WIDTH - wall_width - 10:
ball.velocity[0] = -ball.velocity[0]
if ball.rect.x <= wall_width:
ball.velocity[0] = -ball.velocity[0]
if ball.rect.y > HEIGHT:
ball.rect.x = WIDTH // 2 - 5
ball.rect.y = HEIGHT // 2 - 5
ball.velocity[1] = ball.velocity[1]
balls += 1
if balls == 4:
run = False
if pygame.sprite.collide_mask(ball, paddle):
ball.rect.x += ball.velocity[0]
ball.rect.y -= ball.velocity[1]
ball.bounce()
brick_collision_list = pygame.sprite.spritecollide(ball, all_bricks, False)
for brick in brick_collision_list:
ball.bounce()
if len(brick_collision_list) > 0:
step += 1
for i in range(0, 448, 28):
if step == i:
ball.velocity[0] += 1
ball.velocity[1] += 1
if 380.5 > brick.rect.y > 338.5:
score += 1
brick.kill()
elif 338.5 > brick.rect.y > 294:
score += 3
brick.kill()
elif 294 > brick.rect.y > 254.5:
score += 5
brick.kill()
else:
score += 7
brick.kill()
if len(all_bricks) == 0:
run = False
screen.fill(BLACK)
pygame.draw.line(screen, GREY, [0, 19], [WIDTH, 19], 40)
pygame.draw.line(screen, GREY, [(wall_width / 2) - 1, 0], [(wall_width / 2) - 1, HEIGHT], wall_width)
pygame.draw.line(screen, GREY, [(WIDTH - wall_width / 2) - 1, 0], [(WIDTH - wall_width / 2) - 1, HEIGHT], wall_width)
pygame.draw.line(screen, BLUE, [(wall_width / 2) - 1, HEIGHT - 65 + paddle_height / 2 - 54 / 2], [(wall_width / 2) - 1, HEIGHT - 65 + paddle_height / 2 - 54 / 2 + 54], wall_width)
pygame.draw.line(screen, BLUE, [(WIDTH - wall_width / 2) - 1, HEIGHT - 65 + paddle_height / 2 - 54 / 2], [(WIDTH - wall_width / 2) - 1, HEIGHT - 65 + paddle_height / 2 - 54 / 2 + 54], wall_width)
pygame.draw.line(screen, RED, [(wall_width / 2) - 1, 212.5], [(wall_width / 2) - 1, 212.5 + 2 * brick_height + 2 * y_gap], wall_width)
pygame.draw.line(screen, RED, [(WIDTH - wall_width / 2) - 1, 212.5], [(WIDTH - wall_width / 2) - 1, 212.5 + 2 * brick_height + 2 * y_gap], wall_width)
pygame.draw.line(screen, ORANGE, [(wall_width / 2) - 1, 212.5 + 2 * brick_height + 2 * y_gap], [(wall_width / 2) - 1, 212.5 + 4 * brick_height + 4 * y_gap], wall_width)
pygame.draw.line(screen, ORANGE, [(WIDTH - wall_width / 2) - 1, 212.5 + 2 * brick_height + 2 * y_gap], [(WIDTH - wall_width / 2) - 1, 212.5 + 4 * brick_height + 4 * y_gap], wall_width)
pygame.draw.line(screen, GREEN, [(wall_width / 2) - 1, 212.5 + 4 * brick_height + 4 * y_gap], [(wall_width / 2) - 1, 212.5 + 6 * brick_height + 6 * y_gap], wall_width)
pygame.draw.line(screen, GREEN, [(WIDTH - wall_width / 2) - 1, 212.5 + 4 * brick_height + 4 * y_gap], [(WIDTH - wall_width / 2) - 1, 212.5 + 6 * brick_height + 6 * y_gap], wall_width)
pygame.draw.line(screen, YELLOW, [(wall_width / 2) - 1, 212.5 + 6 * brick_height + 6 * y_gap], [(wall_width / 2) - 1, 212.5 + 8 * brick_height + 8 * y_gap], wall_width)
pygame.draw.line(screen, YELLOW, [(WIDTH - wall_width / 2) - 1, 212.5 + 6 * brick_height + 6 * y_gap], [(WIDTH - wall_width / 2) - 1, 212.5 + 8 * brick_height + 8 * y_gap], wall_width)
all_sprites_list.draw(screen)
pygame.display.update()
pygame.quit()
파이게임 사용해서 만드는건데
process finished with exit code 0 나옴 근데 왜 안되냐
내 컴퓨터만 안되는건가 그냥 들갔다가 튕겨버림 제발 ㅜ
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.