# data[].attributes.body
거북이 모양 그리

import turtle

def draw_turtle():

# 거북이 모양 설정

turtle.shape("turtle")

turtle.speed(5)

# 몸통 그리기

turtle.penup()

turtle.goto(0, -150)

turtle.pendown()

turtle.begin_fill()

turtle.color("green")

turtle.circle(150)

turtle.end_fill()

# 머리 그리기

turtle.penup()

turtle.goto(0, 120)

turtle.pendown()

turtle.begin_fill()

turtle.circle(40)

turtle.end_fill()

# 다리 그리기

legs_positions = [(-100, -80), (100, -80), (-100, -220), (100, -220)]

for pos in legs_positions:

turtle.penup()

turtle.goto(pos)

turtle.pendown()

turtle.begin_fill()

turtle.circle(40)

turtle.end_fill()

# 꼬리 그리기

turtle.penup()

turtle.goto(0, -310)

turtle.setheading(270)

turtle.pendown()

turtle.begin_fill()

turtle.circle(30, steps=3) # 삼각형으로 꼬리

turtle.end_fill()

# 거북이 얼굴 장식 (눈)

turtle.penup()

turtle.goto(-20, 150)

turtle.pendown()

turtle.begin_fill()

turtle.color("white")

turtle.circle(10)

turtle.end_fill()

turtle.penup()

turtle.goto(20, 150)

turtle.pendown()

turtle.begin_fill()

turtle.color("white")

turtle.circle(10)

turtle.end_fill()

turtle.hideturtle()

turtle.done()

# 실행

draw_turtle()

# data[].attributes.body
스투시 8볼 마크

#원 그리기

def dC(color,radius,x,y):

t.penup()

t.goto(x,y)

t.pendown()

t.color(color)

t.begin_fill()

t.circle(radius)

t.end_fill()

#터틀열기

import turtle

t=turtle.Turtle()

t.pensize(4)

dC('black',100,-200,20)#가장 큰 원

dC('white',30,-250,130)#안의 하얀색작은원

dC('black',11,-260,160)#8윗부분

dC('black',12,-240,142)#8아랫부분

dC('white',5,-260,165)#8윗부분 안

dC('white',5,-240,147)#8아랫부분 안

처음에 간단하지만 의류를 상징할 수 있는 심볼이 뭐가 있을까 생각하다가 유명한 브랜드인 스투시의 8볼 로고를 그려보았다.

그리면서 곡선으로만 이루어져 있다는것을 알 수 있었고, 디자인 또는 로고에서의 곡선은 원이나 타원과 비슷한 느낌을 주어서 움직이는 느낌과 자연스러운 느낌을 준다는것을 알 수 있었다. 이 로고에서도 공이 직접 굴러가는 이미지가 떠올랐다. 이번 활동을 통해서 브랜드의 상징성을 나타낼 때 색 뿐만 아니라 선과 점 같은 사소한 기본요소들도 주는 느낌과 생동감 등에 차이가 있다는것을 알게되었다. 다음에는 색이 주는 효과도 조사해서 직접 로고를 만들어 보고싶다.

# data[].attributes.body
import turtle

t=turtle.Turtle()

t.speed(10)

t.hideturtle()

t.screen.bgcolor('black')

t.home()

t.color('yellow')

t.shape('circle')

t.forward(150)

t.backward(300)

t.forward(150)

t.left(90)

t.forward(150)

t.left(180)

t.forward(300)

t.left(180)

t.forward(150)

t.left(45)

t.forward(150)

t.left(180)

t.forward(300)

t.left(180)

t.forward(150)

t.left(90)

t.forward(150)

t.left(180)

t.forward(300)

t.left(180)

t.forward(150)

t.up()

t.color('skyblue')

t.forward(300)

t.down()

t.forward(100)

t.backward(200)

t.forward(100)

t.left(90)

t.forward(100)

t.left(180)

t.forward(200)

t.left(180)

t.forward(100)

t.left(45)

t.forward(100)

t.left(180)

t.forward(200)

t.left(180)

t.forward(100)

t.left(90)

t.forward(100)

t.left(180)

t.forward(200)

t.left(180)

t.forward(100)

t.up()

t.color('purple')

t.forward(400)

t.down()

t.forward(100)

t.backward(200)

t.forward(100)

t.left(90)

t.forward(100)

t.left(180)

t.forward(200)

t.left(180)

t.forward(100)

t.left(45)

t.forward(100)

t.left(180)

t.forward(200)

t.left(180)

t.forward(100)

t.left(90)

t.forward(100)

t.left(180)

t.forward(200)

t.left(180)

t.forward(100)

t.left(45)

t.up()

t.color('pink')

t.forward(400)

t.down()

t.forward(100)

t.backward(200)

t.forward(100)

t.left(90)

t.forward(100)

t.left(180)

t.forward(200)

t.left(180)

t.forward(100)

t.left(45)

t.forward(100)

t.left(180)

t.forward(200)

t.left(180)

t.forward(100)

t.left(90)

t.forward(100)

t.left(180)

t.forward(200)

t.left(180)

t.forward(100)

t.left(45)

t.up()

t.color('white')

t.forward(400)

t.down()

t.forward(100)

t.backward(200)

t.forward(100)

t.left(90)

t.forward(100)

t.left(180)

t.forward(200)

t.left(180)

t.forward(100)

t.left(45)

t.forward(100)

t.left(180)

t.forward(200)

t.left(180)

t.forward(100)

t.left(90)

t.forward(100)

t.left(180)

t.forward(200)

t.left(180)

t.forward(100)

내 관심 분야가 시각 디자인이여서 하나의 이미지를 만들어보고 싶어서 어둠 속에서 빛나는 여러 색의 빛들, 폭죽을 주제로 간단한 선으로 표현했다. 터틀의 여러색들을 적용해서 결과물에서 보여지는 여러색의 빛을 나타내게 했고 직선으로 빛이 퍼지는 듯한 느낌을 주었다. 그리고 코드를 작성할 때 각도와 거리를 잘 조정해서 빛의 위치와 거리를 설정했다.

원래 처음에 폭죽이 한번에 터지듯이 만들고 싶었는데 동시에 각 색의 터틀이 움직이지는 못해서 아쉬웠다. 그리고 다음에 시간이 있을 때 할 때에는 디테일을 살려서 코드를 더 많이 사용해서 빛들을 더 구체적인 이미지로 만들고 싶어졌다. 이 활동을 하면서 프로그래밍을 통해서 하나의 미술, 작품을 만들 수 있다는 것을 알게됐다. 앞으로 미래에 컴퓨터, 프로그래밍을 통해서 다른 작품들을 접하고 만들어볼 수 있을 것 같다고 가장 크게 느꼈고 만들어보고 싶어졌다.

# data[].attributes.body
import turtle

t=turtle.Pen()

t.screen.bgcolor('skyblue')

t.color('green')

for I in range(2):

t.forward(300)

t.left(90)

t.forward(250)

t.left(90)

t.left(180)

t.color('black')

t.penup()

t.forward(-280)

t.right(90)

t.forward(100)

t.left(90)

t.pendown()

t.circle(45)

t.left(90)

t.penup()

t.forward(90)

t.pendown()

t.forward(35)

t.left(45)

t.forward(78)

t.left(180)

t.forward(78)

t.left(10)

t.forward(95)

t.left(180)

t.forward(95)

t.right(55)

t.forward(50)

t.left(30)

t.forward(50)

t.left(180)

t.forward(50)

t.left(110)

t.forward(50)

t.penup()

t.home()

t.right(90)

t.penup()

t.forward(90)

t.right(90)

t.pendown()

for k in range(0, 2 ,1):

t.circle(30)

t.left(90)

t.penup()

t.forward(60)

t.pendown()

t.forward(35)

t.left(45)

t.forward(50)

t.left(180)

t.forward(50)

t.left(10)

t.forward(80)

t.left(180)

t.forward(80)

t.right(55)

t.forward(40)

t.left(30)

t.forward(40)

t.left(180)

t.forward(40)

t.left(110)

t.forward(40)

t.right(120)

t.penup()

t.forward(300)

t.pendown()

t.left(60)

이 그림은 내가 특수교육 교사가 되어서 아이들을 가르치는 일을 하고 있는 모습을 그린 것이다 가장 큰 사람이 나고 그 뒤는 칠판을 표현했으며, 옆쪽에는 학생들이다.

사람을 표현할 때 for 반복문을 사용해서 코딩이 길어지는 것을 방지하였으며, 적절한 색깔을 사용해서 좋은 결과를 만든 것 같다.

사람을 표현 할 때 기울기를 계속 생각해야 한다는 점에서 까다로웠으며, 시간이 되었다면 칠판에 그림이나 글자를 적고 사람들을 꾸며주고 싶었던 아쉬움이 남았다. 그래서 캡처한 결과물을 보니 열심히 한 것에 비해 엄청 멋있어 보이진 않는 점이 아쉬웠다.

이번 활동을 통해서 내가 미래에 어떤 진로를 가지고 어떠한 모습을 가질 수 있을지 상상할 수 있는 계기가 되었고, 특수교육과에 들어갈 수 있도록 열심히 노력해야겠다는 마음을 가지게 되었다.

# data[].attributes.body
#터틀열

import turtle

t=turtle.Pen()

t.forward(0)

t.right(50)

t.forward(100)

t.right(90)

t.forward(300)

t.right(90)

t.forward(250)

t.right(90)

t.forward(200)

t.right(90)

t.forward(100)

t.left(100)

t.forward(100)

t.right(100)

t.forward(170)

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

일부러 하트 모양을 대칭이 안 맞게 그렸다, 왜냐하면 내가 희망하는 학과는 심리학과와 사회 복지 학과인데 이 두 학과는 공통적으로 사람을 도와줄 수 있다는 공통점을 가지기에 힘든 사람의 마음을 도와주겠다 하는 의미로 대칭이 안 맞게 그렸다.

# data[].attributes.body
import turtle

# 화면 설정

screen = turtle.Screen()

screen.setup(width=800, height=600)

screen.bgcolor("white")

# 터틀 객체 생성

t = turtle.Turtle()

t.speed(10) # 속도 설정

t.width(3) # 선 굵기 설정

# 타원형을 그리는 함수 (미토콘드리아용)

def draw_ellipse(x, y, a, b):

t.penup()

t.goto(x, y - b) # 타원형의 중심을 고려한 위치

t.pendown()

t.setheading(0) # 수평으로 시작

t.color("yellow") # 미토콘드리아 색상

t.begin_fill()

for _ in range(2): # 타원 그리기

t.circle(a, 90) # 가로 반지름 a

t.circle(b, 90) # 세로 반지름 b

t.end_fill()

# 세포 그리기 함수

def draw_cell():

# 세포막 그리기 (큰 원)

t.penup()

t.goto(0, -150) # 원의 하단으로 이동

t.pendown()

t.color("lightblue")

t.begin_fill()

t.circle(150) # 반지름 150

t.end_fill()

# 세포핵 그리기 (작은 원)

t.penup()

t.goto(0, -50) # 핵 위치로 이동

t.pendown()

t.color("red") # 핵의 색상

t.begin_fill()

t.circle(50) # 반지름 50

t.end_fill()

# 세포질에 있는 미토콘드리아 (타원형)

draw_ellipse(60, 30, 30, 20) # 첫 번째 미토콘드리아

draw_ellipse(-80, -40, 30, 20) # 두 번째 미토콘드리아

# 세포질에 리보솜 그리기 (작은 점들)

t.penup()

t.goto(100, -50) # 리보솜 위치

t.pendown()

t.dot(10, "black") # 리보솜

t.penup()

t.goto(-120, 60) # 또 다른 리보솜

t.pendown()

t.dot(10, "black")

t.penup()

t.goto(50, 80) # 또 다른 리보솜

t.pendown()

t.dot(10, "black")

t.penup()

t.goto(-40, -100) # 또 다른 리보솜

t.pendown()

t.dot(10, "black")

t.penup()

t.goto(-90, -20) # 또 다른 리보솜

t.pendown()

t.dot(10, "black")

t.penup()

t.goto(80, 40) # 또 다른 리보솜

t.pendown()

t.dot(10, "black")

t.penup()

t.goto(-60, 50) # 또 다른 리보솜

t.pendown()

t.dot(10, "black")

t.penup()

t.goto(20, 60) # 또 다른 리보솜

t.pendown()

t.dot(10, "black")

t.penup()

t.goto(-110, -80) # 또 다른 리보솜

t.pendown()

t.dot(10, "black")

# 세포 그리기 실행

draw_cell()

# 프로그램 종료 전에 창이 닫히지 않게 유지

turtle.done()

프로그래밍을 하면서 여러 가지를 배운 것 같습니다. 처음에는 세포를 그리는 작업이 어려웠고, 각 요소들을 어떻게 구현할지 고민했습니다. 미토콘드리아는 타원형, 핵은 빨간색, 리보솜은 검은색으로 색을 지정하고, 요구사항에 맞게 각 부분을 그리기 위해 여러 차례 수정했습니다.

미토콘드리아를 세포 안쪽에 배치하는 것과 리보솜의 위치를 정확하게 그리는 작업도 중요했습니다. 색상과 위치를 조정하면서 최종적으로 세포를 완성할 수 있었습니다.

과학시간에 배웠던 내용을 다시 실제로 만들어보니 이 세포에대해 더 자세히 알아볼 수 있었던것 같습니다.

이 과정에서 코딩을 배우거나 할때, 디버깅과 수정의 중요성을 깨달았고, 구체적인 과정이 중요하다는 걸 느꼈습니다.

# data[].attributes.body
import turtle

def L():

t.forward(170)

t.right(90)

t.forward(30)

t.right(90)

t=turtle.Turtle()

t.left(45)

L(), L()

t.forward(200)

t.right(90)

t.forward(30)

t.right(90)

t.forward(30)

t.back(10)

t.left(270)

t.forward(30)

t.home()

t.right(110)

t.forward(45)

t.home()

t.right(45)

t.forward(30)

t.right(105)

t.forward(45)

t.penup()

t.home()

t.right(110)

t.forward(24)

t.left(120)

t.pendown()

t.forward(6)

t.right(105)

t.forward(6)

t.left(105)

t.forward(6)

t.right(105)

t.forward(6)

#펜 멀리 보내기용

t.penup()

t.back(200)

처음 함수를 사용해서 L자를 2번 반복하게 해서 직사각형을 그렸고, 그 뒤로 다시 연필을 돌려 연필 위쪽의 지우개 부분을 그렸다 또 그 뒤로 다시 펜을 돌려 나머지 부분을 그리는 것으로 연필을 그렸다.

# data[].attributes.body
import turtle

screen = turtle.Screen()

screen.bgcolor("lightblue")

t = turtle.Turtle()

t.speed(3)

def draw_boat():

t.penup()

t.goto(-100, -100)

t.pendown()

t.begin_fill()

t.color("black")

t.setheading(0)

t.forward(200)

t.left(80)

t.forward(50)

t.left(100)

t.forward(250)

t.left(110)

t.forward(50)

t.end_fill()

t.penup()

t.goto(0, -50)

t.pendown()

t.setheading(90)

t.forward(100)

t.setheading(45)

t.begin_fill()

t.color("black")

t.forward(100)

t.right(90)

t.forward(100)

t.right(135)

t.forward(140)

t.end_fill()

draw_boat()

turtle.done()

설명: 기본적인 언어인 포워드 레프트 라이트를 이용해서 배 밑 부분 기둥 닻을 만들었고 바탕색은 파란색으로 바다를 표현했고 배는 검은색으로 정했다 힘든점은 위 내용을 1학기때 배워서 대부분의 내용이 잘 기억이 나지 않아서 힘들었다.

# data[].attributes.body
import turtle

t = turtle.Turtle()

t.speed(5)

t.pen up()

t.goto(0, -100)

t.pen down()

t.begin_fill()

t.color("orange")

t.circle(100)

t.end_fill()

def draw_eye(x, y):

t.penup()

t.goto(x, y)

t.pendown()

t.begin_fill()

t.color("white")

t.circle(15)

t.end_fill()

draw_eye(-35, 50)

draw_eye(35, 50)

def draw_pupil(x, y):

t.penup()

t.goto(x, y)

t.pendown()

t.begin_fill()

t.color("black")

t.circle(7)

t.end_fill()

draw_pupil(-35, 55)

draw_pupil(35, 55)

t.penup()

t.goto(0, 20)

호랑이를 그리는 코드를 작성한 것은 어렸을 때 이 동물을 가장 좋아했가 땨문애 파이썬 코딩으로 재현했고 이 코딩은 단계적으로 부분씩 나눠 코딩을 하였다 눈,코,입,귀,수염을 그리며 turtle 기본적인 기능인 원 그리기, 선 그리기, 회전 등을 활용하였고 입과 수염은 선을 그리고 각도를 조정하여 디테일을 살렸다 이러한 다양한과정을 거치며 느낀점은 코드의 흐름과 창의적인 생각이 합쳐져야 좋은 결과가 나올수 있다는 것을 알게되었다

# data[].attributes.body
계란 후라이

import turtle

screen = turtle.Screen()

screen.bgcolor("black")

egg = turtle.Turtle()

egg.speed(5)

egg.penup()

egg.goto(0, -150)

egg.pendown()

egg.begin_fill()

egg.color("gray")

egg.circle(150)

egg.end_fill()

egg.penup()

egg.goto(0, -50)

egg.pendown()

egg.begin_fill()

egg.color("white")

egg.circle(100)

egg.end_fill()

egg.penup()

egg.goto(0, 20)

egg.pendown()

egg.begin_fill()

egg.color("yellow")

egg.circle(50)

egg.end_fill()

egg.hideturtle()

turtle.done()

관심이 있는 진로 분야가 요리 쪽 이여서 처음에는 요리사를 그럴 려 고 했지만 오류도 많고 올린 것 이 복사가 오류가 나기도 해서 간단하게 계란후라이 그림을 그렸습니다 간단하게 판 위에 있는 노른자랑 흰자가 동그란 계란후라이를 그렸습니다 흰자의 안에 들어가게 노른자의 크기를 반으로 썼습니다 만들면서 간단하게 보이는 것 도 많은 노력이 필요하다는 것 을 알았습니다

# data[].attributes.body
import turtle

t = turtle.Turtle()

# 얼굴, 눈 그리기 함수

def drawCircle(color, radius, x, y):

t.penup()

t.goto(x, y)

t.pendown()

t.color(color)

t.begin_fill()

t.circle(radius)

t.end_fill()

# 얼굴, 눈 그리기

drawCircle('yellow', 100, 0, 0) # 얼굴

drawCircle('white', 30, -40, 100) # 왼쪽 눈 흰자위

drawCircle('black', 15, -40, 100) # 왼쪽 눈 동공

drawCircle('white', 30, 40, 100) # 오른쪽 눈 흰자위

drawCircle('black', 15, 40, 100) # 오른쪽 눈 동공

# 웃는 입 그리기

t.penup()

t.goto(-40, 60) # 입의 시작 지점을 위로 조정

t.pendown()

t.setheading(-60) # 입의 각도 설정 (아래쪽으로 미소)

t.color('black') # 입 색상을 검정색으로 설정

t.circle(40, 120) # 반원형 웃는 입

t.penup()

t.goto(120, 20) # 웃는 얼굴 오른쪽으로 이동

t.pendown()

# 하트 그리기

def drawHeart(color, x, y):

t.penup()

t.goto(x, y)

t.pendown()

t.color(color)

t.begin_fill()

t.setheading(0) # 하트가 오른쪽으로 그려지도록 방향 설정

t.left(50)

t.forward(133)

t.circle(50, 200) # 왼쪽 원호

t.right(140)

t.circle(50, 200) # 오른쪽 원호

t.forward(133)

t.end_fill()

drawHeart('red', 200, 20) # 하트 위치를 더 오른쪽으로 이동

# 알약 그리기 함수

def drawCircleShape(radius, x, y):

t.penup()

t.goto(x, y - radius) # 원을 그리기 위해 원의 하단으로 이동

t.pendown()

t.color("black") # 검정색 선으로 원을 그리기

t.circle(radius) # 원 그리기

drawCircleShape(60, 350, 140) # 원의 중심을 하트 옆에 배치

t.goto(443, 158) # 직선

#커서 숨기기

t.hideturtle()

# 창이 닫히지 않게 기다림

turtle.done()

처음에는 표정이 안 좋은 얼굴을 먼저 그리고, 약을 먹은 후에 표정이 좋아지는 것을 표현하고자 했는데 입꼬리를 변형하는 것도 생각보다 어렵고 시간도 부족할 거 같아 약을 보고 좋아하는 웃는 얼굴만 구현해보았다. 가장 어려웠던 점은 약을 그릴 때 원을 지나는 지름 길이의 직선을 그리는 것이었는데 지름 길이로 설정하는 방법이 있을 거 같은데 찾지 못해서 그냥 좌표를 하나하나 대입해보며 점을 찾았다. 얼굴은 학교 학습지를 참고해서 그렸고, 하트와 직선을 그리기 위해서 명령어를 검색해보았는데 생각보다 엄청 다양한 명령어가 있고, 그것이 체계적으로 정리되어 있다는 점이 신기했다.

# data[].attributes.body
#DNA 그리기

import turtle

import math

screen = turtle.Screen()

screen.bgcolor("white")

screen.setworldcoordinates(-200, -200, 200, 200)

t = turtle.Turtle()

t.speed(0)

t.width(2)

turns = 5

points_per_turn = 100

radius = 50

spacing = 10

def draw_dna_strand(color, direction):

t.penup()

t.color(color)

for i in range(points_per_turn * turns):

angle = i * (360 / points_per_turn)

x = radius * math.cos(math.radians(angle))

y = spacing i / points_per_turn direction

t.goto(x, y)

t.pendown()

draw_dna_strand("blue", 1)

draw_dna_strand("red", -1)

t.hideturtle()

screen.mainloop()

생명과학과로 진로를 생각하고 있어서 이중나선 구조를 가진 DNA를 표현하려 했다 근데 이 구조를 표현하기가 너무 어려웠다 이를 해결하기 위해서 색상을 조금 다르게 해서 나타냈다

처음에는 파란선으로 위로 올라가도록 하였고 두번째는 빨간선으로 아래로 내려가게 하였다,그리고 처음 코딩을 할때는 화면밖으로도 그림이 그려져서 화면 밖으로 나가지 않게 하기 위해 화면 좌표 범위를 설정 하였다,DNA를 파이썬으로 나타내기엔 너무 어려움이 있다는 것을 알게되었고 최대한 DNA와 비슷하게 코딩을 해봤다.

DNA를 코딩으로 통해 표현할 수 있다는 것을 알게되었고 스프링 모양처럼 된것같아서 아쉬웠다.

# data[].attributes.body
컴퓨터 모양 그리기

import turtle

t = turtle.Turtle()

t.screen.bgcolor('Beige')

t.color('black')

t.shape('classic')

t.pendown()

def move_and_turn(distance, angle):

t.forward(distance)

t.left(angle)

t.begin_fill()

move_and_turn(100, 140)

move_and_turn(70, -45)

move_and_turn(40, -95)

move_and_turn(100, 90)

move_and_turn(100, 90)

move_and_turn(250, 90)

move_and_turn(100, 90)

move_and_turn(100, -90)

move_and_turn(40, -45)

move_and_turn(65, 135)

t.forward(60)

t.end_fill()

내가 그린 그림은 컴퓨터인데 왜 컴퓨터를 그렸냐면 일단 내진로가 컴퓨터 공학쪽이기도 하고 이 컴퓨터 공학의 대표적인 물건은 컴퓨터라고 생각해서 그렇다면 이 컴퓨터를 터틀 프로그래밍으로 만들어보면 어떨까 해서 컴퓨터를 그리게 되었다.

일단 처음엔 그림의 배경 색을 정했다. 배경 색은 베이지로 정했는데 왜냐하면 컴퓨터가 우리 일상생활에서 많이 활용되어지고 우리 생활에서 많이 보이고 적응 되어있는 물건이다 보니 약간 편안해 보이는 색을 고르고 싶어서 골랐다. 그 다음 펜의 색을 검은색으로 설정하고 터틀의 모양을 classic으로 정했다.

그 다음 t.pendwn()으로 터틀이 그리기 시작하도록 설정했다. 처음에 나는 앞으로 가는 코드를 써서 처음 진행 방향이 어딘지 확인하기 위해 터틀이 앞으로 지정된 만큼 이동하게 하는 코드인 t.forward()를 썼고 지정된 각도만큼 왼쪽이나 오른쪽으로 회전하게 하는 t.left() , t.right()을 사용했다. 이것들을 사용하였는데 처음에는 그냥 단순히 앞으로 갔다가 왼쪽으로 각도를 바꿨다가 앞으로 갔다가 이렇게 하면서 실행해보면서 컴퓨터를 만들었었는데 처음에 이것을 단축?을 해보고 싶었다. 하지만 반복문을 사용하기엔 내가 각도를 하나하나 다 다르게 설정해 반복문을 사용할 수가 없고 그래서 어떻게 하면 좋을지 모르겠었다. 그런데 저번에 수업시간에 배웠던 함수가 생각나서 앞으로 이동하는 t.forward()와 각도를 변경하는 t.left() , right() 이런 명령들을 하나의 함수로 묶는 방법을 선택 했다. 그래서 move_and_turtle이라고 정의한 다음 move_and_turtle(이동 거리, 각도) 이렇게 쓸 수 있고 이동거리는 앞으로 이동하는거리 각도는 왼쪽으로 트는 각도인데 그러면 오른쪽으로는 어떻게 바꾸나 해서 -(마이너스)를 사용하여 왼쪽에 반대인 오른쪽을 나타냈다. 이렇게 하니 코드를 많이 단축할 수 있게 되었다. 그런데 나는 처음에 펜의 색을 블랙으로 정해 컴퓨터의 색깔이 검은색인걸 표현하고 싶었는데 그림 안이 안 채워지면서 그림 안이 배경의 색으로 채워지는 현상이 일어나 이 문제를 해결하기 위해 t.begin_fill()이라는 코드를 사용해 채우기를 시작하고 그리는 코드 뒤에 t.end_fill()을 사용해 채우기를 끝내 내가 그린 그림을 채우는 방법을 사용해 컴퓨터를 검은색으로 바꿀 수 있게 되었다.

느낀점

옛날 수업시간에 터틀을 배웠던 적이 있지만 이렇게 구체적으로 다룰 시간이 없어 그냥 아 이런게 있구나 하고 넘겼었는데 이번 활동으로 내 진로와 관련된 물건도 이 터틀 프로그래밍으로 그릴 수 있는 것을 보며 진짜 이 프로그래밍의 가능성이 되게 많은거 같고 중간에 어떻게 코드를 단축하지 하는 어려움이 있었는데 수업시간에 배웠었던 함수를 사용하여 극복을 한 나 자신이 뿌듯하게 느껴졌고 진짜 함수라는게 여러 곳에 사용되어진다고 느꼈다.

아직은 단순히 앞으로 이동하고 각도를 트는등 기본적인 것들만 사용했지만 수업시간에 배웠던 코드들을 이용하여 만든다면 진짜 여러가지를 만들 수 있을거라고 생각했다. 그래서 나중에 다른 코드들을 사용하여 터틀이 아니더라도 다르 프로그램을 만들다거나 될지는 모르겠지만 터틀 같은 프로그래밍도 만들어보고 싶다는 생각이 들었다.

# data[].attributes.body
import turtle

# 입력받기

data=input("막대그래프를 그릴 정수 값을 입력하세요 (쉼표 구분): ")

deep=list(map(int, data.split(',')))

# 설정

t=turtle.Turtle()

t.speed(8)

# 왼쪽 아래로 이동

t.penup()

t.goto(-300, -250) # 시작 위치로 이동

t.pendown()

# 막대그래프 그리기

for deep in deep:

t.begin_fill()

t.forward(50) #너비

t.left(90)

t.forward(deep) #높이

t.left(90)

t.forward(50) #너비

t.left(90)

t.forward(deep) #높이

t.left(90)

t.end_fill()

t.penup()

t.forward(90) #사이 간격

t.pendown()

# 화면 대기

turtle.exitonclick()

사용자 입력 처리: 사용자가 쉼표로 구분된 정수 값을 입력하면, 이를 리스트로 변환시켜 deep에 저장합니다

그래픽 설정: turtle 객체를 생성하고 속도를 설정하여 조절합니다

시작 위치 설정: 그래프의 시작 위치를 이동시키고, 선을 그리지 않도록 설정합니다

막대그래프 그리기: 각 정수 값에 대해 막대를 그리는 반복문을 사용하여 막대의 너비와 높이를 설정하고, 각 막대를 그린 후 적절한 위치로 이동합니다

프로그램 종료: turtle.exitonclick()을 통해 사용자가 클릭할 때까지 프로그램이 종료되지 않도록 합니다

현대 경제학에서는 데이터 분석과 시각화가 점점 더 중요해지고 있습니다 경제 데이터를 효과적으로 시각화하는 것은 복잡한 정보를 이해하고 의사 결정을 내리는 데 큰 도움이 됩니다

이러한 데이터 시각화 기술은 경제학 연구, 정책 분석, 기업의 경영 전략 수립 등 다양한 분야에서 활용됩니다 경제학을 전공하고자 하는 학생이라면, 데이터 분석 및 시각화 도구를 익히는 것이 중요합니다 파이썬과 같은 프로그래밍 언어를 통해 데이터 시각화 기술을 배우면, 경제 데이터를 보다 효과적으로 분석하고 전달할 수 있는 능력을 갖출 수 있습니다

결론적으로 경제와 데이터 시각화는 밀접하게 연결되어 있으며 이를 통해 경제 현상을 보다 명확하게 이해하고 분석할 수 있을것이라 생각합니다.

# data[].attributes.body
지폐 그리기

import turtle

M = turtle.Turtle()

#지폐

def draw_M():

M.penup()

M.goto(-150, 70)

M.pendown()

M.begin_fill()

M.color('yellow')

for _ in range(2):

M.forward(300)

M.right(90)

M.forward(150)

M.right(90)

M.end_fill()

def draw_T():

M.penup()

M.goto(0, -35)

M.pendown()

M.color('black')

M.write('50000원', align="center", font=("Arial", 50))

draw_M()

draw_T()

M.hideturtle() # 터틀 숨기기

내가 그린 것은 오 만원 권 지폐이다.

진로가 경제와 관련이 있기 때문에 돈을 그렸고, 처음에는 전체적인 형태(사각형 모양)을 만들기 위해서 펜을 그림의 시작점을 임의로 정하여 내려놓고, 노란색으로 색을 칠하였고, 펜을 들어서 사각형 그림의 가운데로 옮겨, '50000원'이라는 글자를 적었다. 다 그리고 나서 실행하는 방식을 사용하였다.

아무래도 프로그램을 사용하여 만들었기 때문에 완벽하게 그리지는 못하였지만, 수업 시간에 배운 내용을 활용하여 이런 그림을 만들 수 있다는 것이 신기하였다. 색을 바꾸면 다른 색으로 바꾸기 전까지는 그 색이 계속 사용된다는 것을 알았다. 하나하나 입력하는 것이 복잡하였지만 단축키를 배워 활용하면서 그리면 나중에는 더 복잡한 그림을 간단하게 그릴 수 있을 것 같다

# data[].attributes.body
# 추리 게임: MH 그룹 회장 살인 사건

def 사건파일():

print("\n[사건 파일]")

print("MH 그룹 회장이 자신의 저택 서재에서 살해된 채 발견되었습니다.")

print("용의자는 부회장(오랜 친구), 사장(회장의 아들), 회장의 부인, 부사장입니다.")

print("범인을 찾아내세요!")

def 용의자조사():

print("\n[용의자 조사]")

print("1. 부회장: 회장의 오랜 친구로, 회사의 주식을 일부 보유 중. 최근 갈등이 있었다고 함.")

print("2. 사장: 회장의 아들로, 후계자로 지목된 상태. 최근 회장과 다툼이 잦았다고 함.")

print("3. 회장의 부인: 회장과 불화가 있었다는 소문. 회장 사망 후 재산의 일부를 상속받음.")

print("4. 부사장: 회장의 신임을 받는 인물로, 승진 경쟁에 참여 중.")

def 저택조사():

print("\n[저택 조사]")

print("1. 서재: 사건이 발생한 장소. 책상 위에는 회장의 업무 문서와 와인잔이 놓여 있음.")

print("2. 부엌: 와인잔에 사용된 와인이 이곳에 있음. 독극물이 발견됨.")

print("3. 회장의 방: 회장의 방 서랍에서 사장이 회장에게 쓴 위협적인 편지가 발견됨.")

print("4. 정원: 발자국이 남아 있지만, 용의자를 특정할 증거는 없음.")

def 용의자검거():

print("\n[용의자 검거]")

print("누가 범인이라고 생각하십니까?")

print("1. 부회장")

print("2. 사장")

print("3. 회장의 부인")

print("4. 부사장")

선택 = input("선택: ")

if 선택 == "2":

print("\n정답입니다! 사장이 범인이었습니다.")

print("사장은 회장과의 갈등으로 인해 분노를 참지 못하고 독극물을 와인에 넣어 회장을 살해했습니다.")

return True

else:

print("\n틀렸습니다. 다시 조사해보세요.")

return False

def 게임():

print("MH 그룹 회장 살인 사건\n")

게임진행 = True

while 게임진행:

print("\n무엇을 하시겠습니까?")

print("1. 사건 파일 보기")

print("2. 용의자 조사")

print("3. 저택 조사")

print("4. 용의자 검거")

print("5. 게임 종료")

선택 = input("선택: ")

if 선택 == "1":

사건파일()

elif 선택 == "2":

용의자조사()

elif 선택 == "3":

저택조사()

elif 선택 == "4":

if 용의자검거():

게임진행 = False

elif 선택 == "5":

print("\n게임을 종료합니다.")

게임진행 = False

else:

print("\n잘못된 입력입니다. 다시 선택해주세요.")

# 게임 실행

게임()

게임이 시작되면 플레이어는 사건파일, 용의자 조사, 저택 조사, 용의자 검거, 게임종료 중 하나를 선택하고 단서를 모아 추리한 뒤 범인을 검거하면 되는 추리게임이다. while문을 이용하여 플레이어가 원하는 만큼 조사를 반복할 수 있고 if문과 elif문을 활용하여 플레이어의 선택에 따라 다르게 진행되며 범인을 맞출 때까지 실행되게 만들었다.

작가와 PD쪽인 진로로 시나리오가 있는 추리게임을 만들었다. 제작하며 실행이 안되거나 모르는 것이 있을 때 프로그래밍을 잘하는 사람에게 물어보며 그나마 쉽게 제작할 수 있었다. 조금 더 세세하게 스토리를 짜고 만들고 싶었지만 프로그램이 너무 복잡해져 실행이 되지 않자 간단하게 줄여서 아쉬웠다. 다음에는 내가 원하는 스토리를 그대로 넣을 수 있는 프로그램을 짜보고 싶다.

# data[].attributes.body
import turtle

t= turtle

t.left(90)

t.speed(1000)

t.color('yellow')

t.bgcolor('black')

for i in range (1,10):

t.forward(30)

t.right(50)

t.penup()

t.forward(20)

t.pendown()

t.right(140)

t.forward(35)

t.left(230)

t.penup()

t.goto(26,19)

t.pendown()

t.circle(34)

t.penup()

t.goto(-11.5,-51.8)

t.pendown()

for i in range (1,20):

t.color('red')

t.forward(130)

t.right(80)

t.forward(50)

t.right(160)

t.forward(75)

t.left(280)

t.color('white')

t.forward(70)

t.penup()

t.right(100)

t.color('blue')

t.forward(35)

t.left(280)

t.forward(40)

t.right(30)

t.pendown()

t.speed(2000)

for g in range (1,20):

t.penup()

t.forward(130)

t.right(80)

t.forward(50)

t.right(160)

t.forward(75)

t.left(280)

t.pendown()

t.color('white')

t.forward(70)

t.penup()

t.right(100)

t.penup()

t.forward(35)

t.left(280)

t.forward(40)

t.right(30)

t.pendown()

이것저것 만들어보다가 모양이 폭죽이 터지는 것 같은 모양이라 색만 변경해주었다.

배경색을 바꾸는 명령어로 검은색 밤 배경을 만들어주고 for을 사용해 복잡하지만 규칙이 있는 모양을 만들었다.

색을 더 잘 조합하고 싶었지만 시간이 없어 못한게 아쉽다.

그낀점은 생각보다 복잡한 모양을 만드는게 쉽다는 것 이고 재밌있었다는것 이다.

# data[].attributes.body
import turtle

t=turtle.Turtle()

t.reset()

t.speed(10)

t.dot(120)

t.dot(100, "peach puff")

t.pu()

t.goto(-50, 0)

t.pd()

t.begin_fill()

t.circle(50, 100)

t.pu()

t.left(180)

t.goto(0, 50)

t.pd()

t.circle(50, 90)

t.left(90)

t.circle(55, 180)

t.end_fill()

t.goto(-45, -10)

t.dot(25, "peach puff")

t.pu()

t.goto(45, -10)

t.pd()

t.dot(25, "peach puff")

# data[].attributes.body
#나무 (xy좌표, 굵기, 크기, 나뭇잎, 색)

def t1(x,y,a,b,c,d):

t.pu()

t.goto(x,y)

t.seth(90)

t.pensize(a)

t.pencolor('chocolate')

t.pd()

t.fd(b)

t.pu()

t.dot(c,d)

t.fd(c//2)

t.dot(c*0.75,d)

#구름 (xy좌표, 개수, 크기)

def c1(x,y,a,b):

t.pu()

t.goto(x,y)

t.seth(0)

s=[0.8,0.85,0.9,0.95,1]

for i in range(a):

t.dot(b*random.choice(s), 'azure')

t.fd(b//2)

import turtle

import random

t=turtle.Turtle()

t.reset()

t.hideturtle()

t.speed(10)

t.screen.bgcolor('light sky blue')

t.pu()

t.goto(-500, -300)

t.pencolor('light green')

t.pensize(200)

t.pd()

t.fd(1000)

t1(-190,-260,40,170,150,'medium sea green')

t1(-320,-295,45,225,200,'green')

t1(20,-320,50,280,240,'forest green')

t1(210,-210,35,150,130,'sea green')

t1(450,-350,80,370,320,'lime green')

t.goto(-410,340)

t.dot(80,'light coral')

c1(-270,340,3,100)

c1(-20,310,4,80)

c1(250,320,2,110)

숲을 그렸다. 나무와 구름이 반복적으로 등장하기 때문에 둘을 함수로 정의해서 사용했다. 구름의 유동적인 느낌을 표현하기 위해 랜덤 함수를 사용하여 실행할 때마다 모양이 바뀌도록 만들어보았는데 이것 때문에 각각의 원 사이 간격 설정에 좀 어려움을 겪기도 했었다. 학교에서 배운 지식만을 가지고 하는 것이 아니라 내가 구현하고 싶은 것을 위해 주도적으로 검색하고 새로운 지식을 터득해가는 과정이 재밌었다. 이번에는 그림을 그렸으니 다음에는 반복문과 조건문을 활용한 간단한 텍스트 게임을 만들어보고싶다.