[Pygame] 04. 도형 그리기

2023. 1. 31. 19:51·Minding's Programming/Pygame
728x90
반응형

이 글은 아래 영상을 참고했다.

https://www.youtube.com/watch?v=g8I10TmueXI&list=PLz2iXe7EqJOMp5LozvYa0qca9E4OBkevW&index=4 

이번 시간에는 선, 원, 타원, 다각형 등 여러 도형을 그리는 방법을 배웠다.


선 그리기

pygame.draw.line(화면, 색, 시작 위치, 끝 위치, 선 굵기)
pygame.init()

background = pygame.display.set_mode((480, 360))
pygame.display.set_caption('PYGAME_2')

play = True
while play:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            play = False
            
    background.fill((255,255,255)) # 배경 흰색
    
    # 선 그리기
    # pygame.draw.line(화면, 색, 시작 위치, 끝 위치, 선 굵기)
    pygame.draw.line(background, (0,0,0), (240,0), (240,360))
    pygame.draw.line(background, (0,0,0), (0,180), (480,180), 5)
    pygame.draw.line(background, (0,0,0), (0,360), (480,0), 3)
    
    pygame.display.update()
    
pygame.quit()
  • 선 굵기 defalut = 1

코드 실행 결과


 

for 문으로 선 여러개 그리기

pygame.init()

background = pygame.display.set_mode((480, 360))
pygame.display.set_caption('PYGAME_3')

play = True
while play:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            play = False
            
    background.fill((255,255,255)) # 배경 흰색
    
    # for문을 통해 선 여러개 그리기
    for i in range(0,480,30):
        pygame.draw.line(background, (0,0,0), (i,0), (i,360))
    for i in range(0,360,30):
        pygame.draw.line(background, (0,0,0), (0,i), (480,i))
    
    pygame.display.update()
    
pygame.quit()
  • for문을 활용해 바둑판 배열 등의 선을 그릴 수 있다.
  • 한 칸씩 이동하는 게임 / 바둑, 체스 등의 보드게임에 유용하게 활용가능하다.

코드 실행 결과

바둑판 완성


 

원 그리기

pygame.draw.circle(화면, 색, 중심 좌표, 반지름, 선 굵기)
pygame.init()

background = pygame.display.set_mode((480, 360))
pygame.display.set_caption('PYGAME_2')

# 중심 좌표
x = background.get_size()[0]//2 # 240
y = background.get_size()[1]//2 # 180

play = True
while play:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            play = False
            
    background.fill((255,255,255))
    
    # 원
    # pygame.draw.circle(화면, 색, 중심 좌표, 반지름, 선 굵기)
    # pygame.draw.circle(background, (255,0,0), (240,180), 50)
    pygame.draw.circle(background, (255,0,0), (240,180), 50, 5)
            
    # 중심점 기준으로 선 그려주기
    pygame.draw.line(background, (0,0,0), (x,0), (x,y*2))
    pygame.draw.line(background, (0,0,0), (0,y), (x*2,y))
    pygame.display.update()
    
pygame.quit()
  • 중심점을 미리 설정해두었다. (x, y)
  • 중심 좌표를 미리 설정하면 화면 크기가 바뀌어도 중심점 똑같이 유지할 수 있다.
  • 선 굵기 defalut : 원 전체 채울 정도

코드 실행 결과


 

사각형 그리기

pygame.draw.rect(화면, 색, 위치와 크기, 선 굵기)
pygame.init()

background = pygame.display.set_mode((480, 360))
pygame.display.set_caption('PYGAME_2')

# 중심 좌표
x = background.get_size()[0]//2 # 240
y = background.get_size()[1]//2 # 180

play = True
while play:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            play = False
            
    background.fill((255,255,255))
    
    # 다각형
    # pygame.draw.rect(화면, 색, 위치와 크기, 선 굵기)
    # pygame.draw.rect(background, (0,255,0), (240,180,100,50))
    pygame.draw.rect(background, (0,255,0), (240,180,100,50), 5)
            
    # 중심점 기준으로 선 그려주기
    pygame.draw.line(background, (0,0,0), (x,0), (x,y*2))
    pygame.draw.line(background, (0,0,0), (0,y), (x*2,y))
    pygame.display.update()
    
pygame.quit()
  • 위치와 크기를 한꺼번에 설정
    • ex) (240, 180, 100, 50)
    • (240, 180) : 시작 점의 좌표 (왼쪽 상단 가장자리 점)
    • 100 : 가로의 길이
    • 50 : 세로의 길이

코드 실행 결과


 

타원 그리기

pygame.draw.ellipse(화면, 색, 위치와 크기, 선 굵기)

 

pygame.init()

background = pygame.display.set_mode((480, 360))
pygame.display.set_caption('PYGAME_2')

# 중심 좌표
x = background.get_size()[0]//2 # 240
y = background.get_size()[1]//2 # 180

play = True
while play:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            play = False
            
    background.fill((255,255,255))
    
    # 타원
    # pygame.draw.ellipse(화면, 색, 위치와 크기, 선 굵기)
    # pygame.draw.ellipse(background, (0,0,255), (240,180,100,50))
    pygame.draw.rect(background, (0,255,0), (240,180,100,50), 5)
    pygame.draw.ellipse(background, (0,0,255), (240,180,100,50), 5) # 여러 도형을 같이 그릴 수도 있다.
            
    # 중심점 기준으로 선 그려주기
    pygame.draw.line(background, (0,0,0), (x,0), (x,y*2))
    pygame.draw.line(background, (0,0,0), (0,y), (x*2,y))
    pygame.display.update()
    
pygame.quit()
  • 파라미터 설정은 사각형과 똑같다.

코드 실행 결과

타원만 그렸을 때

 

 

타원과 사각형을 한꺼번에 그렸을 때

  • 여러 개의 도형을 한번에 그릴 수 있다.

 

다각형 그리기

pygame.draw.polygon(화면, 색, 점들의 위치, 선 굵기)
pygame.init()

background = pygame.display.set_mode((480, 360))
pygame.display.set_caption('PYGAME_2')

# 중심 좌표
x = background.get_size()[0]//2 # 240
y = background.get_size()[1]//2 # 180

play = True
while play:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            play = False
            
    background.fill((255,255,255))
    
    # 다각형
    # pygame.draw.polygon(화면, 색, 점들의 위치, 선 굵기)
    pygame.draw.polygon(background, (0,0,255), [[100,100], [0,200],[200,200]]) # 삼각형
    pygame.draw.polygon(background, (255,255,0), ((146,0),(291,106),(236,277),(56,277),(0,106)), 5) # 오각형
    
            
    # 중심점 기준으로 선 그려주기
    pygame.draw.line(background, (0,0,0), (x,0), (x,y*2))
    pygame.draw.line(background, (0,0,0), (0,y), (x*2,y))
    pygame.display.update()
    
pygame.quit()
  • 원하는 형태의 다각형을 만들 수 있음
  • 좌표는 tuple, list등 괄호의 형태로 넣어주면 됨

코드 실행 결과

728x90

'Minding's Programming > Pygame' 카테고리의 다른 글

[Pygame] 06. 키보드와 마우스로 이미지 움직이기  (0) 2023.02.04
[Pygame] 05. 이미지 사용하기  (0) 2023.02.01
[Pygame] 03. 마우스로 조종하기  (0) 2023.01.30
[Pygame] 02. 키보드로 조종하기  (0) 2023.01.27
[Pygame] 01. Pygame 설치 및 설치 확인하기  (0) 2023.01.25
'Minding's Programming/Pygame' 카테고리의 다른 글
  • [Pygame] 06. 키보드와 마우스로 이미지 움직이기
  • [Pygame] 05. 이미지 사용하기
  • [Pygame] 03. 마우스로 조종하기
  • [Pygame] 02. 키보드로 조종하기
Minding
Minding
  • Minding
    Today's Minding
    Minding
  • 전체
    오늘
    어제
    • 울고넘는 딥러닝 (278)
      • Minding's Baseball (57)
        • MLB Statcast (29)
        • 머신러닝으로 홈런왕 예측하기 (3)
        • 야구칼럼 (12)
        • 야구 규칙, 용어 (1)
        • 2022-23 질롱 코리아 (8)
        • 류현진 등판경기 (4)
      • Minding's Programming (185)
        • 프로그래머스 코딩테스트 (21)
        • Knowledge (44)
        • Numpy & Pandas (6)
        • Excel (3)
        • Git (1)
        • Pygame (11)
        • CV (3)
        • Tensorflow tutorial (4)
        • Kaggle and Dacon (4)
        • 에러 코드 (8)
        • FastAPI (8)
        • Airflow (29)
        • Crawling (6)
        • Django (14)
        • AWS (18)
        • Spark (5)
      • Minding's Reading (30)
        • 머신러닝 딥러닝에 필요한 기초 수학 with 파이.. (2)
        • 칼만필터는 어렵지 않아 (11)
        • 밑바닥부터 시작하는 딥러닝 (6)
        • 메이저리그 야구 통계학 2e (8)
        • 논문읽기 (2)
        • 빅데이터를 지탱하는 기술 (1)
      • Minding's Life (5)
        • 주식 (4)
        • 각종 소식 (1)
  • 블로그 메뉴

    • 홈
    • Baseball
    • Programming
    • Reading
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    파이썬게임개발
    Python
    파이게임
    메이저리그
    데이터 엔지니어
    칼만필터는어렵지않아
    django python
    데이터분석
    딥러닝
    FastAPI
    머신러닝
    mlb stats api
    넘파이
    칼만필터는어렵지않아파이썬
    KBO
    에어플로우
    Airflow
    게임개발
    MLB
    django
    KalmanFilter
    프로그래머스
    AWS
    pygame
    칼만필터
    질롱코리아
    파이썬
    코딩테스트
    야구
    칼만필터는어렵지않아python
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Minding
[Pygame] 04. 도형 그리기
상단으로

티스토리툴바