728x90
반응형
(문제)
여러가지 도형을 그리는 프로그램을 만드는거예요
도형 선택 메뉴를 함수로 작성하고, 각 도형을 그리는 함수를 작성해요 (원, 선, 사각형, 별, 하트 등 5가지 이상) 그리고 도형의 크기와 개수는 입력받고 위치는 램덤으로 그리는 프로그램

(방법)
import turtle as t
import math
import random
def circle(n): # 원 그리기
radius = n
circum = 2 * math.pi * radius # math package에 있는 pi 사용
area = math.pi * radius * radius
t.circle(radius)
def line(n): # 라인 그리기
t.forward(n)
def square(n): # 사각형
length = n
for i in range(4): # 4번 반복. 각형만큼 반복
t.forward(length) # 한변의 길이만큼 그리기
t.right(360 / 4) # 360을 4으로 나누어서 외각을 구함
def star(n): # 별 그리기
for i in range(5):
t.forward(n)
t.left(144)
def heart(n): # 하트 그리기
t.seth(0)
t.left(45)
t.forward(n)
t.circle(n/2, 180)
t.right(90)
t.circle(n/2,180)
t.forward(n)
menu = ['원', '선', '사각형', '별', '하트'] # 도형 종류를 리스트로 만듬
func = [circle, line, square, star, heart] # 도형 종류에 따른 함수를 리스트로 만듬(인덱스가 도형명과 같음)
def selectMenu(): # 메뉴 선택 함수
menu_str = '' # 리스트의 도형명을 문자열로 만듬.. input에 보여주기 위함
for i, v in enumerate(menu):
menu_str += str(i+1) + ". " + v
if i < len(menu)-1:
menu_str += ', '
no = input(f"메뉴를 선택하세요.({menu_str}, Q) : ") # 도형명 입력 받기
return no
t.setup(width = 600, height = 600) # 화면 크기 설정
t.speed(0) # 빠르게 설정
while True:
no = selectMenu()
if no.upper() =='Q' or no == 'ㅂ' or no == 'ㅃ': # Q면 종료
break
else:
no = int(no)
cnt = int(input('도형의 개수 : ')) # 도형 개수 입력 받기
if cnt > 10: # 10개 이상 안되도록 함
cnt = 10
d = int(input('도형의 크기(원은 반지름, 그 외는 한 변의 길이) : '))
for i in range(cnt): # 도형의 개수 만큼 반복
t.up() # 첫 위치에서 클릭한 위치까지 이동하기 위해 선이 그려지지 않도록 펜을 UP
x = random.randint(-300, 300) # x 위치. 임의로 지정
y = random.randint(-300, 300) # y 위치. 임의로 지정
t.goto(x, y) # 클릭한 위치로 이동
t.down() # 이동 후 라인을 그리기 위해 펜down
func[no-1](d) # func 리스트에 있는 함수를 인덱스로 실행. 크기를 인수로 줌
t.done()


728x90
반응형
'프로그램' 카테고리의 다른 글
| [파이썬] 문제 : 파일 불러오기 GUI (0) | 2022.12.05 |
|---|---|
| [파이썬] 문제 : 1~100까지 요소가 있는 리스트에서 무작위 뽑아 계산 (0) | 2022.12.05 |
| [파이썬] 문제 : 요일의 7의 배수에 해당하는 요일 및 7을 나눈 날짜의 요일 찾기 (0) | 2022.12.05 |
| [파이썬] 문제 : 3x3 A,B 행렬 입력 받고, 행렬 곱 계산(for문) (0) | 2022.12.05 |
| [파이썬] 문제 : 학생의 학생별 평균, 과목별 평균, 과목별 1등 학생 분석 (0) | 2022.12.05 |
댓글