turtle을 사용하여 선 그리기

Turtle 모듈


펜을 든 거북이가 그린 채색 도형을 조종할 수 있는 파이썬 버전이다.
아이를 위한 스크래치 등은 유명하지만, 사용 방법에 따라 좋은 교재가 될 수 있다.
이런 내가 이 그림이 대단하다고 생각해서 써봤는데...
  • 이런 선을 그릴 수 있다(숲이나 숲처럼)

  • 그럼 샘플 코드입니다.포레스트라는 함수를 만들어보자.
    turtlePicture.py
    #
    # turtle を import して線描画する
    # 2020.06.15 ProOJI
    #
    import turtle
    
    # kameSan オブジェクト生成
    kameSan = turtle.Turtle()
    
    # メソッドを作成しておく(再帰的用法)
    def forest(n, length:int=1000)->None:
        if n <= 0:
            kameSan.forward(length)
            return
    
        ''' 再帰 1 長さ = 1000 * 0.5 '''
        forest(n-1, length * 0.5)
    
        # 右に 85 度回転
        #   緩やかから急に尖った方向へ
        kameSan.right(85)
    
        ''' 再帰 2 長さ = 1000 ÷ 3 '''
        forest(n-1, length / 3)
    
        # 左に 170 度回転
        #   急なターンで尖った針を描画
        kameSan.left(170)
    
        ''' 再帰 3 長さ = 1000 ÷ 3 '''
        forest(n-1, length / 3)
    
        # 右に 85 度回転
        #   再び緩やな方向へ着地するように
        kameSan.right(85)
        ''' 再帰 4 長さ = 1000 ÷ 0.38 '''
        forest(n-1, length * 0.38)
    
    if __name__ == '__main__':
        kameSan.penup()
        kameSan.setpos(270, -20)
        kameSan.pendown()
        kameSan.left(180)
        kameSan.speed(0)
        forest(5)
        kameSan.done()
    
    
    이렇게 하면 선을 그릴 수 있다.
    그리고 살짝 가공해서 돌아오는 곳에 색상 변화를 설정하면
  • 샘플 코드(컬러)
  • turtlePictureWithColor.py
    #
    # turtle を import して線描画します
    # kameSan は移動するとき線描画をします
    # 2020.06.15 ProOJI
    #
    import turtle
    
    # kameSan オブジェクト生成
    kameSan = turtle.Turtle()
    
    # メソッドを作成しておく(再帰的用法)
    def forest(n, length:int=1000)->None:
        if n <= 0:
            kameSan.forward(length)
            return
    
        ''' 再帰 1 長さ = 1000 * 0.5 '''
        kameSan.pencolor("red")
        forest(n-1, length * 0.5)
    
        # 右に 85 度回転
        #   緩やかから急に尖った方向へ
        kameSan.right(85)
    
        ''' 再帰 2 長さ = 1000 ÷ 3 '''
        kameSan.pencolor("blue")
        forest(n-1, length / 3)
    
        # 左に 170 度回転
        #   急なターンで尖った針を描画
        kameSan.left(170)
    
        ''' 再帰 3 長さ = 1000 ÷ 3 '''
        kameSan.pencolor("green")
        forest(n-1, length / 3)
    
        # 右に 85 度回転
        #   再び緩やな方向へ着地するように
        kameSan.right(85)
        ''' 再帰 4 長さ = 1000 ÷ 0.38 '''
        forest(n-1, length * 0.38)
    
    if __name__ == '__main__':
        # penup ペンを上げているので描画なし
        kameSan.penup()
        # Position へ移動
        kameSan.setpos(270, -20)
        # pendown ペンを下ろすのでここから描画される
        kameSan.pendown()
        # 左へ 180度旋回する
        kameSan.left(180)
    
        kameSan.speed(0)
        forest(5)
        kameSan.done()
    
    나는 어느 선을 어떻게 그렸는지 잘 안다.

    좋은 웹페이지 즐겨찾기