Vẽ Đồ Họa Theo Ý Thích Với Turtle Graphic

Vẽ Đồ Họa Theo Ý Thích Với Turtle Graphic

Python được sử dụng trong đồ họa thông qua các gói như Tkinter, Canvas. Và trong bài viết này mình sẽ hướng dẫn các bạn sử dụng thư viện Turtle trên Python.

Turtle Graphics là gì?

Turtle Graphics là một chương trình con có sẵn trong Python khi bạn đã cài Python lên máy bạn. Turtle (con rùa) đây chỉ là hình ảnh tưởng tượng, nó cầm cây bút để vẽ, di chuyển đến đâu là nó vẽ đường thẳng đến đó. Nó vẽ bằng những cái chấm (dots-pixels) trên màn hình.

1. Cài đặt thư viện

Ở đây ta sử dụng 2 thư viện :

  • Thư viện turtle
  • Thư viện time

Muốn sử dụng chương trình nhỏ turtle graphics của Python thì phải import nó vào từ “thư viện” của Python trong đó còn rất nhiều những chương trình nhỏ do Python soạn sẵn. Cần cái nào là phải nhập (gọi, call) chúng vào chương trình của mình bằng lệnh import. Ở đây ta cần gọi chương trình nhỏ turtle để vẽ nên ta dùng lệnh import turtle.

Chúng ta sẽ cài đặt nó bằng cách gõ 2 dòng lệnh sau:

import turtle as t
import time as ti

2. Thiết lập hàm con

def rectangle(hor,ver,col):
    t.pendown() #tạo con trỏ
    t.pensize(1) #kích cỡ
    t.color(col)
    t.begin_fill()
    for counter in range(1,3): #đây là một vòng lặp (loop)
        t.forward(hor)
        t.right(90)
        t.forward(ver)
        t.right(90)
    t.end_fill()
    t.penup()

Có bốn hướng có thể di chuyển vào:

  • Ở đằng trước
  • Phía sau
  • Trái
  • Đúng

Con trỏ di chuyển .forward()hoặc .backward()theo hướng mà nó phải đối mặt. Bạn có thể thay đổi hướng này bằng cách xoay nó .left()hoặc .right()theo một mức độ nhất định. Bạn có thể thử từng lệnh như vậy:

>>> t.right(90)
>>> t.forward(100)
>>> t.left(90)
>>> t.backward(100)

3. Thiết lập con trỏ vẽ

t.penup()
t.speed('slow') #Tốc độ vẽ của con trỏ
t.bgcolor('Dodger blue')
ti.sleep(10)
t.hideturtle()

4. Code vẽ từng bộ phận

#Vẽ bàn chân

t.goto(-100,-150)
rectangle(50,20,'blue')
t.goto(-30,-150)
rectangle(50,20,'blue')

#Vẽ chân

t.goto(-25,-50)
rectangle(15,100,'grey')
t.goto(-55,-50)
rectangle(-15,100,'grey')

#Vẽ thân

t.goto(-90,100)
rectangle(100,150,'red')

#Vẽ tay

t.goto(-150,70)
rectangle(60,15,'grey')
t.goto(-150,110)
rectangle(15,40,'grey')
t.goto(10,70)
rectangle(60,15,'grey')
t.goto(55,110)
rectangle(15,40,'grey')

#Vẽ cổ

t.goto(-50,120)
rectangle(15,20,'grey')

#Vẽ đầu

t.goto(-85,170)
rectangle(80,50,'red')
t.goto(-60,160)

#Vẽ mắt miệng:
rectangle(30,10,'white')
t.goto(-60,160)
rectangle(5,5,'black')
t.goto(-45,155)
rectangle(5,5,'black')
t.goto(-65,135)
t.right(5)
rectangle(40,5,'black')

#Vẽ bàn tay:

t.goto(-155,130)
rectangle(25,25,'green')
t.goto(-147,130)
rectangle(10,15,t.bgcolor())
t.goto(50,130)
rectangle(25,25,'green')
t.goto(58,130)
rectangle(10,15,t.bgcolor())

Code đầy đủ:

import turtle as t
import time as ti

def rectangle(hor,ver,col):
    t.pendown() #tạo con trỏ
    t.pensize(1)
    t.color(col)
    t.begin_fill()
    for counter in range(1,3):
        t.forward(hor)
        t.right(90)
        t.forward(ver)
        t.right(90)
    t.end_fill()
    t.penup()
t.penup()
t.speed('slow')
t.bgcolor('Dodger blue')

t.goto(-100,-150)
rectangle(50,20,'blue')
t.goto(-30,-150)
rectangle(50,20,'blue')

t.goto(-25,-50)
rectangle(15,100,'grey')
t.goto(-55,-50)
rectangle(-15,100,'grey')

t.goto(-90,100)
rectangle(100,150,'red')

t.goto(-150,70)
rectangle(60,15,'grey')
t.goto(-150,110)
rectangle(15,40,'grey')
t.goto(10,70)
rectangle(60,15,'grey')
t.goto(55,110)
rectangle(15,40,'grey')

t.goto(-50,120)
rectangle(15,20,'grey')
t.goto(-85,170)
rectangle(80,50,'red')
t.goto(-60,160)
rectangle(30,10,'white')
t.goto(-60,160)
rectangle(5,5,'black')
t.goto(-45,155)
rectangle(5,5,'black')
t.goto(-65,135)
t.right(5)
rectangle(40,5,'black')
t.goto(-155,130)
rectangle(25,25,'green')
t.goto(-147,130)
rectangle(10,15,t.bgcolor())
t.goto(50,130)
rectangle(25,25,'green')
t.goto(58,130)
rectangle(10,15,t.bgcolor())
t.hideturtle()
ti.sleep(10)
t.hideturtle()

Thành quả:

Vẽ những bức hình theo ý thích với nhiều màu sắc:
import turtle
t = turtle.Pen()
turtle.bgcolor("black")
colors = ["red", "yellow", "blue", "green"]
for x in range(200):
    t.pencolor(colors[x%4])
    t.forward(x)
    t.left(91)

Tạm kết

Trên đây là những ứng dụng dễ hiểu nhất của Python trong đồ họa. Nó thật sự rất hữu ích và  đem lại cho chúng ta nhiều kiến thức hơn phải không nào?

Hãy ứng dụng chúng để vẽ hay làm những gì mà bạn cảm thấy thú vị với nó. Nếu thấy bài viết hay đừng quên like và share để ủng hộ mình. Chúc các bạn thành công.