<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>JBM 프로그래밍</title>
    <link>https://jbmpa.tistory.com/</link>
    <description>Python, Pyside2, GUI 프로그래밍</description>
    <language>ko</language>
    <pubDate>Fri, 3 Jul 2026 21:22:59 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>오비티</managingEditor>
    <image>
      <title>JBM 프로그래밍</title>
      <url>https://tistory1.daumcdn.net/tistory/3006140/attach/5046a2a3810344dfbe8a3621f4c16835</url>
      <link>https://jbmpa.tistory.com</link>
    </image>
    <item>
      <title>Turtle Game 8 - 다양한 액션 추가하기</title>
      <link>https://jbmpa.tistory.com/109</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;Turtle Game 8 - 다양한 액션 추가하기&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/b6m2Ei/btqEfrLq8sm/jcfDBjS2itxJO99kwHKp8K/bubble003.wav?attach=1&amp;amp;knm=tfile.wav&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;bubble003.wav&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.05MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&lt;b&gt;Turtle Game 8 - 다양한 액션 추가하기&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;앞선 강좌를 통해 거북이가 벌레를 잡아먹고, 점수를 올리는 간단한 게임을 만들었었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;추가적으로 벌레를 먹은 뒤에 다른 기능들을 구현해보도록 하자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;1. 점수에 따라 거북이의 크기와 색상 변경하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;현재 거북이의 크기는 2로 고정되어 있다. 점수에 따라 거북이의 크기를 변하게 할 수 있고, 거북이의 색상을 변하게 할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;거북이의 크기에 따라 색상을 다르게 해주기 위해 색상 리스트를 만든다.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;tcolors =&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;['#95B9D3', '#77ADD3', '#4497D2', '#2A84C5', '#1A5D8E', '#CE8F91','#CB4E53','#B4252A','#8B1317','#780409'&lt;/span&gt;]&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;점수에 따라 거북이의 크기를 크게하기 위해 크기와 색상을 변수로 설정한다.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;span&gt;#거북이 크기 값&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;&lt;span&gt;turtlesize = 1&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;#거북이의 크기&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;p.&lt;b&gt;turtlesize&lt;/b&gt;(turtlesize,turtlesize)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;#거북이의 초기 색상&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;p.&lt;b&gt;color&lt;/b&gt;(tcolors[0])&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;점수에 따라 거북이의 크기를 변경해주고, 색상을 변경하는 코드를 작성한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;1) 점수를 10으로 나누어서 나머지가 0일때, 즉&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;10의 배수일 때마다 거북이의 크기를 1 증가&lt;/b&gt;시킨다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;2) 거북이의 크기가 무한대로 커지는 것을 방지하기 위해&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;크기가 30을 초과하면 30으로 고정&lt;/b&gt;시킨다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;3) 거북이의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;색상을 10단계&lt;/b&gt;로 나누어 두었다. 점수를 나누어서 그 몫이 10보다 작으면, 몫에 해당하는 값을 색상 리스트의 인덱스로 사용하여 색상을 변경해준다.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;span&gt;score += 1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;if(score % 10 == 0):&lt;br /&gt;&amp;nbsp; &amp;nbsp; turtlesize += 1&lt;br /&gt;&amp;nbsp; &amp;nbsp; if turtlesize &amp;gt; 30:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; turtlesize = 30&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.turtlesize(turtlesize,turtlesize)&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; k = score // 10&lt;br /&gt;&amp;nbsp; &amp;nbsp; if k &amp;lt; 10:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p.color(tcolors[k])&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;거북이의 크기가 점점 커지면 벌레를 그 만큼 잘 잡을 수 있어야 한다. 따라서 거북이와 벌레의 충돌 거리 부분을 거북이의 크기에 비례해서 거리도 커지게 만든다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;충돌 확인 함수에 거리값을 변경해주는 코드를 추가한다.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;#충돌 확인 함수 &amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span&gt;def&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;isCollision&lt;/b&gt;(t1, t2):&lt;br /&gt;&amp;nbsp; &amp;nbsp; #수학식에서 두 점 사이의 거리&lt;br /&gt;&amp;nbsp; &amp;nbsp; d = math.sqrt( math.pow(t1.xcor() - t2.xcor(), 2) + math.pow(t1.ycor() - t2.ycor(), 2))&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;coll = turtlesize * 10&lt;/b&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;if&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;d &amp;lt; coll&lt;/b&gt;:&lt;br /&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return True&lt;br /&gt;&amp;nbsp; &amp;nbsp; else:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return False&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;위의 코드를 적용한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;전체코드&lt;/b&gt;는 아래와 같다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1736239166874&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import turtle as t
import random
import math


#스크린 객체 생성
screen = t.Screen()
#스크린 배경색 지정
screen.bgcolor(&quot;lightgreen&quot;)
screen.tracer(2)


#울타리 그리기
mypen = t.Turtle()
mypen.penup()
mypen.setposition(-300, 300)
mypen.pendown()
mypen.pensize(3)


for x in range(4):
    mypen.forward(600)
    mypen.right(90)

mypen.hideturtle()

#Create bugs 
maxBugs = 20
bugs = []
colors = ['red','blue','purple','white','black', 'pink','#FFFF00']
shapes = ['arrow', 'blank', 'circle', 'classic', 'square', 'triangle']
tcolors = ['#95B9D3', '#77ADD3', '#4497D2', '#2A84C5', '#1A5D8E', '#CE8F91','#CB4E53','#B4252A','#8B1317','#780409']
for count in range(maxBugs):
    c = random.randint(0,6)
    s = random.randint(0,5)
    bugs.append(t.Turtle())
    bugs[count].color(colors[c])
    bugs[count].shape(shapes[s])
    bugs[count].penup()
    bugs[count].speed(0)
    bugs[count].setposition(random.randint(-300, 300), random.randint(-300, 300))
    bugs[count].right(random.randint(0,360))

#거북이의 크기 변수
turtlesize = 1
#Turtle 객체 p 생성
p = t.Turtle()
#p 객체의 모양을 거북이로 만들기
p.shape(&quot;turtle&quot;)
#p 객체 크기 설정
p.turtlesize(turtlesize,turtlesize)
#p 객체 색상 설정, 
#색상은 색상 이름 또는 색상 코드(#FFFFFF) 등을 이용하여 설정 할 수 있다.
p.color(tcolors[0])
#거북이를 따라다니는 선을 제거
p.penup()
#거북이의 움직임 속도
speed = 1
#거북이 점수
score = 0

def turnleft():
    p.left(30)


def turnright():
    p.right(30)


def increasespeed():
    global speed
    speed += 1


def decreasespeed():
    global speed
    speed -= 1


#점수 입력 함수
def setScore(score): 
    mypen.undo()
    mypen.penup()
    mypen.hideturtle()
    mypen.setposition(-290, 310)
    scorestring = &quot;Score: %s&quot; % score
    mypen.write(scorestring, False, align=&quot;left&quot;, font=(&quot;Arial&quot;, 14, &quot;normal&quot;))   
 
#충돌 확인 함수   
def isCollision(t1, t2):
    #수학식에서 두 점 사이의 거리
    d = math.sqrt( math.pow(t1.xcor() - t2.xcor(), 2) + math.pow(t1.ycor() - t2.ycor(), 2))
     
    coll = turtlesize * 10
     
    if d &amp;lt; coll:
        return True
    else:
        return False

screen.listen()
screen.onkey(turnleft, &quot;Left&quot;)
screen.onkey(turnright, &quot;Right&quot;)
screen.onkey(increasespeed, &quot;Up&quot;)
screen.onkey(decreasespeed, &quot;Down&quot;)

while True:
    p.forward(speed)
    
    #울타리 체크
    if p.xcor() &amp;gt; 300 or p.xcor() &amp;lt; -300:
        p.right(180)
    
    if p.ycor() &amp;gt; 300 or p.ycor() &amp;lt; -300:
        p.right(180)
            
    #다수의 벌레 움직이기
    for count in range(maxBugs):        
        
        bugs[count].forward(5)
    
        #울타리 체크
        if bugs[count].xcor() &amp;gt; 300 or bugs[count].xcor() &amp;lt; -300:
            bugs[count].right(180)
            #soundBounce()
                    
        if bugs[count].ycor() &amp;gt; 300 or bugs[count].ycor() &amp;lt; -300:
            bugs[count].right(180)    
   
        if isCollision(p, bugs[count]):
            #벌레가 먹히면 색상, 모양 변경후 다른 곳으로 이동
            bugs[count].setposition(random.randint(-300, 300), random.randint(-300, 300))
            bugs[count].right(random.randint(0,360))
            s = random.randint(0,5)
            c = random.randint(0,6)
            bugs[count].shape(shapes[s])        
            bugs[count].color(colors[c])
            
            #벌레를 먹었을 때, 점수 1 추가
            score += 1
            
            #점수에 따라 거북이 크기와 색상 변경하기
            if(score % 10 == 0):
                turtlesize += 1
                if turtlesize &amp;gt; 30:
                    turtlesize = 30
                p.turtlesize(turtlesize,turtlesize)
                
                k = score // 10
                if k &amp;lt; 10:
                    p.color(tcolors[k])
                               
            #점수를 표시
            setScore(score)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;실행 결과&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;# 점수에 따라 거북이의 색상과 크기가 변경되는 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;# p.penup() 주석처리한 것을 해제한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;525&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/clUanH/btqEeYvYGz1/icXG4as2Y2zQB7dYKsTTC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/clUanH/btqEeYvYGz1/icXG4as2Y2zQB7dYKsTTC0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/clUanH/btqEeYvYGz1/icXG4as2Y2zQB7dYKsTTC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FclUanH%2FbtqEeYvYGz1%2FicXG4as2Y2zQB7dYKsTTC0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;525&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;525&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;525&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cKNOKn/btqEfrq8DZx/LVcSB3ApfD66JkQk6RPgZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cKNOKn/btqEfrq8DZx/LVcSB3ApfD66JkQk6RPgZ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cKNOKn/btqEfrq8DZx/LVcSB3ApfD66JkQk6RPgZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKNOKn%2FbtqEfrq8DZx%2FLVcSB3ApfD66JkQk6RPgZ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;525&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;525&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;525&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cX811W/btqEbReoq8Y/9h9ZCWKJKGH5kctYABkzX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cX811W/btqEbReoq8Y/9h9ZCWKJKGH5kctYABkzX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cX811W/btqEbReoq8Y/9h9ZCWKJKGH5kctYABkzX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcX811W%2FbtqEbReoq8Y%2F9h9ZCWKJKGH5kctYABkzX1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;525&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;525&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;2. 충돌시 소리나게 하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;파이썬에서 소리를 재생하는 모듈은 다양하다. 우리는 playsound 모듈을 사용한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;1) playsound 설치&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;명령프롬프트(command prompt)를 실행하여 playsound를 설치한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;140&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPWty4/btqEd7GTRZX/yVdr6FdaGl2JsnKaG8SOK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPWty4/btqEd7GTRZX/yVdr6FdaGl2JsnKaG8SOK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPWty4/btqEd7GTRZX/yVdr6FdaGl2JsnKaG8SOK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPWty4%2FbtqEd7GTRZX%2FyVdr6FdaGl2JsnKaG8SOK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;140&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;140&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;2) 사운드 재생 함수 생성&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;playsound()의 두번째 인자는 백그라운드로 실행할 것인가 여부를 결정한다. False가 백그라운드.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;사운드 파일은 소유하고 있는 어떤 것도 가능하며, 마땅한 사운드 파일이 없으면 다운 받아서 사용해도 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;사운드의 위치를 &quot;./sound/bubble003.wav&quot;로 했기 때문에 프로젝트 폴더의 하위에 sound 폴더를 만들어서 그 곳에 사운드 파일을 넣으면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;span&gt;def&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;soundCollision&lt;/b&gt;():&lt;br /&gt;&amp;nbsp; &amp;nbsp; playsound(&quot;./sound/bubble003.wav&quot;, False)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;3) 충돌시 사운드 함수 실행&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;if isCollision(p, bugs[count]):&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;soundCollision()&lt;/b&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; #벌레가 먹히면 색상, 모양 변경후 다른 곳으로 이동&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].setposition(random.randint(-300, 300), random.randint(-300, 300))&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].right(random.randint(0,360))&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; s = random.randint(0,5)&lt;br /&gt;&amp;nbsp; &amp;nbsp; c = random.randint(0,6)&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].shape(shapes[s]) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].color(colors[c])&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; #벌레를 먹었을 때, 점수 1 추가&lt;br /&gt;&amp;nbsp; &amp;nbsp; score += 1&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; #점수에 따라 거북이 크기 커지게 하기&lt;br /&gt;&amp;nbsp; &amp;nbsp; if(score % 10 == 0):&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; turtlesize += 1&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if turtlesize &amp;gt; 30:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; turtlesize = 30&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p.turtlesize(turtlesize,turtlesize)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; k = score // 10&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if k &amp;lt; 10:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p.color(tcolors[k])&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #점수를 표시&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; setScore(score)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;사운드 기능 추가한 전체 코드&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;span&gt;import turtle as t&lt;br /&gt;import random&lt;br /&gt;import math&lt;br /&gt;&lt;span&gt;&lt;b&gt;from playsound import playsound&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;#스크린 객체 생성&lt;br /&gt;screen = t.Screen()&lt;br /&gt;#스크린 배경색 지정&lt;br /&gt;screen.bgcolor(&quot;lightgreen&quot;)&lt;br /&gt;screen.tracer(2)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;#&lt;/span&gt;울타리 그리기&lt;br /&gt;&lt;span&gt;mypen = t.Turtle()&lt;br /&gt;mypen.penup()&lt;br /&gt;mypen.setposition(-300, 300)&lt;br /&gt;mypen.pendown()&lt;br /&gt;mypen.pensize(3)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;for x in range(4):&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.forward(600)&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.right(90)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;span&gt;mypen.hideturtle()&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;span&gt;#Create bugs&amp;nbsp;&lt;br /&gt;maxBugs = 20&lt;br /&gt;bugs = []&lt;br /&gt;colors = ['red','blue','purple','white','black', 'pink','#FFFF00']&lt;br /&gt;shapes = ['arrow', 'blank', 'circle', 'classic', 'square', 'triangle']&lt;br /&gt;tcolors = ['#95B9D3', '#77ADD3', '#4497D2', '#2A84C5', '#1A5D8E', '#CE8F91','#CB4E53','#B4252A','#8B1317','#780409']&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;for count in range(maxBugs):&lt;br /&gt;&amp;nbsp; &amp;nbsp; c = random.randint(0,6)&lt;br /&gt;&amp;nbsp; &amp;nbsp; s = random.randint(0,5)&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs.append(t.Turtle())&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].color(colors[c])&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].shape(shapes[s])&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].penup()&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].speed(0)&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].setposition(random.randint(-300, 300), random.randint(-300, 300))&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].right(random.randint(0,360))&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;span&gt;#거북이의 크기 변수&lt;br /&gt;turtlesize = 1&lt;br /&gt;#Turtle 객체 p 생성&lt;br /&gt;p = t.Turtle()&lt;br /&gt;#p 객체의 모양을 거북이로 만들기&lt;br /&gt;p.shape(&quot;turtle&quot;)&lt;br /&gt;#p 객체 크기 설정&lt;br /&gt;p.turtlesize(turtlesize,turtlesize)&lt;br /&gt;#p 객체 색상 설정,&amp;nbsp;&lt;br /&gt;#색상은 색상 이름 또는 색상 코드(#FFFFFF) 등을 이용하여 설정 할 수 있다.&lt;br /&gt;p.color(tcolors[0])&lt;br /&gt;#거북이를 따라다니는 선을 제거&lt;br /&gt;p.penup()&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;#거북이의 움직임 속도&lt;br /&gt;speed = 1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;#거북이 점수&lt;br /&gt;score = 0&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;span&gt;def turnleft():&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.left(30)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;def turnright():&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.right(30)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;def increasespeed():&lt;br /&gt;&amp;nbsp; &amp;nbsp; global speed&lt;br /&gt;&amp;nbsp; &amp;nbsp; speed += 1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;def decreasespeed():&lt;br /&gt;&amp;nbsp; &amp;nbsp; global speed&lt;br /&gt;&amp;nbsp; &amp;nbsp; speed -= 1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;#점수 입력 함수&lt;br /&gt;def setScore(score):&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.undo()&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.penup()&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.hideturtle()&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.setposition(-290, 310)&lt;br /&gt;&amp;nbsp; &amp;nbsp; scorestring = &quot;Score: %s&quot; % score&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.write(scorestring, False, align=&quot;left&quot;, font=(&quot;Arial&quot;, 14, &quot;normal&quot;)) &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;span&gt;&lt;b&gt;def soundCollision():&lt;br /&gt;&amp;nbsp; &amp;nbsp; playsound(&quot;./sound/bubble003.wav&quot;, False)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;#충돌 확인 함수 &amp;nbsp;&amp;nbsp;&lt;br /&gt;def isCollision(t1, t2):&lt;br /&gt;&amp;nbsp; &amp;nbsp; #수학식에서 두 점 사이의 거리&lt;br /&gt;&amp;nbsp; &amp;nbsp; d = math.sqrt( math.pow(t1.xcor() - t2.xcor(), 2) + math.pow(t1.ycor() - t2.ycor(), 2))&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; coll = turtlesize * 10&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; if d &amp;lt; coll:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return True&lt;br /&gt;&amp;nbsp; &amp;nbsp; else:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return False&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;span&gt;screen.listen()&lt;br /&gt;screen.onkey(turnleft, &quot;Left&quot;)&lt;br /&gt;screen.onkey(turnright, &quot;Right&quot;)&lt;br /&gt;screen.onkey(increasespeed, &quot;Up&quot;)&lt;br /&gt;screen.onkey(decreasespeed, &quot;Down&quot;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;span&gt;while True:&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.forward(speed)&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; #울타리 체크&lt;br /&gt;&amp;nbsp; &amp;nbsp; if p.xcor() &amp;gt; 300 or p.xcor() &amp;lt; -300:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p.right(180)&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; if p.ycor() &amp;gt; 300 or p.ycor() &amp;lt; -300:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p.right(180)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; #다수의 벌레 움직이기&lt;br /&gt;&amp;nbsp; &amp;nbsp; for count in range(maxBugs): &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bugs[count].forward(5)&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #울타리 체크&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if bugs[count].xcor() &amp;gt; 300 or bugs[count].xcor() &amp;lt; -300:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bugs[count].right(180)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #soundBounce()&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if bugs[count].ycor() &amp;gt; 300 or bugs[count].ycor() &amp;lt; -300:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bugs[count].right(180) &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if isCollision(p, bugs[count]):&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;b&gt;soundCollision()&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #벌레가 먹히면 색상, 모양 변경후 다른 곳으로 이동&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bugs[count].setposition(random.randint(-300, 300), random.randint(-300, 300))&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bugs[count].right(random.randint(0,360))&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; s = random.randint(0,5)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; c = random.randint(0,6)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bugs[count].shape(shapes[s]) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bugs[count].color(colors[c])&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #벌레를 먹었을 때, 점수 1 추가&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; score += 1&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #점수에 따라 거북이 크기 커지게 하기&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(score % 10 == 0):&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; turtlesize += 1&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if turtlesize &amp;gt; 30:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; turtlesize = 30&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p.turtlesize(turtlesize,turtlesize)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; k = score // 10&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if k &amp;lt; 10:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p.color(tcolors[k])&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #점수를 표시&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; setScore(score)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;각자 아이디어를 내어서 다른 기능들로 추가하면서 게임을 즐겨보자~~~~&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Turtle Game 8 - 다양한 액션 추가하기 끝&lt;/span&gt;&lt;/p&gt;</description>
      <category>Turtle 게임 만들기</category>
      <category>Python</category>
      <category>Turtle</category>
      <author>오비티</author>
      <guid isPermaLink="true">https://jbmpa.tistory.com/109</guid>
      <comments>https://jbmpa.tistory.com/109#entry109comment</comments>
      <pubDate>Mon, 18 May 2020 04:18:27 +0900</pubDate>
    </item>
    <item>
      <title>Turtle Game 7 - 벌레를 먹을때마다 점수 올리기</title>
      <link>https://jbmpa.tistory.com/108</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;Turtle Game 7 - 벌레를 먹을때마다 점수 올리기&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;&lt;b&gt;Turtle Game 7 - 벌레를 먹을때마다 점수 올리기&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;앞서서 거북이가 벌레를 먹는 것을 구현하였다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;이번에는 거북이가 벌레를 먹었을 때, 점수를 표시해보도록 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;1. 점수 구현하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;울타리를 그릴 때,&amp;nbsp; mypen 객체를 사용하였다. 울타리를 그리고 난 뒤, 놀고 있는 mypen 객체를 이용하여 점수를 입력해본다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Turtle() 객체는 write 메서드가 있다. 말 그대로 글자를 쓸 수 있는 메서드이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;아래의 함수를 만들어서 점수를 표시해보도록 하자.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;거북이의 점수 score는 score = 0으로 초기화 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;점수 표시 코드&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span&gt;socre = 0&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;def&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;setScore&lt;/b&gt;(score):&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; #mypne의 이전 행동을 되돌린다. 반복적으로 write를 할때, 겹쳐서 쓰는 것을 방지한다.&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.&lt;b&gt;undo&lt;/b&gt;()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; #mypen 객체의 위치가 어디에 있던 점수를 표시하기 위한 좌표까지 이동시, 선을 그리지 않게 한다.&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.&lt;b&gt;penup&lt;/b&gt;()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; #mypen 객체의 shape는 보이지 않아야 한다. 숨김 변경&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.&lt;b&gt;hideturtle&lt;/b&gt;()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; #점수를 표시하기&amp;nbsp;위한 위치로 이동, 울타리의 왼쪽 위 정도로 정한다.&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.&lt;b&gt;setposition&lt;/b&gt;(-290, 310)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; #점수 표시 형태, socre는 인자로 받아온 값이다.&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; scorestring = &quot;Score: %s&quot; % score&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; #mypen이 있는 위치에서 글자를 표시한다.&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.&lt;b&gt;write&lt;/b&gt;(scorestring, False, align=&quot;left&quot;, font=(&quot;Arial&quot;, 14, &quot;normal&quot;)) &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;2. 충돌 확인 함수 작성&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;앞선 강좌에서 거북이와 벌레의 충돌을 계산하는 아래의 식을 만들어서 for 구문 안에 넣었었다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#거북이와 벌레&amp;nbsp;거리 구하는 식&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;d = math.sqrt( math.pow(p.xcor() - bugs[count].xcor(), 2) + math.pow(p.ycor() - bugs[count].ycor(), 2))&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;편의를 위해 충돌 함수를 만들어서 사용하도록 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;충돌함수 코드&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;def&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;isCollision&lt;/b&gt;(t1, t2):&lt;br /&gt;&amp;nbsp; &amp;nbsp; #수학식에서 두 점 사이의 거리&lt;br /&gt;&amp;nbsp; &amp;nbsp; d = math.sqrt( math.pow(t1.xcor() - t2.xcor(), 2) + math.pow(t1.ycor() - t2.ycor(), 2))&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;if&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;d &amp;lt; 20:&lt;br /&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return True&lt;br /&gt;&amp;nbsp; &amp;nbsp; else:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return False&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;전체코드&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;# 충돌여부를 함수를 이용하여 확인하고, 충돌이 인정되면 벌레를 이동시키고 점수를 올려준다.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span&gt;import turtle as t&lt;br /&gt;import random&lt;br /&gt;import math&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#스크린 객체 생성&lt;br /&gt;screen = t.Screen()&lt;br /&gt;#스크린 배경색 지정&lt;br /&gt;screen.bgcolor(&quot;lightgreen&quot;)&lt;br /&gt;screen.tracer(2)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#&lt;/span&gt;울타리 그리기&lt;br /&gt;&lt;span&gt;mypen = t.Turtle()&lt;br /&gt;mypen.penup()&lt;br /&gt;mypen.setposition(-300, 300)&lt;br /&gt;mypen.pendown()&lt;br /&gt;mypen.pensize(3)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;for x in range(4):&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.forward(600)&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.right(90)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span&gt;mypen.hideturtle()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span&gt;#Create bugs&amp;nbsp;&lt;br /&gt;maxBugs = 20&lt;br /&gt;bugs = []&lt;br /&gt;colors = ['red','blue','purple','white','black', 'pink'&lt;/span&gt;,'#FFFF00'&lt;span&gt;]&lt;br /&gt;shapes = ['arrow', 'blank', 'circle', 'classic', 'square', 'triangle']&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;for count in range(maxBugs):&lt;br /&gt;&amp;nbsp; &amp;nbsp; c = random.randint(0,6)&lt;br /&gt;&amp;nbsp; &amp;nbsp; s = random.randint(0,5)&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs.append(t.Turtle())&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].color(colors[c])&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].shape(shapes[s])&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].penup()&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].speed(0)&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].setposition(random.randint(-300, 300), random.randint(-300, 300))&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].right(random.randint(0,360))&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span&gt;#Turtle 객체 p 생성&lt;br /&gt;p = t.Turtle()&lt;br /&gt;#p 객체의 모양을 거북이로 만들기&lt;br /&gt;p.shape(&quot;turtle&quot;)&lt;br /&gt;#p 객체 크기 설정&lt;br /&gt;p.turtlesize(2,2)&lt;br /&gt;#p 객체 색상 설정,&amp;nbsp;&lt;br /&gt;#색상은 색상 이름 또는 색상 코드(#FFFFFF) 등을 이용하여 설정 할 수 있다.&lt;br /&gt;p.color(&quot;blue&quot;)&lt;br /&gt;#거북이를 따라다니는 선을 제거&lt;br /&gt;#p.penup()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#거북이의 움직임 속도&lt;br /&gt;speed = 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;b&gt;#거북이 점수&lt;br /&gt;score = 0&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span&gt;def turnleft():&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.left(30)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;def turnright():&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.right(30)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;def increasespeed():&lt;br /&gt;&amp;nbsp; &amp;nbsp; global speed&lt;br /&gt;&amp;nbsp; &amp;nbsp; speed += 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;def decreasespeed():&lt;br /&gt;&amp;nbsp; &amp;nbsp; global speed&lt;br /&gt;&amp;nbsp; &amp;nbsp; speed -= 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;b&gt;#점수 입력 함수&lt;br /&gt;def setScore(score):&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.undo()&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.penup()&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.hideturtle()&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.setposition(-290, 310)&lt;br /&gt;&amp;nbsp; &amp;nbsp; scorestring = &quot;Score: %s&quot; % score&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.write(scorestring, False, align=&quot;left&quot;, font=(&quot;Arial&quot;, 14, &quot;normal&quot;)) &amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;span&gt;&lt;b&gt;#충돌 확인 함수 &amp;nbsp;&amp;nbsp;&lt;br /&gt;def isCollision(t1, t2):&lt;br /&gt;&amp;nbsp; &amp;nbsp; #수학식에서 두 점 사이의 거리&lt;br /&gt;&amp;nbsp; &amp;nbsp; d = math.sqrt( math.pow(t1.xcor() - t2.xcor(), 2) + math.pow(t1.ycor() - t2.ycor(), 2))&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; if d &amp;lt; 20:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return True&lt;br /&gt;&amp;nbsp; &amp;nbsp; else:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return False&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span&gt;screen.listen()&lt;br /&gt;screen.onkey(turnleft, &quot;Left&quot;)&lt;br /&gt;screen.onkey(turnright, &quot;Right&quot;)&lt;br /&gt;screen.onkey(increasespeed, &quot;Up&quot;)&lt;br /&gt;screen.onkey(decreasespeed, &quot;Down&quot;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span&gt;while True:&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.forward(speed)&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; #울타리 체크&lt;br /&gt;&amp;nbsp; &amp;nbsp; if p.xcor() &amp;gt; 300 or p.xcor() &amp;lt; -300:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p.right(180)&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; if p.ycor() &amp;gt; 300 or p.ycor() &amp;lt; -300:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p.right(180)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; #다수의 벌레 움직이기&lt;br /&gt;&amp;nbsp; &amp;nbsp; for count in range(maxBugs): &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bugs[count].forward(5)&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #울타리 체크&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if bugs[count].xcor() &amp;gt; 300 or bugs[count].xcor() &amp;lt; -300:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bugs[count].right(180)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #soundBounce()&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if bugs[count].ycor() &amp;gt; 300 or bugs[count].ycor() &amp;lt; -300:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bugs[count].right(180) &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;if isCollision(p, bugs[count]):&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #벌레가 먹히면 색상, 모양 변경후 다른 곳으로 이동&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bugs[count].setposition(random.randint(-300, 300), random.randint(-300, 300))&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bugs[count].right(random.randint(0,360))&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; s = random.randint(0,5)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; c = random.randint(0,6)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bugs[count].shape(shapes[s]) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bugs[count].color(colors[c])&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;b&gt;#벌레를 먹었을 때, 점수 1 추가&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; score += 1&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #점수를 표시&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; setScore(score)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DJOKf/btqEdj8WFqp/Kzz2kYnck0HT9TVmJmrhyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DJOKf/btqEdj8WFqp/Kzz2kYnck0HT9TVmJmrhyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DJOKf/btqEdj8WFqp/Kzz2kYnck0HT9TVmJmrhyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDJOKf%2FbtqEdj8WFqp%2FKzz2kYnck0HT9TVmJmrhyK%2Fimg.png&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Turtle Game 7 - 벌레를 먹을때마다 점수 올리기 끝&amp;nbsp;&lt;/span&gt;&lt;/p&gt;</description>
      <category>Turtle 게임 만들기</category>
      <category>Python</category>
      <category>Turtle</category>
      <author>오비티</author>
      <guid isPermaLink="true">https://jbmpa.tistory.com/108</guid>
      <comments>https://jbmpa.tistory.com/108#entry108comment</comments>
      <pubDate>Mon, 18 May 2020 04:17:33 +0900</pubDate>
    </item>
    <item>
      <title>Turtle Game 6 - 벌레 잡아먹기</title>
      <link>https://jbmpa.tistory.com/107</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;Turtle Game 6 - 벌레 잡아먹기&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&lt;b&gt;Turtle Game 6 - 벌레 잡아먹기&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;앞선 강좌에서 거북이와 벌레를 만들어 울타리속에서 움직이도록 만들었다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;이번에는 거북이가 벌레를 잡아먹는 동작을 구현해보도록 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;1. 거북이가 벌레를 잡아먹는 로직&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;거북이가 벌레를 잡아먹는것을 어떻게 표현할까?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;현실적으로 보면 거북이가 벌레를 먹는 것은 입을 벌려 벌레를 입속에 집어 넣는 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Turtle 모듈의 거북이는&amp;nbsp;입도 없고, 입을 벌려서 벌레를 먹는 것을 구현할 수 없다. 그래서 거북이가 벌레를 먹는다는 것은 거북이가 벌레와 만나는 것으로 생각한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdUQWc/btqEepUQ8BW/9EUZ7XX4kMnue22t4nfupK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdUQWc/btqEepUQ8BW/9EUZ7XX4kMnue22t4nfupK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdUQWc/btqEepUQ8BW/9EUZ7XX4kMnue22t4nfupK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcdUQWc%2FbtqEepUQ8BW%2F9EUZ7XX4kMnue22t4nfupK%2Fimg.png&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;그렇다면 거북이와 벌레가 만나는 것은 어떻게 구현할까?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;거북이는 객체이다. 벌레도 객체이다. 두 객체의 위치는 좌표로 나타낼 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;따라서, 두 객체가 만난다는 것을 프로그램적으로 생각하면,&amp;nbsp;&lt;b&gt;움직이는 두 객체의&amp;nbsp;좌표가 같을 때 만났다고 할 수 있다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;하지만, 움직이는 두 객체의 좌표가 일치되기는 힘들다. 특히 우리는 거북이 게임을 통해 거북이가 벌레를 잡아먹는 것을 구현하려고 하는데, 거북이와 벌레의 좌표가 일치되어어야만 벌레를 먹은 것으로 생각한다면 벌레 한마리 잡아먹기가 매우 힘들 것이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;따라서 거북이와 벌레의 좌표가 일치되지는 않더라도&amp;nbsp; 두 객체의 거리가 일정 값 이하가 되면 만났다고 생각하여 거북이가 벌레를 먹은것으로 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;그렇다면 두 객체의 거리는 어떻게 구할 수 있을까?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;두 객체의 거리는 점과 점사이의 거리 또는 좌표간의 거리를 구하는 공식으로 구할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;점과 점사이의 거리 구하는 공식은 다음 링크에서 확인한다.&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://www.jbmpa.com/python_tip/10&quot;&gt;https://www.jbmpa.com/python_tip/10&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;1) 거북이가 벌레의 거리를 통해 벌레를 잡아먹은 효과 구현&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;# for count in range(maxBugs):&amp;nbsp; 구문 안에 입력&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;math&lt;/b&gt;를 사용하기 위해서&amp;nbsp;&lt;b&gt;import math&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;를 추가함&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span&gt;#두 점의 거리 구하기&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;d = math.sqrt( math.pow(p.xcor() - bugs[count].xcor(), 2) + math.pow(p.ycor() - bugs[count].ycor(), 2))&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#두 점과의 거리가 0일때 일치, 서로간의 거리가 20정도 되면 먹은 것으로 생각&lt;br /&gt;if d &amp;lt; 20:&lt;br /&gt;&amp;nbsp; &amp;nbsp; print(&quot;벌레 먹음&quot;)&lt;br /&gt;else:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; #벌레 못 먹음&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; pass&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;전체 코드&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span&gt;import turtle as t&lt;br /&gt;import random&lt;br /&gt;&lt;span&gt;&lt;b&gt;import math&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#스크린 객체 생성&lt;br /&gt;screen = t.Screen()&lt;br /&gt;#스크린 배경색 지정&lt;br /&gt;screen.bgcolor(&quot;lightgreen&quot;)&lt;br /&gt;screen.tracer(2)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#&lt;/span&gt;울타리 그리기&lt;br /&gt;&lt;span&gt;mypen = t.Turtle()&lt;br /&gt;mypen.penup()&lt;br /&gt;mypen.setposition(-300, 300)&lt;br /&gt;mypen.pendown()&lt;br /&gt;mypen.pensize(3)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;for x in range(4):&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.forward(600)&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.right(90)&lt;br /&gt;mypen.hideturtle()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span&gt;#Create bugs&amp;nbsp;&lt;br /&gt;maxBugs = 20&lt;br /&gt;bugs = []&lt;br /&gt;colors = ['red','blue','purple','white','black', 'pink'&lt;/span&gt;,'#FFFF00'&lt;span&gt;]&lt;br /&gt;shapes = ['arrow', 'blank', 'circle', 'classic', 'square', 'triangle']&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;for count in range(maxBugs):&lt;br /&gt;&amp;nbsp; &amp;nbsp; c = random.randint(0,6)&lt;br /&gt;&amp;nbsp; &amp;nbsp; s = random.randint(0,5)&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs.append(t.Turtle())&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].color(colors[c])&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].shape(shapes[s])&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].penup()&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].speed(0)&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].setposition(random.randint(-300, 300), random.randint(-300, 300))&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].right(random.randint(0,360))&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#Turtle 객체 p 생성&lt;br /&gt;p = t.Turtle()&lt;br /&gt;#p 객체의 모양을 거북이로 만들기&lt;br /&gt;p.shape(&quot;turtle&quot;)&lt;br /&gt;#p 객체 크기 설정&lt;br /&gt;p.turtlesize(2,2)&lt;br /&gt;#p 객체 색상 설정,&amp;nbsp;&lt;br /&gt;#색상은 색상 이름 또는 색상 코드(#FFFFFF) 등을 이용하여 설정 할 수 있다.&lt;br /&gt;p.color(&quot;blue&quot;)&lt;br /&gt;#거북이를 따라다니는 선을 제거&lt;br /&gt;#p.penup()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#거북이의 움직임 속도&lt;br /&gt;speed = 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;def turnleft():&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.left(30)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;def turnright():&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.right(30)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;def increasespeed():&lt;br /&gt;&amp;nbsp; &amp;nbsp; global speed&lt;br /&gt;&amp;nbsp; &amp;nbsp; speed += 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;def decreasespeed():&lt;br /&gt;&amp;nbsp; &amp;nbsp; global speed&lt;br /&gt;&amp;nbsp; &amp;nbsp; speed -= 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;screen.listen()&lt;br /&gt;screen.onkey(turnleft, &quot;Left&quot;)&lt;br /&gt;screen.onkey(turnright, &quot;Right&quot;)&lt;br /&gt;screen.onkey(increasespeed, &quot;Up&quot;)&lt;br /&gt;screen.onkey(decreasespeed, &quot;Down&quot;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span&gt;while True:&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.forward(speed)&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; #울타리 체크&lt;br /&gt;&amp;nbsp; &amp;nbsp; if p.xcor() &amp;gt; 300 or p.xcor() &amp;lt; -300:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p.right(180)&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; if p.ycor() &amp;gt; 300 or p.ycor() &amp;lt; -300:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p.right(180)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; #다수의 벌레 움직이기&lt;br /&gt;&amp;nbsp; &amp;nbsp; for count in range(maxBugs): &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bugs[count].forward(5)&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #울타리 체크&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if bugs[count].xcor() &amp;gt; 300 or bugs[count].xcor() &amp;lt; -300:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bugs[count].right(180)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #soundBounce()&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if bugs[count].ycor() &amp;gt; 300 or bugs[count].ycor() &amp;lt; -300:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bugs[count].right(180) &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;b&gt;#두 점의 거리 구하기&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; d = math.sqrt( math.pow(p.xcor() - bugs[count].xcor(), 2) + math.pow(p.ycor() - bugs[count].ycor(), 2))&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #두 점과의 거리가 0일때 일치, 서로간의 거리가 20정도 되면 먹은 것으로 생각&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if d &amp;lt; 20:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(&quot;벌레 먹음&quot;, count)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #벌레 못 먹음&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pass&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;2. 거북이가 벌레를 먹은 이후 동작 구현&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;위에서 거북이가 벌레를 먹은 것을 표현하기 위해 거북이와 벌레가 만났을 때, 즉 두 객체의 좌표간의 거리를 구하여 구현하였다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;보통 게임에서 두 객체의 거리를 구하는 것을 많이 사용하는데, 만난다는 표현보다는 &quot;두 객체의 충돌&quot;이라는 표현을 많이 사용한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;이후에는 우리도 충돌이라는 용어를 사용하도록 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;이번에는 거북이와 벌레가 충돌이후, 다양한 동작들을 구현해보도록 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;1) 거북이와 충돌후 벌레의 위치 옮기기&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;거북이가 벌레를 먹고 난 뒤, 벌레가 계속 움직이면 좌표간의 거리때문에 여러번 먹은 것이 될 수 있다. 따라서 거북이와 벌레가 충돌하면 바로 벌레의 위치를 옮겨보도록 하자.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;벌레의 위치를 옮길 때, 벌레의 모양과 색상도 변경한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;벌레 위치 옮기기&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span&gt;#두 점의 거리 구하기&lt;br /&gt;d = math.sqrt( math.pow(p.xcor() - bugs[count].xcor(), 2) + math.pow(p.ycor() - bugs[count].ycor(), 2))&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#두 점과의 거리가 0일때 일치, 서로간의 거리가 20정도 되면 먹은 것으로 생각&lt;br /&gt;if d &amp;lt; 20:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;#벌레가 먹히면 색상, 모양 변경후 다른 곳으로 이동&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span&gt;bugs[count].setposition(random.randint(-300, 300), random.randint(-300, 300))&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span&gt;bugs[count].right(random.randint(0,360))&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span&gt;s = random.randint(0,5)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span&gt;c = random.randint(0,6)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span&gt;bugs[count].shape(shapes[s]) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&amp;nbsp; &amp;nbsp;&lt;b&gt;&lt;span&gt;bugs[count].color(colors[c])&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;else: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; #벌레 못 먹음&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; pass&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;전체 코드&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span&gt;import turtle as t&lt;br /&gt;import random&lt;br /&gt;import math&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#스크린 객체 생성&lt;br /&gt;screen = t.Screen()&lt;br /&gt;#스크린 배경색 지정&lt;br /&gt;screen.bgcolor(&quot;lightgreen&quot;)&lt;br /&gt;screen.tracer(2)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#&lt;/span&gt;울타리 그리기&lt;br /&gt;&lt;span&gt;mypen = t.Turtle()&lt;br /&gt;mypen.penup()&lt;br /&gt;mypen.setposition(-300, 300)&lt;br /&gt;mypen.pendown()&lt;br /&gt;mypen.pensize(3)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;for x in range(4):&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.forward(600)&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.right(90)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span&gt;mypen.hideturtle()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span&gt;#Create bugs&amp;nbsp;&lt;br /&gt;maxBugs = 20&lt;br /&gt;bugs = []&lt;br /&gt;colors = ['red','blue','purple','white','black', 'pink'&lt;/span&gt;,'#FFFF00'&lt;span&gt;]&lt;br /&gt;shapes = ['arrow', 'blank', 'circle', 'classic', 'square', 'triangle']&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;for count in range(maxBugs):&lt;br /&gt;&amp;nbsp; &amp;nbsp; c = random.randint(0,6)&lt;br /&gt;&amp;nbsp; &amp;nbsp; s = random.randint(0,5)&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs.append(t.Turtle())&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].color(colors[c])&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].shape(shapes[s])&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].penup()&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].speed(0)&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].setposition(random.randint(-300, 300), random.randint(-300, 300))&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].right(random.randint(0,360))&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#Turtle 객체 p 생성&lt;br /&gt;p = t.Turtle()&lt;br /&gt;#p 객체의 모양을 거북이로 만들기&lt;br /&gt;p.shape(&quot;turtle&quot;)&lt;br /&gt;#p 객체 크기 설정&lt;br /&gt;p.turtlesize(2,2)&lt;br /&gt;#p 객체 색상 설정,&amp;nbsp;&lt;br /&gt;#색상은 색상 이름 또는 색상 코드(#FFFFFF) 등을 이용하여 설정 할 수 있다.&lt;br /&gt;p.color(&quot;blue&quot;)&lt;br /&gt;#거북이를 따라다니는 선을 제거&lt;br /&gt;#p.penup()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#거북이의 움직임 속도&lt;br /&gt;speed = 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;def turnleft():&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.left(30)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;def turnright():&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.right(30)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;def increasespeed():&lt;br /&gt;&amp;nbsp; &amp;nbsp; global speed&lt;br /&gt;&amp;nbsp; &amp;nbsp; speed += 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;def decreasespeed():&lt;br /&gt;&amp;nbsp; &amp;nbsp; global speed&lt;br /&gt;&amp;nbsp; &amp;nbsp; speed -= 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;screen.listen()&lt;br /&gt;screen.onkey(turnleft, &quot;Left&quot;)&lt;br /&gt;screen.onkey(turnright, &quot;Right&quot;)&lt;br /&gt;screen.onkey(increasespeed, &quot;Up&quot;)&lt;br /&gt;screen.onkey(decreasespeed, &quot;Down&quot;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span&gt;while True:&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.forward(speed)&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; #울타리 체크&lt;br /&gt;&amp;nbsp; &amp;nbsp; if p.xcor() &amp;gt; 300 or p.xcor() &amp;lt; -300:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p.right(180)&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; if p.ycor() &amp;gt; 300 or p.ycor() &amp;lt; -300:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p.right(180)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; #다수의 벌레 움직이기&lt;br /&gt;&amp;nbsp; &amp;nbsp; for count in range(maxBugs): &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bugs[count].forward(5)&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #울타리 체크&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if bugs[count].xcor() &amp;gt; 300 or bugs[count].xcor() &amp;lt; -300:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bugs[count].right(180)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #soundBounce()&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if bugs[count].ycor() &amp;gt; 300 or bugs[count].ycor() &amp;lt; -300:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bugs[count].right(180) &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;b&gt;#두 점의 거리 구하기&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; d = math.sqrt( math.pow(p.xcor() - bugs[count].xcor(), 2) + math.pow(p.ycor() - bugs[count].ycor(), 2))&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #두 점과의 거리가 0일때 일치, 서로간의 거리가 20정도 되면 먹은 것으로 생각&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if d &amp;lt; 20:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #벌레가 먹히면 색상, 모양 변경후 다른 곳으로 이동&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bugs[count].setposition(random.randint(-300, 300), random.randint(-300, 300))&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bugs[count].right(random.randint(0,360))&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; s = random.randint(0,5)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; c = random.randint(0,6)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bugs[count].shape(shapes[s]) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bugs[count].color(colors[c])&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #벌레 못 먹음&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pass&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;실행 결과 - 거북이가 벌레를 먹으면 벌레는 다른 모양과 색상으로 변경되어 다른 곳에서 나타난다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ukqgx/btqEcS4K726/KzTIQTYykCO3n10mXJrMk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ukqgx/btqEcS4K726/KzTIQTYykCO3n10mXJrMk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ukqgx/btqEcS4K726/KzTIQTYykCO3n10mXJrMk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fukqgx%2FbtqEcS4K726%2FKzTIQTYykCO3n10mXJrMk1%2Fimg.png&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Turtle Game 6 - 벌레 잡아먹기 끝&lt;/span&gt;&lt;/p&gt;</description>
      <category>Turtle 게임 만들기</category>
      <category>Python</category>
      <category>Turtle</category>
      <author>오비티</author>
      <guid isPermaLink="true">https://jbmpa.tistory.com/107</guid>
      <comments>https://jbmpa.tistory.com/107#entry107comment</comments>
      <pubDate>Mon, 18 May 2020 04:16:52 +0900</pubDate>
    </item>
    <item>
      <title>Turtle Game 5 - 벌레 생성</title>
      <link>https://jbmpa.tistory.com/106</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;Turtle Game 5 - 벌레 생성&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&lt;b&gt;Turtle Game 5 - 벌레 생성&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;앞선 강좌에서 거북이와 울타리를 생성해서 거북이가 울타리 밖으로 나가지 못하는 코드를 구현하였다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;이제 거북이가 돌아다니면서 먹을 먹이(벌레)들을 생성하는 코드를 추가해 보자.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;1. 벌레 생성&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;벌레도 거북이와 같은 방법으로 Turtle() 객체로 생성할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;벌레를 생성하는 코드는 아래와 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;1) 벌레 생성 코드&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;bug = t.Turtle()&lt;br /&gt;bug .color(&quot;red&quot;)&lt;br /&gt;bug .shape(&quot;circle&quot;)&lt;br /&gt;bug .penup()&lt;br /&gt;bug .speed(0)&lt;br /&gt;bug .setposition(-100, -100)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;벌레 역시 거북이처럼 울타리 안에서 지속적으로 움직이게 만들어보자. 아래의 코드는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;while True:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;구문 속에 들어가야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;2) 벌레 동작 코드&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span&gt;bug.forward(5)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;if bug .xcor() &amp;gt; 300 or bug .xcor() &amp;lt; -300:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bug .right(180)&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; if bug .ycor() &amp;gt; 300 or bug .ycor() &amp;lt; -300:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bug .right(180)&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;전체 코드&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;- 이전 강좌의 코드에서 추가되거나 수정된 것은 붉은색으로 표시하였다.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span&gt;import turtle as t&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#스크린 객체 생성&lt;br /&gt;screen = t.Screen()&lt;br /&gt;#스크린 배경색 지정&lt;br /&gt;screen.bgcolor(&quot;lightgreen&quot;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#울타리 그리기&lt;br /&gt;mypen = t.Turtle()&lt;br /&gt;mypen.penup()&lt;br /&gt;mypen.setposition(-300, 300)&lt;br /&gt;mypen.pendown()&lt;br /&gt;mypen.pensize(3)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;for x in range(4):&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.forward(600)&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.right(90)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span&gt;mypen.hideturtle()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;b&gt;bug = t.Turtle()&lt;br /&gt;bug .color(&quot;red&quot;)&lt;br /&gt;bug .shape(&quot;circle&quot;)&lt;br /&gt;bug .penup()&lt;br /&gt;bug .speed(0)&lt;br /&gt;bug .setposition(-100, -100)&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#Turtle 객체 p 생성&lt;br /&gt;p = t.Turtle()&lt;br /&gt;#p 객체의 모양을 거북이로 만들기&lt;br /&gt;p.shape(&quot;turtle&quot;)&lt;br /&gt;#p 객체 크기 설정&lt;br /&gt;p.turtlesize(2,2)&lt;br /&gt;#p 객체 색상 설정,&amp;nbsp;&lt;br /&gt;#색상은 색상 이름 또는 색상 코드(#FFFFFF) 등을 이용하여 설정 할 수 있다.&lt;br /&gt;p.color(&quot;blue&quot;)&lt;br /&gt;#거북이를 따라다니는 선을 제거&lt;br /&gt;#p.penup()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#거북이의 움직임 속도&lt;br /&gt;speed = 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;def turnleft():&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.left(30)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;def turnright():&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.right(30)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;def increasespeed():&lt;br /&gt;&amp;nbsp; &amp;nbsp; global speed&lt;br /&gt;&amp;nbsp; &amp;nbsp; speed += 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;def decreasespeed():&lt;br /&gt;&amp;nbsp; &amp;nbsp; global speed&lt;br /&gt;&amp;nbsp; &amp;nbsp; speed -= 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;screen.listen()&lt;br /&gt;screen.onkey(turnleft, &quot;Left&quot;)&lt;br /&gt;screen.onkey(turnright, &quot;Right&quot;)&lt;br /&gt;screen.onkey(increasespeed, &quot;Up&quot;)&lt;br /&gt;screen.onkey(decreasespeed, &quot;Down&quot;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span&gt;while True:&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.forward(speed)&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; #울타리 체크&lt;br /&gt;&amp;nbsp; &amp;nbsp; if p.xcor() &amp;gt; 300 or p.xcor() &amp;lt; -300:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p.right(180)&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; if p.ycor() &amp;gt; 300 or p.ycor() &amp;lt; -300:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p.right(180)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; bug.forward(5)&lt;br /&gt;&amp;nbsp; &amp;nbsp; if bug.xcor() &amp;gt; 300 or bug.xcor() &amp;lt; -300:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bug.right(180)&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; if bug.ycor() &amp;gt; 300 or bug.ycor() &amp;lt; -300:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bug.right(180)&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;실행화면 - Ctrl + F11&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/okVZ1/btqEcUatVfB/rOlvn18IKSsGZunrAeilF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/okVZ1/btqEcUatVfB/rOlvn18IKSsGZunrAeilF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/okVZ1/btqEcUatVfB/rOlvn18IKSsGZunrAeilF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FokVZ1%2FbtqEcUatVfB%2FrOlvn18IKSsGZunrAeilF1%2Fimg.png&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;2. 다수의 벌레 생성&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;1번에서 벌레 한마리를 생성해서 울타리 안에서 계속 움직이는 코드를 추가하였다. 이번에는 벌레 1마리가 아니라 여러마리를 만들어서 제각각 움직이는 코드를 만들어보자.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;벌레는 생성하는 코드는 모두 같다. 다만 여러마리의 벌레를 만들기 위해서 벌레 객체를 리스트로 만든다. 나머지는 동일하다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;생성되는 벌레는 색상과 모양을 다양하게 만들도록 해보자.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;1) 다수의 벌레 생성 코드&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span&gt;#벌레의 갯수 지정&lt;br /&gt;maxBugs = 20&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#벌레 리스트 생성&lt;br /&gt;bugs = []&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#벌레의 다양한 색상을 위해 색상 리스트 생성&lt;br /&gt;colors = [&lt;span&gt;'red','blue','purple','white','black', 'pink','#FFFF00'&lt;/span&gt;]&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#벌레의 다양한 모양을 위해 shape 리스트 생성&lt;br /&gt;shapes = [&lt;span&gt;'arrow', 'blank', 'circle', 'classic', 'square', 'triangle'&lt;/span&gt;]&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;b&gt;for&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;count&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;b&gt;in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;range(maxBugs):&lt;br /&gt;&amp;nbsp; &amp;nbsp; #색상을 랜덤하게 선택&lt;br /&gt;&amp;nbsp; &amp;nbsp; c =&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;random.randint(0,6)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; #모양을 랜덤하게 선택&lt;br /&gt;&amp;nbsp; &amp;nbsp; s =&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;random.randint(0,5)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; #Turtle()객체를 생성하여&amp;nbsp;bugs 리스트에 하나씩 추가&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs.&lt;b&gt;append&lt;/b&gt;(t.Turtle())&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].&lt;b&gt;color&lt;/b&gt;(colors[c])&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].&lt;b&gt;shape&lt;/b&gt;(shapes[s])&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].&lt;b&gt;penup&lt;/b&gt;()&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].&lt;b&gt;speed&lt;/b&gt;(0)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; #X좌표, Y좌표를 랜덤으로 생성해서 위치를 이동&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].&lt;b&gt;setposition&lt;/b&gt;(random.randint(-300, 300), random.randint(-300, 300))&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; #0 ~ 360도까지 방향을 랜덤으로 생성&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].&lt;b&gt;right&lt;/b&gt;(random.randint(0,360))&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;random.randint(1, 100)&lt;/b&gt;은 1에서 100까지의 정수를 랜덤으로 반환한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;random 모듈을 사용하기 위해서는 random 모듈을 import 하여야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;random 함수에 대한 내용은 다음&amp;nbsp;링크의 7번에서 확인한다.&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://www.jbmpa.com/python_basic/13&quot;&gt;https://www.jbmpa.com/python_basic/13&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;2) 벌레 동작 코드&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;리스트로 만들어진 벌레 역시 모두 움직이도록 한다.&amp;nbsp; 벌레가 리스트이므로 벌레 숫자만큼 for 문을 이용하여 움직이는 코드를 만든다.&amp;nbsp;아래의 코드는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;while True:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;구문 속에 들어가야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;#벌레 움직이기&amp;nbsp;&lt;br /&gt;for count in range(maxBugs): &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].forward(5)&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; if bugs[count].xcor() &amp;gt; 300 or bugs[count].xcor() &amp;lt; -300:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bugs[count].right(180)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;if bugs[count].ycor() &amp;gt; 300 or bugs[count].ycor() &amp;lt; -300:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bugs[count].right(180) &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;최종 전체코드&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span&gt;import turtle as t&lt;br /&gt;&lt;span&gt;&lt;b&gt;import random&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#스크린 객체 생성&lt;br /&gt;screen = t.Screen()&lt;br /&gt;#스크린 배경색 지정&lt;br /&gt;screen.bgcolor(&quot;lightgreen&quot;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#스크린의&amp;nbsp;그래픽 그리는 속도를 높임&amp;nbsp;&lt;br /&gt;&lt;span&gt;&lt;b&gt;screen.tracer(2)&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#울타리 그리기&lt;br /&gt;mypen = t.Turtle()&lt;br /&gt;mypen.penup()&lt;br /&gt;mypen.setposition(-300, 300)&lt;br /&gt;mypen.pendown()&lt;br /&gt;mypen.pensize(3)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;for x in range(4):&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.forward(600)&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.right(90)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span&gt;mypen.hideturtle()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;b&gt;#Create bugs&amp;nbsp;&lt;br /&gt;maxBugs = 20&lt;br /&gt;bugs = []&lt;br /&gt;colors = ['red','blue','purple','white','black', 'pink','#FFFF00']&lt;br /&gt;shapes = ['arrow', 'blank', 'circle', 'classic', 'square', 'triangle']&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;b&gt;for count in range(maxBugs):&lt;br /&gt;&amp;nbsp; &amp;nbsp; c = random.randint(0,6)&lt;br /&gt;&amp;nbsp; &amp;nbsp; s = random.randint(0,5)&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs.append(t.Turtle())&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].color(colors[c])&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].shape(shapes[s])&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].penup()&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].speed(0)&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].setposition(random.randint(-300, 300), random.randint(-300, 300))&lt;br /&gt;&amp;nbsp; &amp;nbsp; bugs[count].right(random.randint(0,360))&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#Turtle 객체 p 생성&lt;br /&gt;p = t.Turtle()&lt;br /&gt;#p 객체의 모양을 거북이로 만들기&lt;br /&gt;p.shape(&quot;turtle&quot;)&lt;br /&gt;#p 객체 크기 설정&lt;br /&gt;p.turtlesize(2,2)&lt;br /&gt;#p 객체 색상 설정,&amp;nbsp;&lt;br /&gt;#색상은 색상 이름 또는 색상 코드(#FFFFFF) 등을 이용하여 설정 할 수 있다.&lt;br /&gt;p.color(&quot;blue&quot;)&lt;br /&gt;#거북이를 따라다니는 선을 제거&lt;br /&gt;#p.penup()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#거북이의 움직임 속도&lt;br /&gt;speed = 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;def turnleft():&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.left(30)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;def turnright():&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.right(30)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;def increasespeed():&lt;br /&gt;&amp;nbsp; &amp;nbsp; global speed&lt;br /&gt;&amp;nbsp; &amp;nbsp; speed += 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;def decreasespeed():&lt;br /&gt;&amp;nbsp; &amp;nbsp; global speed&lt;br /&gt;&amp;nbsp; &amp;nbsp; speed -= 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;screen.listen()&lt;br /&gt;screen.onkey(turnleft, &quot;Left&quot;)&lt;br /&gt;screen.onkey(turnright, &quot;Right&quot;)&lt;br /&gt;screen.onkey(increasespeed, &quot;Up&quot;)&lt;br /&gt;screen.onkey(decreasespeed, &quot;Down&quot;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span&gt;while True:&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.forward(speed)&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; #울타리 체크&lt;br /&gt;&amp;nbsp; &amp;nbsp; if p.xcor() &amp;gt; 300 or p.xcor() &amp;lt; -300:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p.right(180)&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; if p.ycor() &amp;gt; 300 or p.ycor() &amp;lt; -300:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p.right(180)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; #다수의 벌레 움직이기&lt;br /&gt;&amp;nbsp; &amp;nbsp; for count in range(maxBugs): &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bugs[count].forward(5)&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #울타리 체크&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if bugs[count].xcor() &amp;gt; 300 or bugs[count].xcor() &amp;lt; -300:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bugs[count].right(180)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #soundBounce()&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if bugs[count].ycor() &amp;gt; 300 or bugs[count].ycor() &amp;lt; -300:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bugs[count].right(180)&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;다수의 거북이 객체가 생성되면 속도가 느려진다.&amp;nbsp;&lt;span&gt;&lt;b&gt;screen.tracer(2)&lt;/b&gt;&lt;/span&gt;를 추가하여 그래픽에서 그림을 그리는 속도를 높이면 속도가 빨라진다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;실행화면 - Ctrl + F11&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sJ23q/btqEepUQ8qw/ggvA4JEvNAMDikiXMBczy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sJ23q/btqEepUQ8qw/ggvA4JEvNAMDikiXMBczy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sJ23q/btqEepUQ8qw/ggvA4JEvNAMDikiXMBczy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsJ23q%2FbtqEepUQ8qw%2FggvA4JEvNAMDikiXMBczy0%2Fimg.png&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Turtle Game 5 - 벌레 생성 끝&lt;/span&gt;&lt;/p&gt;</description>
      <category>Turtle 게임 만들기</category>
      <category>Python</category>
      <category>Turtle</category>
      <author>오비티</author>
      <guid isPermaLink="true">https://jbmpa.tistory.com/106</guid>
      <comments>https://jbmpa.tistory.com/106#entry106comment</comments>
      <pubDate>Mon, 18 May 2020 04:16:12 +0900</pubDate>
    </item>
    <item>
      <title>Turtle Game 4 - 울타리 안에서 못 벗어나게 하기</title>
      <link>https://jbmpa.tistory.com/105</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;Turtle Game 4 - 울타리 안에서 못 벗어나게 하기&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&lt;b&gt;Turtle Game 4 - 울타리 안에서 못 벗어나게 하기&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;앞선 강좌에서 화면 안에 울타리를 그려보았다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;하지만 여전히 거북이는 울타리 밖으로 나갈 수 있다. 이번에는 거북이가 울타리 밖으로 나가지 못하도록 하는 코드를 추가해 본다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;1. 울타리의 개념&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;저번 강좌에서 그린 울타리는 한 좌표에서 다른 좌표로 선을 그린 것 뿐이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;이 선을 구성하는 것은 각 점이며, 각 점은 좌표를 가진다. 아래 그림을 보자.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0lAWK/btqEfrq8DHY/h1nqQmO0Smc5m4vqTDoLgk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0lAWK/btqEfrq8DHY/h1nqQmO0Smc5m4vqTDoLgk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0lAWK/btqEfrq8DHY/h1nqQmO0Smc5m4vqTDoLgk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0lAWK%2FbtqEfrq8DHY%2Fh1nqQmO0Smc5m4vqTDoLgk%2Fimg.png&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;오른쪽 울타리 - 검은색 선을 생각해본다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;오른쪽 울타리는 오른쪽 위(300, 300)에서 오른쪽 아래(300, -300)까지 이어진 선이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;그리고 이 선을 4등분하여 나오는 점을 표시하면,&amp;nbsp;위쪽에서 아래쪽으로 각 점의 좌표는 아래와 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;(&lt;b&gt;300&lt;/b&gt;, 300)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;(&lt;b&gt;300&lt;/b&gt;, 150)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;(&lt;b&gt;300&lt;/b&gt;, 0)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;(&lt;b&gt;300&lt;/b&gt;, -150)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;(&lt;b&gt;300&lt;/b&gt;, -300)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;좌표 값을 보면 X축의 값은&amp;nbsp;300으로 고정되어 있고, Y축의 값만 변한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;따라서 오른쪽 울타리(검은색 선)는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;X축의 값이 300&lt;/b&gt;이고&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Y축의 값은 300 ~ -300&lt;/b&gt;인 점의 모임이라고 할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;같은 방식으로 왼쪽 울타리는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;X축의 값이 -300&lt;/b&gt;이고,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Y축의 값이 300 ~ -300&lt;/b&gt;인 점의 모임이 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;2. 거북이와 울타리의 관계&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;우리의 주인공 거북이는 화면 내에서 어디든지 돌아다닐 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;우리의 목표는 이 거북이가 울타리 밖으로 못 나가게 하는 것이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;거북이를 울타리 밖으로 못나가게 한다&lt;/b&gt;는 것을 프로그램적으로 말하면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;b&gt;거북이가 울타리로 그려진 선의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;좌표&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;를 넘지 못하게 한다&lt;/b&gt;&lt;/span&gt;는 것이 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;1번의 그림에서 나오는 오른쪽 울타리를 생각해보자. 이 오른쪽 울타리의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;X좌표 값은 300&lt;/b&gt;이다. Y축의 좌표 값이 얼마가 되던, 오른쪽 울타리의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;X좌표 값은 300으로 고정&lt;/b&gt;되어 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;이 것을 이용하며 생각해보면,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;거북이가 오른쪽 울타리를 넘지 않는다&lt;/b&gt;는 것은 결국&amp;nbsp;&lt;span&gt;&lt;b&gt;거북이의 X좌표가 300이상 넘어가지 못하게 한다&lt;/b&gt;&lt;/span&gt;는것이 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;Turtle 객체의 좌표(coordinates)&lt;/b&gt;는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;xcor()&lt;/b&gt;와&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;ycor()&lt;/b&gt;메서드로 구할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;즉, 거북이의 X좌표값은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;p.xcor()&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;이며, Y좌표 값은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;p.ycor()&lt;/b&gt;가 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;3. 거북이를 울타리 안에 가두기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;1번과 2번의 로직에서 거북이와 울타리의 관계를 알아내었다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;이제 거북이를 울타리 밖으로 나가지 못하는 코드를 작성해보자.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;1) 오른쪽 울타리 못 넘게 하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;거북이의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;X좌표&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;값은&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;p.xcor()&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;오른쪽 울타리의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;X좌표&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;값은&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;300&lt;/b&gt;이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;따라서 거북이의 X좌표값이 300보다 크게되면 반대방향으로 방향을 회전하게 만든다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;if p.xcor() &amp;gt; 300:&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; p.right(180)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;2) 왼쪽 울타리 못 넘게 하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;왼&lt;/span&gt;&lt;span&gt;쪽 울타리의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;X좌표&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;값은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;-300&lt;/b&gt;이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;따라서 거북이의 X좌표값이 -300보다 작게되면&amp;nbsp;반대방향으로 방향을 회전하게 만든다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;if p.xcor() &amp;lt;&amp;nbsp;-300:&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; p.right(180)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;3) 위쪽 울타리 못 넘게 하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;거북이의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Y좌표&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;값은&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;p.ycor()&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;위쪽 울타리의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Y좌표&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;값은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;300&lt;/b&gt;이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;따라서 거북이의 Y좌표값이 300보다 크게되면&amp;nbsp;반대방향으로 방향을 회전하게 만든다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;if y.xcor() &amp;gt;&amp;nbsp;300:&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; p.right(180)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;4) 아래쪽 울타리 못 넘게 하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;아래쪽 울타리의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Y좌표&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;값은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;-300&lt;/b&gt;이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;따라서 거북이의 Y좌표값이 -300보다 작게되면&amp;nbsp;반대방향으로 방향을 회전하게 만든다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;if y.xcor() &amp;lt;&amp;nbsp;-300:&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; p.right(180)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;1), 2)&lt;/b&gt;번 코드를 합치고,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;3) 4)&lt;/b&gt;번 코드를 합치면 아래와 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;if p.xcor() &amp;gt; 300 or p.xcor() &amp;lt; -300:&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.right(180)&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;if p.ycor() &amp;gt; 300 or p.ycor() &amp;lt; -300:&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.right(180)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;매우 긴 설명(?)에 비해 코드는 매우 단순하다. 좌표와 선과의 관계 개념을 정확하게 이해하기 위한 긴 설명이라 생각하자~&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;이제 이전에 작성했던 코드에 추가해본다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;울타리를 넘지 못하게 하는 코드는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;while True:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;구문 안에 존재해야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;완성된 코드를 추가한 전체 코드는 아래와 같다.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;import&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;turtle&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;as&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;t&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#스크린 객체 생성&lt;br /&gt;screen = t.Screen()&lt;br /&gt;#스크린 배경색 지정&lt;br /&gt;screen.bgcolor(&lt;span&gt;&quot;lightgreen&quot;&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#울타리 그리기&lt;br /&gt;mypen = t.Turtle()&lt;br /&gt;mypen.penup()&lt;br /&gt;mypen.setposition(-300, 300)&lt;br /&gt;mypen.pendown()&lt;br /&gt;mypen.pensize(3)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;for&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;x&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;range(4):&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.forward(600)&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.right(90)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span&gt;mypen.hideturtle()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#Turtle 객체 p 생성&lt;br /&gt;p = t.Turtle()&lt;br /&gt;#p 객체의 모양을 거북이로 만들기&lt;br /&gt;p.shape(&lt;span&gt;&quot;turtle&quot;&lt;/span&gt;)&lt;br /&gt;#p 객체 크기 설정&lt;br /&gt;p.turtlesize(2,2)&lt;br /&gt;#p 객체 색상 설정,&amp;nbsp;&lt;br /&gt;#색상은 색상 이름 또는 색상 코드(#FFFFFF) 등을 이용하여 설정 할 수 있다.&lt;br /&gt;p.color(&lt;span&gt;&quot;blue&quot;&lt;/span&gt;)&lt;br /&gt;#거북이를 따라다니는 선을 제거&lt;br /&gt;p.penup()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#거북이의 움직임 속도&lt;br /&gt;speed = 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;def&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;turnleft():&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.left(30)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;def&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;turnright():&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.right(30)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;def&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;increasespeed():&lt;br /&gt;&amp;nbsp; &amp;nbsp; global speed&lt;br /&gt;&amp;nbsp; &amp;nbsp; speed += 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;def&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;decreasespeed():&lt;br /&gt;&amp;nbsp; &amp;nbsp; global speed&lt;br /&gt;&amp;nbsp; &amp;nbsp; speed -= 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;screen.listen()&lt;br /&gt;screen.onkey(turnleft,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&quot;Left&quot;&lt;/span&gt;)&lt;br /&gt;screen.onkey(turnright,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&quot;Right&quot;&lt;/span&gt;)&lt;br /&gt;screen.onkey(increasespeed,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&quot;Up&quot;&lt;/span&gt;)&lt;br /&gt;screen.onkey(decreasespeed,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&quot;Down&quot;&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;while True&lt;/span&gt;:&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.forward(speed)&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; #울타리 체크&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;b&gt;if p.xcor() &amp;gt; 300 or p.xcor() &amp;lt; -300:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p.right(180)&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; if p.ycor() &amp;gt; 300 or p.ycor() &amp;lt; -300:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p.right(180)&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;실행 결과&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;# 방향키를 이용하여 거북이를 마음대로 움직여 보자.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;# 아래 캡쳐된 이미지는 울타리 밖으로 나가지 못하는 것을 보여주기 위해 거북이의&amp;nbsp;penup()을 주석처리하여 실행한&amp;nbsp;결과이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/s7mXK/btqEdw1eU6w/6rot9jpVNkW5wKNKtCBfvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/s7mXK/btqEdw1eU6w/6rot9jpVNkW5wKNKtCBfvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/s7mXK/btqEdw1eU6w/6rot9jpVNkW5wKNKtCBfvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fs7mXK%2FbtqEdw1eU6w%2F6rot9jpVNkW5wKNKtCBfvK%2Fimg.png&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Turtle Game 4 - 울타리 안에서 못 벗어나게 하기 끝&lt;/span&gt;&lt;/p&gt;</description>
      <category>Turtle 게임 만들기</category>
      <category>Python</category>
      <category>Turtle</category>
      <author>오비티</author>
      <guid isPermaLink="true">https://jbmpa.tistory.com/105</guid>
      <comments>https://jbmpa.tistory.com/105#entry105comment</comments>
      <pubDate>Mon, 18 May 2020 04:15:25 +0900</pubDate>
    </item>
    <item>
      <title>Turtle Game 3 - 울타리 만들기</title>
      <link>https://jbmpa.tistory.com/104</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;Turtle Game 3 - 울타리 만들기&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&lt;b&gt;Turtle Game 3 - 울타리 만들기&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;앞선 강좌에서 거북이의 방향과 속도를 제어하는 것을 구현하였다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;하지만 여전히 거북이는 화면 밖으로 벗어날 수 있고, 화면을 벗어난 거북이는&amp;nbsp;어디에 있는지 찾기가 힘들어진다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;따라서 화면(window) 안에 울타리를 만들고, 울타리 밖으로 벗어나지 못하게 하는 코드를 추가해본다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;1.&amp;nbsp;울타리&amp;nbsp;만들기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Turtle 모듈에서 Turtle 객체가 생성되는 지점은 정 가운데이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;좌표로써 말하면 정 가운데의 X, Y 좌표값이&amp;nbsp;(0, 0)인&amp;nbsp;지점이 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cMyQYW/btqEcnxn8oq/oZHMwtQIUsUL4HjX3juzx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cMyQYW/btqEcnxn8oq/oZHMwtQIUsUL4HjX3juzx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cMyQYW/btqEcnxn8oq/oZHMwtQIUsUL4HjX3juzx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcMyQYW%2FbtqEcnxn8oq%2FoZHMwtQIUsUL4HjX3juzx0%2Fimg.png&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;※ 좌표에 대한 예제는 다음 링크에서 확인한다.&amp;nbsp;&lt;a href=&quot;https://www.jbmpa.com/python_tip/10&quot;&gt;https://www.jbmpa.com/python_tip/10&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;만약 생성된 화면안에 울타리를 만든다고 한다면, 아래&amp;nbsp;그림의 파란색 라인처럼 생각할 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eab6Dp/btqEd8lwiv3/rs4xx9giRWBC8k2t3e8SMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eab6Dp/btqEd8lwiv3/rs4xx9giRWBC8k2t3e8SMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eab6Dp/btqEd8lwiv3/rs4xx9giRWBC8k2t3e8SMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Feab6Dp%2FbtqEd8lwiv3%2Frs4xx9giRWBC8k2t3e8SMk%2Fimg.png&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;파란색 라인의 각&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;모서리&lt;/b&gt;의 좌표는 각각 다음과 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;왼쪽 위 ( -300, 300)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;오른쪽 위 (300,300)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;오른쪽 아래 (300, -300)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;왼쪽 아래 (-300, -300)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;위의 좌표를 생각하면서, Turtle 모듈을 이용해서 사각형을 만드는 방법을 전체적으로 구상해보면 다음과 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;1)&amp;nbsp;Turtle 객체 mypen을&amp;nbsp;한 개 생성한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;2)&amp;nbsp;mypen의 최초 위치는 (0,0) 이므로, 왼쪽 위(-300, 300)로 이동 시켜준다.'&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;3) 왼쪽 위로 이동할 때, 선이 그려지면 안되므로 이동하기전에 penup()을 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;4) 왼쪽 위로 이동하였으면, 오른쪽 위(300, 300)까지 이동한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;5) 오른쪽 위로 이동할때는 선이 그려져야 하므로, pendown()을 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;6) 이동 거리는 300 + 300 이므로 600이 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;7) 오른쪽 위에 도달하였으면, 아래로 선을 그어야 한다. Turtle 객체는 기본적으로 오른쪽으로 향하고 있기 때문에 아래로 방향을 바꾸려면 오른쪽으로 90도 회전하면 된다. 따라서 right(90)을 해준다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;8) 오른쪽 위에서 오른쪽 아래로 이동한다. 이동 거리는 600이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;9) 오른쪽 아래에 도달하였으면 다시 오른쪽으로 90도 회전(right(90))한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;10) 앞으로 600만큼 이동한다. 방향은 90도를 두번 회전하였기 때문에 오른쪽 방향에서 180도, 즉 왼쪽을 향하게 된다. 따라서 거북이는 왼쪽 아래 모서리로 진행한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;11) 왼쪽 아래에 도달하였으면 다시 오른쪽으로 90도 회전한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;12) 앞으로 600만큼 이동한다. 방향은 위쪽이 되므로 최종도착지점은 왼쪽 위(-300, 300)가 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;위에서 구상한 내용을 코드로 작성해 보자.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;# Turtle 객체를 생성하여 mypen에 저장한다. shape를 지정하지 않으면 기본 값인 &quot;classic&quot;이 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;mypen = t.Turtle()&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;# 왼쪽 위로 이동하기 위해서 펜을 든다. 중앙에서 왼쪽 위까지 선이 그려지는 것을 방지한다.&lt;br /&gt;&lt;b&gt;mypen.penup()&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;# mypen 객체를 왼쪽 위(-300, 300)으로 이동한다. 객체를 이동시키는 메서드는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;setposition()&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;이다.&lt;br /&gt;&lt;b&gt;mypen.setposition(-300, 300)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;# 왼쪽 위로 이동을 하였으면, 펜을 다시 내린다. 선을 긋기 위함이다.&lt;br /&gt;&lt;b&gt;mypen.pendown()&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;# 펜사이즈를 3으로 한다.&amp;nbsp;&lt;br /&gt;&lt;b&gt;mypen.pensize(3)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;사각형(울타리)을 그리기 위한 과정은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;7)에서 12)까지&lt;/b&gt;의 과정이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;왼쪽 위, 오른쪽 위, 오른쪽 아래. 왼쪽 아래&amp;nbsp;등으로 복잡한 것 같지만 자세히 보면 매우 단순한 것을 알 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;즉,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;앞으로 이동&amp;nbsp;후 방향 회전&lt;/b&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;앞으로 이동 후&amp;nbsp;방향 회전&lt;/b&gt;이 반복된다는 것을 알 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;따라서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;앞으로 600만큼 이동, 방향 90도회전을 4번 반복&lt;/b&gt;하는 코드를 작성한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;for x in range(4):&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.forward(600)&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.right(90)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;mypen 객체는 울타리를 그리고 나면 더이상 할 일이 없다. 따라서 mypen 객체의 shape를 안 보이도록 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;mypen.hideturtle()&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;울타리를 만드는 코드는 주인공 거북이보다 먼저 생성되어야 하므로, 거북이를 생성하는 코드&amp;nbsp;위쪽에 추가한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;모든 코드를 종합하면 아래와 같다.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;import&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;turtle&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;as&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;t&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#스크린 객체 생성&lt;br /&gt;screen = t.Screen()&lt;br /&gt;#스크린 배경색 지정&lt;br /&gt;screen.bgcolor(&lt;span&gt;&quot;lightgreen&quot;&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;&lt;span&gt;#Draw border&lt;br /&gt;mypen = t.Turtle()&lt;br /&gt;mypen.penup()&lt;br /&gt;mypen.setposition(-300, 300)&lt;br /&gt;mypen.pendown()&lt;br /&gt;mypen.pensize(3)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;&lt;span&gt;for x in range(4):&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.forward(600)&lt;br /&gt;&amp;nbsp; &amp;nbsp; mypen.right(90)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;&lt;span&gt;mypen.hideturtle()&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#Turtle 객체 p 생성&lt;br /&gt;p = t.Turtle()&lt;br /&gt;#p 객체의 모양을 거북이로 만들기&lt;br /&gt;p.shape(&lt;span&gt;&quot;turtle&quot;&lt;/span&gt;)&lt;br /&gt;#p 객체 크기 설정&lt;br /&gt;p.turtlesize(2,2)&lt;br /&gt;#p 객체 색상 설정,&amp;nbsp;&lt;br /&gt;#색상은 색상 이름 또는 색상 코드(#FFFFFF) 등을 이용하여 설정 할 수 있다.&lt;br /&gt;p.color(&lt;span&gt;&quot;blue&quot;&lt;/span&gt;)&lt;br /&gt;#거북이를 따라다니는 선을 제거&lt;br /&gt;p.penup()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#거북이의 움직임 속도&lt;br /&gt;speed = 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;def&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;turnleft():&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.left(30)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;def&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;turnright():&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.right(30)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;def&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;increasespeed():&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;global&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;speed&lt;br /&gt;&amp;nbsp; &amp;nbsp; speed += 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;def&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;decreasespeed():&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;global&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;speed&lt;br /&gt;&amp;nbsp; &amp;nbsp; speed -= 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;screen.listen()&lt;br /&gt;screen.onkey(turnleft,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&quot;Left&quot;&lt;/span&gt;)&lt;br /&gt;screen.onkey(turnright,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&quot;Right&quot;&lt;/span&gt;)&lt;br /&gt;screen.onkey(increasespeed,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&quot;Up&quot;&lt;/span&gt;)&lt;br /&gt;screen.onkey(decreasespeed,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&quot;Down&quot;&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span&gt;while True:&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.forward(speed)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;실행 결과&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4MLwL/btqEcmrIl9Z/dhayaW3kRDMHEjUBMB0L2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4MLwL/btqEcmrIl9Z/dhayaW3kRDMHEjUBMB0L2K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4MLwL/btqEcmrIl9Z/dhayaW3kRDMHEjUBMB0L2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4MLwL%2FbtqEcmrIl9Z%2FdhayaW3kRDMHEjUBMB0L2K%2Fimg.png&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxSkK4/btqEdxTmwRo/N1FIqFY2vFUDWK92937oQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxSkK4/btqEdxTmwRo/N1FIqFY2vFUDWK92937oQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxSkK4/btqEdxTmwRo/N1FIqFY2vFUDWK92937oQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxSkK4%2FbtqEdxTmwRo%2FN1FIqFY2vFUDWK92937oQ1%2Fimg.png&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3SSVk/btqEd77Zhrm/ZYS6pnVeZitGk7kgdQeEhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3SSVk/btqEd77Zhrm/ZYS6pnVeZitGk7kgdQeEhk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3SSVk/btqEd77Zhrm/ZYS6pnVeZitGk7kgdQeEhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3SSVk%2FbtqEd77Zhrm%2FZYS6pnVeZitGk7kgdQeEhk%2Fimg.png&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BVKET/btqEbPOp357/c6SxntH2PvgCukRtfxWPg0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BVKET/btqEbPOp357/c6SxntH2PvgCukRtfxWPg0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BVKET/btqEbPOp357/c6SxntH2PvgCukRtfxWPg0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBVKET%2FbtqEbPOp357%2Fc6SxntH2PvgCukRtfxWPg0%2Fimg.png&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Turtle Game 3 - 울타리 만들기 끝&lt;/span&gt;&lt;/p&gt;</description>
      <category>Turtle 게임 만들기</category>
      <category>Python</category>
      <category>Turtle</category>
      <author>오비티</author>
      <guid isPermaLink="true">https://jbmpa.tistory.com/104</guid>
      <comments>https://jbmpa.tistory.com/104#entry104comment</comments>
      <pubDate>Mon, 18 May 2020 04:14:45 +0900</pubDate>
    </item>
    <item>
      <title>Turtle Game 2 - Turtle 움직임 제어하기</title>
      <link>https://jbmpa.tistory.com/103</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;Turtle Game 2 - Turtle 움직임 제어하기&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&lt;b&gt;Turtle Game 2 - Turtle 움직임 제어하기&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;앞선 강좌에서 turtle 모듈을 이용하여 거북이를 생성하고 움직이는 것을 구현하였다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;하지만 while 구문에 의해서 거북이는 앞으로만 움직였으며, 화면 밖으로 넘어가서도 여전히 앞으로만 움직이고 있을 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;이제 키보드의 방향키를 이용하여 거북이의 움직임을 제어하는 코드와 거북이의 속도를 제어하는 코드를 추가해본다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;1. 키보드의 입력 대기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Turtle 모듈의 Screen() 객체는 화면(window) 안에서 일어나는 이벤트를 관리한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;따라서 키보드의 입력을 기다리기 위해서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;listen()&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;메서드를 이용하여 키보드의 입력, 즉 키보드 입력 이벤트를 대기하는 코드를 추가한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;screen.listen()&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;2. 키보드 이벤트 제어&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;키보드의 입력 이벤트는 스크린 객체의 onkey() 메서드로 체크할 수 있다. 키보드 입력 이벤트 메서드는 아래와 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;onkey() |&amp;nbsp;onkeyrelease()&lt;/b&gt;&amp;nbsp; - 키보드의 키를 눌렀다가 뗄 때 발생하는 이벤트&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;onkeypress()&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;- 키보드의 키를 누르고 있을 때 발생하는 이벤트&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;추가적으로 마우스 클릭 이벤트에 대한 메서드는 아래와 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;onclick() |&amp;nbsp;onscreenclick()&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;- 마우스를 클릭했을 때 발생하는 이벤트&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;onkey() 이벤트를 사용하기 위해서는 아래와 같은 형태로 사용하면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;screen.onkey(&lt;span&gt;함수&lt;/span&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;키보드의 키 심볼&lt;/span&gt;)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;즉,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span&gt;키보드의 키&lt;/span&gt;&lt;/b&gt;를 눌렀다가 뗄 때,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span&gt;함수&lt;/span&gt;&lt;/b&gt;를 실행시키게 된다. 연결할 함수의 이름만 적어주며 괄호는 넣지 않는다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;3. 방향키를 이용하여 함수 실행&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;키보드 이벤트에 대한 코드를 이해하였다면, 방향키를 이용하여 함수를 실행하는 코드를 작성해본다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;왼쪽 방향키(&amp;larr;) 를 누르면 왼쪽으로, 오른쪽 방향키(&amp;rarr;)를 누르면 오른쪽으로 방향을 변경하는 코드와&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;위(&amp;uarr;), 아래 방향키(&amp;darr;)를 통해 속도를 제어하는 코드를 만들어 본다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;screen.onkey(turnleft,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&quot;Left&quot;&lt;/span&gt;)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;screen.onkey(turnright,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&quot;Right&quot;&lt;/span&gt;)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;screen.onkey(increasespeed,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&quot;Up&quot;&lt;/span&gt;)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;screen.onkey(decreasespeed,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&quot;Down&quot;&lt;/span&gt;)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;왼쪽 방향키의 심볼은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;b&gt;&quot;Left&quot;&lt;/b&gt;&lt;/span&gt;이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;오른쪽 방향키의 심볼은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;b&gt;&quot;Right&quot;&lt;/b&gt;&lt;/span&gt;이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;위쪽 방향키의 심볼은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;b&gt;&quot;Up&quot;&lt;/b&gt;&lt;/span&gt;이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;아래쪽 방향키의 심볼은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;b&gt;&quot;Down&quot;&lt;/b&gt;&lt;/span&gt;이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;자세한 키보드 심볼은 다음 주소에서 확인할 수 있다.&amp;nbsp;&lt;a href=&quot;https://www.jbmpa.com/python_tip/7&quot;&gt;https://www.jbmpa.com/python_tip/7&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;4. 함수 생성&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;키보드 이벤트를 통해서 키보드를 눌렀을 때 실행 할 함수를 만들어본다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;&lt;span&gt;def&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;turnleft&lt;/span&gt;():&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.left(30&lt;span&gt;)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;b&gt;turnleft()&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;함수는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;screen.onkey(&lt;span&gt;turnleft&lt;/span&gt;, &quot;Left&quot;)&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;에서 지정한 함수이다. 즉, 왼쪽 방향키를 눌렀을 때 실행할 함수이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;거북이 객체 p는&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;left()&lt;/b&gt;라는 메서드를 통해서 방향을 변경한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;최초 거북이가 생성되면 거북이는 오른쪽으로 머리를 향하게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;이때,&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;left(&lt;span&gt;각도&lt;/span&gt;)&lt;/b&gt;를 이용하여 거북이를 왼쪽으로 지정한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;b&gt;각도&lt;/b&gt;&lt;/span&gt;만큼 방향을 변경해 줄 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;위의 코드는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span&gt;왼쪽 방향키를 눌렀다가 뗐을 때&lt;/span&gt;&lt;/b&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;왼쪽&lt;/b&gt;으로&amp;nbsp;&lt;b&gt;&lt;span&gt;30도&lt;/span&gt;&lt;/b&gt;만큼 방향을 변경하라는 의미가 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;마찬가지로 오른쪽 방향키를 눌렀을 때, 방향을 변경하는 코드는 아래와 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;&lt;span&gt;def&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;turnright():&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.right(30)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;마지막으로 위&amp;nbsp;방향키(&amp;uarr;)를 눌렀을 때, 거북이의 속도를 높이고, 아래 방향키(&amp;darr;)를 눌렀을 때 거북이의 속도를 낮추는 코드는 아래와 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;speed 변수는 함수 밖에서 선언되었고, 모든 곳에서 사용되어야 하므로 전역변수(global)로 선언하여 사용한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;&lt;span&gt;def&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;increasespeed():&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;global&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;speed&lt;br /&gt;&amp;nbsp; &amp;nbsp; speed += 1&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span&gt;&lt;b&gt;&lt;span&gt;def&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;decreasespeed():&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;global&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;speed&lt;br /&gt;&amp;nbsp; &amp;nbsp; speed -= 1&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;전체코드는 아래와 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;주의할 점은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;while True:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;구문이 가장 마지막에 있어야 한다. 이유는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;while True:&lt;/b&gt;구문을 만나면 무한반복을 하므로,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;while True:&lt;/b&gt;구문 다음이 실행되지 않는다. 따라서 모든 코드는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;while True:&lt;/b&gt;구문 앞에 와야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;turtle&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;as&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;t&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#스크린 객체 생성&lt;br /&gt;screen = t.Screen()&lt;br /&gt;#스크린 배경색 지정&lt;br /&gt;screen.bgcolor(&lt;span&gt;&quot;lightgreen&quot;&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#Turtle 객체 p 생성&lt;br /&gt;p = t.Turtle()&lt;br /&gt;#p 객체의 모양을 거북이로 만들기&lt;br /&gt;p.shape(&quot;&lt;span&gt;turtle&quot;&lt;/span&gt;)&lt;br /&gt;#p 객체 크기 설정&lt;br /&gt;p.turtlesize(2,2)&lt;br /&gt;#p 객체 색상 설정,&amp;nbsp;&lt;br /&gt;#색상은 색상 이름 또는 색상 코드(#FFFFFF) 등을 이용하여 설정 할 수 있다.&lt;br /&gt;p.color(&lt;span&gt;&quot;blue&quot;&lt;/span&gt;)&lt;br /&gt;#거북이를 따라다니는 선을 제거&lt;br /&gt;p.penup()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#거북이의 움직임 속도&lt;br /&gt;speed = 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;def&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;turnleft():&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.left(30)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;def&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;turnright():&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.right(30)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;def&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;increasespeed():&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;global&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;speed&lt;br /&gt;&amp;nbsp; &amp;nbsp; speed += 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;def&amp;nbsp;&lt;/span&gt;decreasespeed():&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;global&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;speed&lt;br /&gt;&amp;nbsp; &amp;nbsp; speed -= 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;screen.listen()&lt;br /&gt;screen.onkey(turnleft,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&quot;Left&quot;&lt;/span&gt;)&lt;br /&gt;screen.onkey(turnright,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&quot;Right&quot;&lt;/span&gt;)&lt;br /&gt;screen.onkey(increasespeed,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&quot;Up&quot;&lt;/span&gt;)&lt;br /&gt;screen.onkey(decreasespeed,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&quot;Down&quot;&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;while True&lt;/span&gt;:&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.forward(speed)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;실행 결과&lt;/p&gt;
&lt;p&gt;# 방향키를 이용하여 거북이의 방향과, 속도를 조절해보자.&lt;/p&gt;
&lt;p&gt;# 아래의 캡쳐된 이미지는 거북이의 움직임을 보여주기 위해서 p.penup() 부분을 주석처리하여&amp;nbsp;실행한 결과이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bB7eFQ/btqEeqlWsrX/f33ZLNAzlUS3KfRNtXiplk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bB7eFQ/btqEeqlWsrX/f33ZLNAzlUS3KfRNtXiplk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bB7eFQ/btqEeqlWsrX/f33ZLNAzlUS3KfRNtXiplk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbB7eFQ%2FbtqEeqlWsrX%2Ff33ZLNAzlUS3KfRNtXiplk%2Fimg.png&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Turtle Game 2 - Turtle 움직임 제어하기 끝&lt;/p&gt;</description>
      <category>Turtle 게임 만들기</category>
      <category>Python</category>
      <category>Turtle</category>
      <author>오비티</author>
      <guid isPermaLink="true">https://jbmpa.tistory.com/103</guid>
      <comments>https://jbmpa.tistory.com/103#entry103comment</comments>
      <pubDate>Mon, 18 May 2020 04:13:59 +0900</pubDate>
    </item>
    <item>
      <title>Turtle Game 1 - Turtle 모듈 사용하기</title>
      <link>https://jbmpa.tistory.com/102</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;Turtle Game 1 - Turtle 모듈 사용하기&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&lt;b&gt;Turtle 모듈 사용하기&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Turtle은 그래픽 환경에서 프로그래밍을 쉽게 배울 수 있도록 파이썬에서 제공하는 모듈이다. Turtle 모듈의 몇 가지 메서드를 익혀서 사용하면 간단하게 게임을 만들 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;기본적으로 사각형, 삼각형, 거북이 모양의 Shape를 이용하여 앞으로, 뒤로 가는 등의 동작을 만들 수 있고, Shape의 이동 궤적을 선으로 그려줌으로써 다양항 도형등을 만들어 낼 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Turtle 모듈의 문서는 아래의 링크에서 모두 확인 할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;a href=&quot;https://docs.python.org/3.7/library/turtle.html&quot;&gt;https://docs.python.org/3.7/library/turtle.html&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;본 강좌에서 사용하는 Turtle Game의 내용은 아래의 유튜브 강좌를 참고하였으며, 본 강좌에서 몇 개의 기능을&amp;nbsp;추가하였다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;영상으로 보고자하면 아래의 링크에서 강좌를 따라가면 된다. 참고로 영어로 된 강좌이나 코드를 보면 쉽게 이해가능 할 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=PTgyzZGknvg&quot;&gt;https://www.youtube.com/watch?v=PTgyzZGknvg&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;Turtle Game 만들기 1&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Turtle 모듈을 사용하기 위해서는 turtle 모듈을 import 하기만 하면된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;아래의 코드를 통해서 간단히 turtle 모듈을 실행해본다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;import&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;turtle&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;as&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;t&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;screen = t.Screen()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;p= t.Turtle()&lt;br /&gt;p.shape(&lt;span&gt;&quot;turtle&quot;&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;screen.mainloop()&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;위의 코드를 입력하고 Ctrl + F11을 눌러 실행하면 아래의 그래픽 화면이 나타나게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brizzq/btqEdjHPBeI/CcUVIga3TP7e14yNEuk9C0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brizzq/btqEdjHPBeI/CcUVIga3TP7e14yNEuk9C0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brizzq/btqEdjHPBeI/CcUVIga3TP7e14yNEuk9C0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbrizzq%2FbtqEdjHPBeI%2FCcUVIga3TP7e14yNEuk9C0%2Fimg.png&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;코드 설명&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;&amp;gt;&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;import&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;turtle as t&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;turtle 모듈을 t 라는 이름으로 import 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;&amp;gt;&amp;gt; screen = t.Screen()&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;t 모듈의 Screen() 객체를 통해 전체 화면을 제어하는 객체를 생성한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Screen() 객체는 화면의 크기, 배경색, 키보드 입출력 이벤트등을 관리한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;&amp;gt;&amp;gt; p = t.Turtle()&lt;br /&gt;&amp;gt;&amp;gt; p.shape(&lt;span&gt;&quot;turtle&quot;&lt;/span&gt;)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;t 모듈의 Turtle() 객체를 이용하여&amp;nbsp;turtle을 생성한다. Turtle 객체는 모양, 모션, 펜, 상태등을 관리한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Turtle() 객체를 통해 생성된 객체를&amp;nbsp;p에 저장하고 나서, p의 모양(shape)을 &quot;turtle&quot;로 설정해준다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;모양(shape)은 다음 7개를 설정해 줄 수 있다. shape()에 아무값도 넣지 않은 default 는 &quot;classic&quot; 이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;&quot;arrow&quot;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;&quot;blank&quot;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;&quot;circle&quot;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;&quot;classic&quot;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;&quot;square&quot;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;&quot;triangle&quot;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;&quot;turtle&quot;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;&amp;gt;&amp;gt; screen.mainloop()&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;메인 화면을 유지시켜주는 역할을 한다. 파이썬의 command&amp;nbsp;prompt는 실행이 모두 되고나면 기본적으로 화면이 꺼진다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;따라서 코드대로 모두 실행후에 화면이 꺼지기 때문에 메인화면을 반복적으로 실행시켜 화면이 꺼지지 않게 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;이후에 다른 코드를 넣고나서 mainloop()가 필요없어질 때 위 코드는 삭제나 주석처리를 하도록 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;1. 화면 배경색, 거북이 색상 변경&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;위의 코드를 이해했으면, 화면의 배경색, 거북이의 색상등을 변경하는 코드를 추가한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;코드에 대한 설명은 주석으로 대신한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;import&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;turtle as t&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#스크린 객체 생성&lt;br /&gt;screen = t.Screen()&lt;br /&gt;#스크린 배경색 지정&lt;br /&gt;screen.&lt;b&gt;bgcolor&lt;/b&gt;(&lt;span&gt;&quot;lightgreen&quot;&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#Turtle 객체 p 생성&lt;br /&gt;p = t.Turtle()&lt;br /&gt;#p 객체의 모양을 거북이로 만들기&lt;br /&gt;p.&lt;b&gt;shape&lt;/b&gt;(&lt;span&gt;'turtle'&lt;/span&gt;)&lt;br /&gt;#p 객체 크기 설정&lt;br /&gt;p.&lt;b&gt;turtlesize&lt;/b&gt;(2,2)&lt;br /&gt;#p 객체 색상 설정,&amp;nbsp;&lt;br /&gt;#색상은 색상 이름 또는 색상 코드(#FFFFFF) 등을 이용하여 설정 할 수 있다.&lt;br /&gt;p.&lt;b&gt;color&lt;/b&gt;&lt;span&gt;(&quot;blue&quot;&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span&gt;screen.&lt;b&gt;mainloop&lt;/b&gt;()&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;실행 결과&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;- 화면 배경색 lightgreen&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;- 거북이 크기 2&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;- 거북이 색상 blue&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfiL86/btqEcUVLMDx/jCkkM0KpUUnMVKZ5bnM6JK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfiL86/btqEcUVLMDx/jCkkM0KpUUnMVKZ5bnM6JK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfiL86/btqEcUVLMDx/jCkkM0KpUUnMVKZ5bnM6JK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfiL86%2FbtqEcUVLMDx%2FjCkkM0KpUUnMVKZ5bnM6JK%2Fimg.png&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;2. 거북이 움직임 생성&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;우리는 거북이를 이용하여 게임을 만들기로 했으므로 정적인 거북이를 동적으로 만들어야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;생성된 거북이를 지속적으로 움직이게 만드는 코드를 넣기 위하여 아래의 코드를 추가한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;while True&lt;/span&gt;:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; p.forward(1)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;생성된 p 객체를 앞으로 움직이게 만드는 메서드는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;forward()&lt;/b&gt;이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;while&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;구문을 이용하여 거북이를 앞으로 계속 움직이게 만든다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;while 구문에 의하여 메인화면이 지속적으로 유지되므로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;screen.mainloop() 코드는 주석처리&lt;/b&gt;나 삭제를 해도 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;수정된 코드&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;import&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;turtle as t&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#스크린 객체 생성&lt;br /&gt;screen = t.Screen()&lt;br /&gt;#스크린 배경색 지정&lt;br /&gt;screen.&lt;b&gt;bgcolor&lt;/b&gt;(&lt;span&gt;&quot;lightgreen&quot;&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#Turtle 객체 p 생성&lt;br /&gt;p = t.Turtle()&lt;br /&gt;#p 객체의 모양을 거북이로 만들기&lt;br /&gt;p.&lt;b&gt;shape&lt;/b&gt;(&lt;span&gt;'turtle'&lt;/span&gt;)&lt;br /&gt;#p 객체 크기 설정&lt;br /&gt;p.&lt;b&gt;turtlesize&lt;/b&gt;(2,2)&lt;br /&gt;#p 객체 색상 설정,&amp;nbsp;&lt;br /&gt;#색상은 색상 이름 또는 색상 코드(#FFFFFF) 등을 이용하여 설정 할 수 있다.&lt;br /&gt;p.&lt;b&gt;color&lt;/b&gt;&lt;span&gt;(&quot;blue&quot;&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;b&gt;while True:&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.forward(1)&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span&gt;#screen.&lt;b&gt;mainloop&lt;/b&gt;()&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;실행 결과&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cP3xms/btqEcTWUrC1/OuuFh1Ud807YTNX1G55I30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cP3xms/btqEcTWUrC1/OuuFh1Ud807YTNX1G55I30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cP3xms/btqEcTWUrC1/OuuFh1Ud807YTNX1G55I30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcP3xms%2FbtqEcTWUrC1%2FOuuFh1Ud807YTNX1G55I30%2Fimg.png&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;실행을 하고 나면 거북이는 앞으로 계속 1칸씩 움직이게 된다. 그리고 화면 밖으로 벗어날 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;거북이의 움직임은 다음에 제어하도록 하고, 우선은 거북이가 움직일때마다 따라나오는 선을 없애보도록 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Turtle 모듈에서 생성된 객체는 기본적으로 자신의 움직임을 선으로 그리게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;선은 pen 메서드로 제어하며,&amp;nbsp; 아래와 같이&amp;nbsp;사용할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;pendown()&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;- 선 그리기, 기본값&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;penup()&lt;/b&gt;&amp;nbsp; - 선 그리지 않기&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;pensize()&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;- 선 크기&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;pencolor()&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;- 선 색상&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;선을 그리거나, 안 그리는 것은 우리가 글씨를 쓸 때 펜을 종이에 붙이는 개념으로 이해하면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;따라서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;pendown()&lt;/b&gt;은 종이에 펜을 대는 것이기 때문에 선이 그려지고,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;penup()&lt;/b&gt;은 펜을 종이에서 떼는 것이기 때문에 선을 그리지 않는다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;따라서 p 객체에&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;penup()&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;메서드를 추가한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;p.penup()&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;그리고 차후에 거북이의 속도를 제어하기 위해서 속도를&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;speed&amp;nbsp;&lt;/b&gt;변수를 이용하여 앞으로 가는 거리, 즉&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;forward()&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;값을 제어한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;전체 코드&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;import&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;turtle as t&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#스크린 객체 생성&lt;br /&gt;screen = t.Screen()&lt;br /&gt;#스크린 배경색 지정&lt;br /&gt;screen.&lt;b&gt;bgcolor&lt;/b&gt;(&lt;span&gt;&quot;lightgreen&quot;&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#Turtle 객체 p 생성&lt;br /&gt;p = t.Turtle()&lt;br /&gt;#p 객체의 모양을 거북이로 만들기&lt;br /&gt;p.&lt;b&gt;shape&lt;/b&gt;(&lt;span&gt;'turtle'&lt;/span&gt;)&lt;br /&gt;#p 객체 크기 설정&lt;br /&gt;p.&lt;b&gt;turtlesize&lt;/b&gt;(2,2)&lt;br /&gt;#p 객체 색상 설정,&amp;nbsp;&lt;br /&gt;#색상은 색상 이름 또는 색상 코드(#FFFFFF) 등을 이용하여 설정 할 수 있다.&lt;br /&gt;p.&lt;b&gt;color&lt;/b&gt;&lt;span&gt;(&quot;blue&quot;&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#거북이를 따라다니는 선을 제거&lt;br /&gt;p.&lt;b&gt;penup&lt;/b&gt;()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#거북이의 움직임 속도&lt;br /&gt;&lt;b&gt;speed&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;= 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;while True:&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; p.&lt;b&gt;forward&lt;/b&gt;(&lt;b&gt;speed&lt;/b&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span&gt;#screen.&lt;b&gt;mainloop&lt;/b&gt;()&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;실행 결과&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HFVgM/btqEcU2B9rn/Y62oekrOWfDpMqBb4RkPB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HFVgM/btqEcU2B9rn/Y62oekrOWfDpMqBb4RkPB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HFVgM/btqEcU2B9rn/Y62oekrOWfDpMqBb4RkPB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHFVgM%2FbtqEcU2B9rn%2FY62oekrOWfDpMqBb4RkPB0%2Fimg.png&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Turtle Game 1 - Turtle 모듈 사용하기 끝&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Turtle 게임 만들기</category>
      <category>Python</category>
      <category>Turtle</category>
      <author>오비티</author>
      <guid isPermaLink="true">https://jbmpa.tistory.com/102</guid>
      <comments>https://jbmpa.tistory.com/102#entry102comment</comments>
      <pubDate>Mon, 18 May 2020 04:13:20 +0900</pubDate>
    </item>
    <item>
      <title>두 개의 점과 점 사이의 거리 구하기</title>
      <link>https://jbmpa.tistory.com/101</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;두 개의 점과 점 사이의 거리 구하기&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&lt;b&gt;점과 점 사이의 거리 구하기&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;프로그래밍으로 2D 그래픽을 처리하려면 반드시 좌표(coordinates)에 대해서 알아야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;일반적으로 좌표는 평면을 상하, 좌우로 선을 긋고 좌우의 선을 X축, 상하의 선을 Y축이라 표현한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;X축과 Y축이 만나는 지점을 0으로 두고,&amp;nbsp;좌표는 (X축의 0점과의 거리, Y축의 0점과의 거리)로 표현된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;X, Y 축 좌표&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rBfv4/btqEcHCnUIj/7KJ3pkXcHRVtEQ4sulZank/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rBfv4/btqEcHCnUIj/7KJ3pkXcHRVtEQ4sulZank/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rBfv4/btqEcHCnUIj/7KJ3pkXcHRVtEQ4sulZank/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrBfv4%2FbtqEcHCnUIj%2F7KJ3pkXcHRVtEQ4sulZank%2Fimg.png&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;위의 좌표 상의 점 P1은 X축으로 2, Y축으로 3인 위치에 존재한다. 또한 P2는 X축으로 4, Y축으로 1인 위치에 존재한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;두 점 사이의 거리를 구해보자.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;우선, 피타고라스의 정리에서 직각을 끼고 있는 변 A, B와 빗변 C와의 관계는 A ** 2 + B ** 2 = C ** 2 와&amp;nbsp;같다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;즉,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;A의 제곱 + B의 제곱 = C의 제곱&lt;/b&gt;이 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;이를 위의 좌표에서 살펴보면 아래와 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wPDVb/btqEep8os5i/Fvf20HEkAjSUPt1LKR7kZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wPDVb/btqEep8os5i/Fvf20HEkAjSUPt1LKR7kZK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wPDVb/btqEep8os5i/Fvf20HEkAjSUPt1LKR7kZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwPDVb%2FbtqEep8os5i%2FFvf20HEkAjSUPt1LKR7kZK%2Fimg.png&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;위의 그림에서 A의 길이는 2, B의 길이는 2이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;이를 수식으로 표현하면 아래와 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;A = P2.X - P1.X&amp;nbsp; = 4 - 2&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;B = P2.Y - P1.Y = 1 - 3&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;피타고라스의 정리에 의해 A와 B는 제곱을 할 것이므로 P1과 P2의 순서는 관계없다. 즉, P1 - P2 건 P2 - P1이건 상관 없다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;파이썬에서 제곱을 만드는 방법은 두가지가 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;1. 연산자로 제곱을 만드는 방법&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; A = P.X ** 2&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;2. 함수로 제곱을 만드는 방법&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; A = math.pow(P.X , 2)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;위의 함수를 이용하여&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;A의 제곱 + B의 제곱&lt;/b&gt;을 구하면 아래와 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;math.pow(P1.X - P2.X , 2) + math.pow(P1.Y - P2.Y , 2)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;이제 C값을 구하면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;하지만&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;C의 제곱이 A의 제곱 + B의 제곱&lt;/b&gt;이므로, 우리가 원하는 점과 점사이의 거리는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;A의 제곱 + B의 제곱&lt;/b&gt;한 결과의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;제곱근(root)&lt;/b&gt;을 구해야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;파이썬에서 root를 구하는 함수는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;math.sqrt&lt;/b&gt;이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;따라서 C는 아래와 같이 구할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;C = math.sqrt(&amp;nbsp;math.pow(P1.X - P2.X , 2) + math.pow(P1.Y - P2.Y , 2) )&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;모든 프로그래밍 공식은 만들어 졌다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;아래의 코드를 통해 실제 적용되는 점과 점 사이의 거리를 구해보자.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;b&gt;import&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;math&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;# 점과 점 사이의 거리 구하는 함수&lt;br /&gt;&lt;span&gt;&lt;b&gt;def&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;distance&lt;/b&gt;(x1, y1, x2, y2):&lt;br /&gt;&amp;nbsp; &amp;nbsp; result = math.sqrt( math.pow(x1 - x2, 2) + math.pow(y1 - y2, 2))&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;result&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span&gt;# 두 점의 좌표를 정한다.&lt;br /&gt;P1 = (4, 1)&lt;br /&gt;P2 = (2, 3)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#함수 호출&lt;br /&gt;d = distance(P1[0], P1[1], P2[0], P2[1])&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;b&gt;print&lt;/b&gt;&lt;/span&gt;(d)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;2.8284271247461903&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7XXho/btqEcGQZPa4/YlKB0A4iNrGwSZKI9tfPx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7XXho/btqEcGQZPa4/YlKB0A4iNrGwSZKI9tfPx1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7XXho/btqEcGQZPa4/YlKB0A4iNrGwSZKI9tfPx1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7XXho%2FbtqEcGQZPa4%2FYlKB0A4iNrGwSZKI9tfPx1%2Fimg.png&quot; width=&quot;600&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;점과 점사이의 거리를 2차원 평면상에서 두 개의 객체의 거리라 생각할 수 있다. 따라서 이는 객체 사이의 거리를 계산하는 매우 중요한 방법 중 하나이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;간단한 게임을 만들면서 이를 실제 이용해 보도록 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>파이썬 팁</category>
      <category>Python</category>
      <category>거리구하기</category>
      <category>점과점</category>
      <author>오비티</author>
      <guid isPermaLink="true">https://jbmpa.tistory.com/101</guid>
      <comments>https://jbmpa.tistory.com/101#entry101comment</comments>
      <pubDate>Mon, 18 May 2020 04:12:15 +0900</pubDate>
    </item>
    <item>
      <title>현재 시간과 지난 시간 표시하기 time, datetime, elapsedtime</title>
      <link>https://jbmpa.tistory.com/100</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;현재 시간과 지난 시간 표시하기 time, datetime, elapsedtime&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&lt;b&gt;1. datetime&amp;nbsp; 으로 시간 표시&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;import&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;datetime&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;now = datetime.datetime.now()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span&gt;print( now )&lt;br /&gt;print( now.year )&amp;nbsp;&lt;br /&gt;print( now.month )&lt;br /&gt;print( now.day )&amp;nbsp;&lt;br /&gt;print( now.hour )&amp;nbsp;&lt;br /&gt;print( now.minute )&amp;nbsp;&lt;br /&gt;print( now.second )&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span&gt;s = &quot;%04d-%02d-%02d %02d:%02d:%02d&quot; % (&lt;b&gt;now.year, now.month, now.day, now.hour, now.minute, now.second&lt;/b&gt;)&lt;br /&gt;print(s)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;# 또는&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;s = now.&lt;b&gt;strftime&lt;/b&gt;(&lt;span&gt;&quot;%Y-%m-%d %H:%M:%S&quot;&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;print(s)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;# 또는&lt;/p&gt;
&lt;p&gt;&lt;span&gt;import&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;time&lt;/p&gt;
&lt;p&gt;# 유닉스 타임으로 변환 (&amp;nbsp;1580628774&amp;nbsp; 형식 시간)&lt;/p&gt;
&lt;p&gt;utime = time.&lt;b&gt;mktime&lt;/b&gt;(now.timetuple())&lt;/p&gt;
&lt;p&gt;# 유닉스 타임을 시분초년월일 형식으로 변환&lt;/p&gt;
&lt;p&gt;s = datetime.datetime.&lt;b&gt;fromtimestamp&lt;/b&gt;&lt;span&gt;(&lt;/span&gt;utime&lt;span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;print(s)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span&gt;2019-05-27 23:45:57.052725&lt;br /&gt;2019&lt;br /&gt;5&lt;br /&gt;27&lt;br /&gt;23&lt;br /&gt;45&lt;br /&gt;57&lt;br /&gt;2019-05-27 23:45:57&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;2019-05-27 23:45:57&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;2019-05-27 23:45:57&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;2. time 으로 시간 표시&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;import&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;time&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;now = time.localtime()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;print( now )&lt;br /&gt;print( now.tm_year )&amp;nbsp;&lt;br /&gt;print( now.tm_mon )&lt;br /&gt;print( now.tm_mday )&amp;nbsp;&lt;br /&gt;print( now.tm_hour )&amp;nbsp;&lt;br /&gt;print( now.tm_min )&amp;nbsp;&lt;br /&gt;print( now.tm_sec )&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span&gt;s = &quot;%04d-%02d-%02d %02d:%02d:%02d&quot; % (&lt;b&gt;now.tm_year, now.tm_mon, now.tm_mday, now.tm_hour, now.tm_min, now.tm_sec&lt;/b&gt;)&lt;br /&gt;print(s)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;# 또는&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;s = time.&lt;b&gt;strftime&lt;/b&gt;(&lt;span&gt;&quot;%Y-%m-%d %H:%M:%S&quot;&lt;/span&gt;, now)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;print(s)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span&gt;time.struct_time(tm_year=2019, tm_mon=5, tm_mday=27, tm_hour=23, tm_min=47, tm_sec=39, tm_wday=0, tm_yday=147, tm_isdst=1)&lt;br /&gt;2019&lt;br /&gt;5&lt;br /&gt;27&lt;br /&gt;23&lt;br /&gt;47&lt;br /&gt;39&lt;br /&gt;2019-05-27 23:47:39&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;2019-05-27 23:47:39&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;3. 경과 시간 계산하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;프로그램이 시작되고 경과된 시간을&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;00일 00시간 00분 00초&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;형식으로 표현하는 방법&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;&lt;span&gt;import&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;time&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;start_time = time.time()&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;&lt;span&gt;def&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;elapsedTime():&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;# 현재의 시간에서 시작 시간을 빼준다. 경과시간 추출&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;elapsed_time = time.time() - start_time&lt;/b&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; # 경과시간을 60으로 나누어 분(minute)과 초(second)를 구분한다.&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;m, s = divmod(elapsed_time, 60)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; # 분을 60으로 나누어서 시간(hour)과 분(minute)을 구분한다.&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;h, m = divmod(m, 60)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; # 시간을 24로 나누어서&amp;nbsp;일(day)과 시간(hour)을 구분한다.&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;d, h = divmod(h, 24)&lt;/b&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;if d &amp;gt; 0:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dtime = str(int(d)) + &quot;일 &quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; else:&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dtime = &quot;&quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; if h &amp;gt; 0:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; htime = str(int(h)) + &quot;시간 &quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; else:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; htime = &quot;&quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; if m &amp;gt; 0:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mtime = str(int(m)) + &quot;분 &quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; else:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mtime = &quot;&quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; strTime = dtime + htime + mtime + str(int(s)) + &quot;초&quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; return strTime&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;&lt;span&gt;while&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;True: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;try&lt;/span&gt;:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;#경과 시간 정보&amp;nbsp;출력&lt;br /&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print(elapsedTime())&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;except&lt;/span&gt;:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;pass&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; time.sleep(1)&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span&gt;0초&lt;br /&gt;1초&lt;br /&gt;2초&lt;br /&gt;3초&lt;br /&gt;4초&lt;br /&gt;5초&lt;br /&gt;6초&lt;br /&gt;7초&lt;br /&gt;8초&lt;br /&gt;...&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;...&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>파이썬 팁</category>
      <category>datetime</category>
      <category>elpasedtime</category>
      <category>Python</category>
      <category>Time</category>
      <category>시간</category>
      <category>지난시간</category>
      <category>현재시간</category>
      <author>오비티</author>
      <guid isPermaLink="true">https://jbmpa.tistory.com/100</guid>
      <comments>https://jbmpa.tistory.com/100#entry100comment</comments>
      <pubDate>Mon, 18 May 2020 04:11:24 +0900</pubDate>
    </item>
  </channel>
</rss>