이번 시간에는 2가지 항목을 추가 해보았습니다.
- 충돌 감지 기능
- 충돌시 벽돌 사라지는 기능
import pygame, sys # 파이썬 게임 묘듈 import
from pygame.locals import *
# 설정
pygame.init() # 파이 게임 초기화
screen = pygame.display.set_mode((480, 320)) #화면 크기 설정
pygame.display.set_caption('벽돌깨기') # 타이틀 제목
clock = pygame.time.Clock()
pygame.key.set_repeat(1, 1)
# 색깔 변수
BLACK = ( 0, 0, 0)
WHITE = (255,255,255)
RED = (255, 0, 0)
GREEN = ( 0,255, 0)
BLUE = ( 0, 0,255)
# 공 변수
x = int(480 / 2)
y = 320 - 30
dx = 10
dy = 10
# 패달 변수
paddleHeight = 10
paddleWidth = 75
paddleX = (480-paddleWidth) / 2
paddle = pygame.Rect(paddleX,320-paddleHeight-10,paddleWidth,paddleHeight)
# 벽돌
bricks = []
for c in range(6):
for r in range(5):
brick = pygame.Rect(c*(60+10)+35 ,r*(16+5)+24 ,60 ,16 )
bricks.append(brick)
# draw 함수 정의
def drawBall():
pygame.draw.circle(screen,(0, 221, 149),(int(x),int(y)),7)
def drawPaddle():
pygame.draw.rect(screen,(0,221,149),paddle)
def draw():
screen.fill(BLACK)
drawBall()
def drawbrick():
for brick in bricks:
pygame.draw.rect(screen,(0,221,149),brick)
while True:
# 이벤트 처리
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
#키 이벤트 처리
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
paddle.left -= 10
paddleX -= 10
elif event.key == pygame.K_RIGHT:
paddle.right += 10
paddleX += 10
# 그리기 함수 호출
draw()
drawPaddle()
drawbrick()
# 공과 벽돌 충돌 검사
if x + dx > 480-7 or x + dx < 7:
dx = -dx
if y + dy < 7:
dy = -dy
elif(y + dy > 300): #실패시 종료
if x+10 > paddleX and x < paddleX + paddleWidth: #패달에 닿으면 튕기기
dy = -dy
else:
sys.exit()
for b in bricks:
if x > b.x and x < b.x+b.width and y > b.y and y < b.y+b.height:
dy = -dy
bricks.remove(b)
# 공 이동
x += dx
y += dy
# 모듈 갱신
pygame.display.update()
#프레임 변경
clock.tick(30)
결과:
'Python' 카테고리의 다른 글
[Python] Sys modules (0) | 2020.06.25 |
---|---|
[Python] funciton of arguments, parameter (0) | 2020.06.24 |
[Python] pygame 으로 벽돌깨기 만들기 part-6 (0) | 2020.05.24 |
[Python] pygame 으로 벽돌깨기 만들기 part-5 (0) | 2020.05.24 |
[Python] pygame 으로 벽돌깨기 만들기 part-4 (0) | 2020.05.24 |
댓글