본문 바로가기

프로그램언어/파이썬

거북이 리스트 활용 정렬

[프로그램 1]을 수정해 X+Y 좌표가 가장 작은 거북이부터 정렬한 수 거북이끼리 선을 긋는다. 예를 들어 (10, 10), (-100, -50), (50, 10) 세 좌표의 거북이를 X+Y값으로 정렬하면 (-100, -50), (10, 10), (50, 10)이 되는데, 이 세 거북이를 선으로 이으면 된다. 다음 결과는 거북이 10마리를 좌표로 정렬한 후 선을 그은 결과아다.

힌트 : 각 거북이 리스트의 두번째 값인 X좌표와 세번째 값인 Y좌표를 더한 결과를 playerTurtles를 오름차순 정렬해야 한다.

힌트 : 시작 거북이는 정렬 후 가장 첫 번째 거북이로 해야 한다.

힌트 : 거북이 사이에 선을 그으려면 앞 거북이의 좌표를 저장해고 있어야 한다.

소스코드

import turtle

import random

 

## 전역변수 선언 부분 ##

myTurtle, tX, tY, tColor, tSize, tShape, tSum = [None] * 7 # tSum = X좌표와 Y좌표의 합

playerTurtles = []

swidth, sheight = 500, 500

 

## 메인 함수 부분 ##

if __name__ == "__main__" :

    turtle.title('거북이 리스트 활용(정렬)')

    turtle.setup(width = swidth + 50, height = sheight + 50)

    turtle.screensize(swidth, sheight)

 

    ## 랜덤으로 거북이 객체 10개를 생성 후 playerTurtles에 넣기 ##

    for i in range(0, 10) :

        myTurtle = turtle.Turtle('turtle')

        tX = random.randrange(-swidth / 2, swidth / 2)

        tY = random.randrange(-sheight / 2, sheight / 2)

        r = random.random(); g = random.random(); b = random.random()

        tSize = random.randrange(1, 3)

        tSum = tX + tY

        playerTurtles.append([myTurtle, tX, tY, tSize, r, g, b, tSum])

 

    ## tSumkey오름차순 정렬

    soredTurtles = sorted(playerTurtles, key=lambda turtles : turtles[7] ,reverse = True)

 

    for index, tList in enumerate(soredTurtles[0:]) : # enumerateindex 값을 같이 반환해 줌 (튜플 형태)

        myTurtle = tList[0]

        myTurtle.color((tList[4], tList[5], tList[6]))

        myTurtle.pencolor((tList[4], tList[5], tList[6]))

        myTurtle.turtlesize(tList[3])

        myTurtle.penup()

        if index == 0 : # 첫 번째 거북이는 해당 위치로 이동

            myTurtle.goto(tList[1], tList[2])

            continue

        myTurtle.goto(soredTurtles[index-1][1], soredTurtles[index-1][2]) # 이전 거북이 위치로 이동

        myTurtle.pendown()

        myTurtle.goto(tList[1], tList[2]) # 거북이의 좌표로 선 긋기

 

turtle.done()

'프로그램언어 > 파이썬' 카테고리의 다른 글

거북이 원 모양으로 글자쓰기  (0) 2020.06.03
거북이 글자쓰기  (0) 2020.06.03
거북이 리스트 활용  (0) 2020.06.03
거북이로 구구단 출력하기  (0) 2020.06.03
거북이 소라 모양 그리기  (0) 2020.06.02