Python Turtle
Màu sắc và tô màu

Màu sắc và tô màu trong Turtle

Trong bài này, chúng ta sẽ học cách sử dụng màu sắc và tô màu cho các hình vẽ.

1. Màu nền (Background Color)

import turtle
 
screen = turtle.Screen()
screen.bgcolor("lightblue")  # Đặt màu nền
 
t = turtle.Turtle()
t.forward(100)
 
turtle.done()

2. Màu bút (Pen Color)

Dùng tên màu tiếng Anh

import turtle
 
t = turtle.Turtle()
 
# Đổi màu bút
t.pencolor("red")
t.forward(100)
 
t.pencolor("blue")
t.left(90)
t.forward(100)
 
t.pencolor("green")
t.left(90)
t.forward(100)
 
turtle.done()

Các màu phổ biến

  • "red" - Đỏ
  • "blue" - Xanh dương
  • "green" - Xanh lá
  • "yellow" - Vàng
  • "orange" - Cam
  • "purple" - Tím
  • "pink" - Hồng
  • "brown" - Nâu
  • "black" - Đen
  • "white" - Trắng
  • "gray" - Xám

3. Màu RGB

RGB (Red, Green, Blue) - mỗi giá trị từ 0 đến 1

import turtle
 
screen = turtle.Screen()
screen.colormode(255)  # Cho phép dùng giá trị 0-255
 
t = turtle.Turtle()
 
# Màu đỏ thuần túy
t.pencolor(255, 0, 0)
t.forward(100)
 
# Màu xanh lá thuần túy
t.pencolor(0, 255, 0)
t.left(90)
t.forward(100)
 
# Màu xanh dương thuần túy
t.pencolor(0, 0, 255)
t.left(90)
t.forward(100)
 
turtle.done()

Một số màu RGB hay dùng

# Màu hồng
t.pencolor(255, 192, 203)
 
# Màu cam
t.pencolor(255, 165, 0)
 
# Màu tím
t.pencolor(128, 0, 128)
 
# Màu vàng gold
t.pencolor(255, 215, 0)

4. Tô màu hình (Fill Color)

import turtle
 
t = turtle.Turtle()
t.speed(2)
 
# Bắt đầu tô màu
t.fillcolor("yellow")
t.begin_fill()
 
# Vẽ hình vuông
for i in range(4):
    t.forward(100)
    t.left(90)
 
# Kết thúc tô màu
t.end_fill()
 
turtle.done()

Các bước tô màu:

  1. fillcolor(màu) - Chọn màu tô
  2. begin_fill() - Bắt đầu tô
  3. Vẽ hình
  4. end_fill() - Kết thúc tô

5. Đặt cả màu bút và màu tô cùng lúc

import turtle
 
t = turtle.Turtle()
t.speed(2)
 
# Đặt màu bút là đỏ, màu tô là vàng
t.color("red", "yellow")
 
t.begin_fill()
for i in range(5):
    t.forward(100)
    t.right(144)
t.end_fill()
 
turtle.done()

Cú pháp: color(pencolor, fillcolor)

6. Vẽ nhiều hình với màu khác nhau

import turtle
 
t = turtle.Turtle()
t.speed(0)
 
# Danh sách màu
colors = ["red", "orange", "yellow", "green", "blue", "purple"]
 
# Vẽ 6 hình tròn
for i in range(6):
    t.color(colors[i])
    t.begin_fill()
    t.circle(50)
    t.end_fill()
 
    t.penup()
    t.forward(120)
    t.pendown()
 
turtle.done()

7. Tạo gradient (chuyển màu dần)

import turtle
 
screen = turtle.Screen()
screen.colormode(255)
screen.bgcolor("black")
 
t = turtle.Turtle()
t.speed(0)
t.width(3)
 
# Vẽ các hình tròn với màu chuyển dần
for i in range(50):
    # Màu đỏ tăng dần
    t.pencolor(255 - i*5, i*5, 100)
    t.circle(50 + i*2)
    t.left(10)
 
turtle.done()

8. Vẽ cầu vồng

import turtle
 
t = turtle.Turtle()
t.speed(0)
t.width(10)
screen = turtle.Screen()
screen.bgcolor("lightblue")
 
# Màu cầu vồng
colors = ["red", "orange", "yellow", "green", "blue", "indigo", "violet"]
 
# Vẽ 7 cung tròn
for i in range(7):
    t.pencolor(colors[i])
    t.circle(100 - i*10)
    t.penup()
    t.goto(0, -10 * (i+1))
    t.pendown()
 
t.hideturtle()
turtle.done()

9. Tô màu hình phức tạp

Vẽ mặt trời

import turtle
 
t = turtle.Turtle()
t.speed(0)
screen = turtle.Screen()
screen.bgcolor("skyblue")
 
# Vẽ mặt trời
t.color("orange", "yellow")
t.begin_fill()
t.circle(50)
t.end_fill()
 
# Vẽ tia nắng
t.pencolor("orange")
t.pensize(3)
 
for i in range(12):
    t.penup()
    t.goto(0, 0)
    t.pendown()
    t.forward(80)
    t.left(30)
 
t.hideturtle()
turtle.done()

Vẽ bông hoa

import turtle
 
t = turtle.Turtle()
t.speed(0)
screen = turtle.Screen()
screen.bgcolor("lightgreen")
 
# Vẽ 10 cánh hoa
t.color("red", "pink")
for i in range(10):
    t.begin_fill()
    t.circle(50, 60)
    t.left(120)
    t.circle(50, 60)
    t.end_fill()
    t.left(36)
 
# Vẽ tâm hoa
t.penup()
t.goto(0, -10)
t.pendown()
t.color("yellow", "yellow")
t.begin_fill()
t.circle(10)
t.end_fill()
 
t.hideturtle()
turtle.done()

10. Tạo màu ngẫu nhiên

import turtle
import random
 
screen = turtle.Screen()
screen.colormode(255)
screen.bgcolor("white")
 
t = turtle.Turtle()
t.speed(0)
 
# Vẽ 20 hình với màu ngẫu nhiên
for i in range(20):
    # Tạo màu ngẫu nhiên
    r = random.randint(0, 255)
    g = random.randint(0, 255)
    b = random.randint(0, 255)
 
    t.color(r, g, b)
    t.begin_fill()
 
    # Vẽ hình vuông
    for j in range(4):
        t.forward(100)
        t.left(90)
 
    t.end_fill()
    t.left(18)
 
t.hideturtle()
turtle.done()

11. Ví dụ nâng cao: Vẽ lá cờ

import turtle
 
screen = turtle.Screen()
screen.bgcolor("white")
 
t = turtle.Turtle()
t.speed(2)
 
# Vẽ nền đỏ
t.color("black", "red")
t.begin_fill()
for i in range(2):
    t.forward(300)
    t.left(90)
    t.forward(200)
    t.left(90)
t.end_fill()
 
# Vẽ ngôi sao vàng ở giữa
t.penup()
t.goto(150, 100)
t.pendown()
t.color("yellow", "yellow")
t.begin_fill()
 
for i in range(5):
    t.forward(50)
    t.right(144)
 
t.end_fill()
t.hideturtle()
 
turtle.done()

Bài tập thực hành

Bài 1: Vẽ đèn giao thông

Vẽ 3 hình tròn (đỏ, vàng, xanh) xếp dọc

Bài 2: Vẽ Olympic

Vẽ 5 vòng tròn Olympic (xanh, vàng, đen, xanh lá, đỏ)

Bài 3: Vẽ cờ Việt Nam

Vẽ lá cờ Việt Nam (nền đỏ, ngôi sao vàng 5 cánh ở giữa)

Bài 4: Vẽ bầu trời đêm

Vẽ nền đen, nhiều ngôi sao vàng ở vị trí ngẫu nhiên

Gợi ý Bài 1:

import turtle
 
t = turtle.Turtle()
t.speed(2)
 
# Vẽ hộp đen
t.color("black", "black")
t.begin_fill()
for i in range(2):
    t.forward(100)
    t.left(90)
    t.forward(300)
    t.left(90)
t.end_fill()
 
# Vẽ 3 đèn
colors = ["red", "yellow", "green"]
y_positions = [50, 150, 250]
 
for i in range(3):
    t.penup()
    t.goto(50, y_positions[i])
    t.pendown()
    t.color("black", colors[i])
    t.begin_fill()
    t.circle(30)
    t.end_fill()
 
t.hideturtle()
turtle.done()

Bảng màu HTML thường dùng

TênMã màuRGB
Red#FF0000(255, 0, 0)
Blue#0000FF(0, 0, 255)
Green#00FF00(0, 255, 0)
Yellow#FFFF00(255, 255, 0)
Orange#FFA500(255, 165, 0)
Purple#800080(128, 0, 128)
Pink#FFC0CB(255, 192, 203)
Gold#FFD700(255, 215, 0)

Tổng kết

Trong bài này, bạn đã học:

  • ✅ Đổi màu nền với bgcolor()
  • ✅ Đổi màu bút với pencolor()
  • ✅ Sử dụng màu theo tên và RGB
  • ✅ Tô màu hình với fillcolor(), begin_fill(), end_fill()
  • ✅ Đặt cả màu bút và tô cùng lúc với color()
  • ✅ Tạo gradient và màu ngẫu nhiên
  • ✅ Vẽ các hình phức tạp có màu sắc

Bài tiếp theo, chúng ta sẽ học vẽ các mẫu hoa văn đẹp mắt!


Lập trình Python - Bumbii Academy