Python Turtle
Vẽ hoa văn và mẫu

Vẽ hoa văn và mẫu đẹp với Turtle

Trong bài này, chúng ta sẽ học cách tạo các hoa văn và mẫu đẹp mắt bằng cách kết hợp vòng lặp, màu sắc và hình học.

1. Hoa văn hình vuông xoáy

import turtle
 
t = turtle.Turtle()
t.speed(0)
screen = turtle.Screen()
screen.bgcolor("black")
 
colors = ["red", "orange", "yellow", "green", "blue", "purple"]
 
# Vẽ 360 hình vuông
for i in range(360):
    t.pencolor(colors[i % 6])
    t.width(i / 100 + 1)
    t.forward(i)
    t.left(59)
 
turtle.done()

2. Hoa văn hình tròn

import turtle
 
t = turtle.Turtle()
t.speed(0)
screen = turtle.Screen()
screen.bgcolor("black")
 
colors = ["red", "yellow", "blue", "green", "orange", "purple"]
 
# Vẽ 36 hình tròn
for i in range(36):
    t.pencolor(colors[i % 6])
    t.circle(100)
    t.left(10)
 
turtle.done()

3. Spirograph (Hoa văn hình học)

import turtle
 
t = turtle.Turtle()
t.speed(0)
screen = turtle.Screen()
screen.bgcolor("black")
 
colors = ["red", "yellow", "blue", "green", "orange", "purple", "pink"]
 
# Vẽ spirograph
for i in range(200):
    t.pencolor(colors[i % 7])
    t.circle(100)
    t.left(5)
 
t.hideturtle()
turtle.done()

4. Hoa văn ngôi sao

import turtle
 
t = turtle.Turtle()
t.speed(0)
screen = turtle.Screen()
screen.bgcolor("navy")
 
colors = ["red", "yellow", "blue", "orange", "green", "pink"]
 
# Vẽ nhiều ngôi sao
for i in range(36):
    t.pencolor(colors[i % 6])
 
    # Vẽ ngôi sao 5 cánh
    for j in range(5):
        t.forward(100)
        t.right(144)
 
    t.right(10)
 
t.hideturtle()
turtle.done()

5. Hoa văn lục giác (Honeycomb)

import turtle
 
t = turtle.Turtle()
t.speed(0)
 
def hexagon(size):
    """Vẽ lục giác"""
    for i in range(6):
        t.forward(size)
        t.left(60)
 
# Vẽ tổ ong
for i in range(6):
    hexagon(100)
    t.forward(100)
    t.right(60)
 
turtle.done()

6. Hoa văn Mandala

import turtle
 
t = turtle.Turtle()
t.speed(0)
screen = turtle.Screen()
screen.bgcolor("black")
 
colors = ["red", "orange", "yellow", "green", "blue", "purple"]
 
# Vẽ mandala
for i in range(18):
    for color in colors:
        t.color(color)
        t.circle(100)
        t.left(10)
    t.left(20)
 
t.hideturtle()
turtle.done()

7. Spiral (Xoắn ốc)

Xoắn ốc vuông

import turtle
 
t = turtle.Turtle()
t.speed(0)
screen = turtle.Screen()
screen.bgcolor("black")
 
colors = ["red", "purple", "blue", "green", "yellow", "orange"]
 
# Vẽ xoắn ốc
for i in range(400):
    t.pencolor(colors[i % 6])
    t.width(i / 100 + 1)
    t.forward(i)
    t.left(91)
 
turtle.done()

Xoắn ốc tròn

import turtle
 
t = turtle.Turtle()
t.speed(0)
screen = turtle.Screen()
screen.bgcolor("black")
 
t.pencolor("gold")
t.width(2)
 
# Vẽ xoắn ốc tròn
for i in range(100):
    t.circle(i)
    t.left(45)
 
turtle.done()

8. Hoa văn Fractal - Cây

import turtle
 
def draw_tree(branch_length, t):
    """Vẽ cây fractal"""
    if branch_length > 5:
        t.forward(branch_length)
        t.right(20)
        draw_tree(branch_length - 15, t)
        t.left(40)
        draw_tree(branch_length - 15, t)
        t.right(20)
        t.backward(branch_length)
 
# Setup
screen = turtle.Screen()
screen.bgcolor("white")
t = turtle.Turtle()
t.speed(0)
t.left(90)
t.penup()
t.backward(100)
t.pendown()
t.color("brown")
 
# Vẽ cây
draw_tree(75, t)
 
t.hideturtle()
turtle.done()

9. Hoa văn Olympic

import turtle
 
t = turtle.Turtle()
t.speed(2)
t.width(5)
 
# Màu và vị trí các vòng
colors = ["blue", "black", "red", "yellow", "green"]
positions = [(-120, 0), (0, 0), (120, 0), (-60, -50), (60, -50)]
 
# Vẽ 5 vòng tròn
for i in range(5):
    t.penup()
    t.goto(positions[i][0], positions[i][1])
    t.pendown()
    t.color(colors[i])
    t.circle(50)
 
t.hideturtle()
turtle.done()

10. Hoa văn hình thoi

import turtle
 
t = turtle.Turtle()
t.speed(0)
screen = turtle.Screen()
screen.bgcolor("white")
 
colors = ["red", "blue", "green", "yellow", "purple", "orange"]
 
# Vẽ hoa văn hình thoi
for i in range(36):
    t.color(colors[i % 6])
 
    # Vẽ hình thoi
    for j in range(2):
        t.forward(100)
        t.left(60)
        t.forward(100)
        t.left(120)
 
    t.left(10)
 
t.hideturtle()
turtle.done()

11. Hoa văn Rosette

import turtle
 
t = turtle.Turtle()
t.speed(0)
screen = turtle.Screen()
screen.bgcolor("black")
 
colors = ["red", "magenta", "blue", "cyan", "green", "yellow"]
 
# Vẽ rosette
for i in range(36):
    t.pencolor(colors[i % 6])
 
    # Vẽ cánh hoa
    t.circle(100, 180)
    t.left(170)
 
t.hideturtle()
turtle.done()

12. Vẽ mê cung

import turtle
 
t = turtle.Turtle()
t.speed(0)
screen = turtle.Screen()
screen.bgcolor("white")
 
t.color("blue")
t.width(2)
 
# Vẽ mê cung đơn giản
for i in range(50):
    t.forward(i * 10)
    t.right(90)
 
t.hideturtle()
turtle.done()

13. Hoa văn Random Walk

import turtle
import random
 
screen = turtle.Screen()
screen.colormode(255)
screen.bgcolor("white")
 
t = turtle.Turtle()
t.speed(0)
t.width(3)
 
# Random walk
for i in range(500):
    # Màu ngẫu nhiên
    r = random.randint(0, 255)
    g = random.randint(0, 255)
    b = random.randint(0, 255)
    t.pencolor(r, g, b)
 
    # Hướng ngẫu nhiên
    directions = [0, 90, 180, 270]
    t.setheading(random.choice(directions))
    t.forward(30)
 
t.hideturtle()
turtle.done()

14. Vẽ bông tuyết (Snowflake)

import turtle
 
def branch(length):
    """Vẽ một nhánh của bông tuyết"""
    if length < 10:
        return
    t.forward(length)
    t.right(45)
    branch(length/2)
    t.left(90)
    branch(length/2)
    t.right(45)
    t.backward(length)
 
# Setup
screen = turtle.Screen()
screen.bgcolor("lightblue")
t = turtle.Turtle()
t.speed(0)
t.color("white")
t.width(2)
 
# Vẽ 8 nhánh
for i in range(8):
    branch(60)
    t.left(45)
 
t.hideturtle()
turtle.done()

15. Hoa văn Checkerboard (Bàn cờ)

import turtle
 
t = turtle.Turtle()
t.speed(0)
 
def draw_square(size, x, y, color):
    """Vẽ ô vuông tại vị trí cho trước"""
    t.penup()
    t.goto(x, y)
    t.pendown()
    t.color(color, color)
    t.begin_fill()
    for i in range(4):
        t.forward(size)
        t.left(90)
    t.end_fill()
 
# Vẽ bàn cờ 8x8
size = 40
for row in range(8):
    for col in range(8):
        x = col * size
        y = row * size
        # Xen kẽ màu đen trắng
        if (row + col) % 2 == 0:
            color = "black"
        else:
            color = "white"
        draw_square(size, x, y, color)
 
t.hideturtle()
turtle.done()

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

Bài 1: Vẽ hoa văn riêng

Tạo một hoa văn độc đáo của riêng bạn bằng cách kết hợp các kỹ thuật đã học

Bài 2: Vẽ mặt trời Aztec

Vẽ một mặt trời với nhiều tia sáng màu sắc rực rỡ

Bài 3: Vẽ hoa văn Celtic

Tạo hoa văn Celtic với các vòng tròn đan xen

Bài 4: Vẽ galaxy

Vẽ một thiên hà xoáy ốc với nhiều màu sắc

Gợi ý Bài 4:

import turtle
import random
 
screen = turtle.Screen()
screen.bgcolor("black")
screen.colormode(255)
 
t = turtle.Turtle()
t.speed(0)
t.hideturtle()
 
# Vẽ galaxy
for i in range(500):
    # Màu sao
    color_intensity = random.randint(150, 255)
    t.color(color_intensity, color_intensity, 255)
 
    # Vị trí ngẫu nhiên theo xoáy
    angle = i * 5
    distance = i / 3
    t.penup()
    t.setheading(angle)
    t.forward(distance)
    t.dot(random.randint(1, 5))
 
turtle.done()

Tips tạo hoa văn đẹp

  1. Sử dụng màu tương phản: Màu sáng trên nền tối hoặc ngược lại
  2. Đối xứng: Tạo các mẫu đối xứng bằng cách lặp với góc đều
  3. Kết hợp nhiều hình: Ghép các hình cơ bản tạo phức tạp
  4. Thay đổi kích thước: Tăng/giảm kích thước tạo hiệu ứng động
  5. Random có chừng mực: Dùng random nhưng vẫn giữ quy luật

Tổng kết

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

  • ✅ Tạo hoa văn xoáy ốc (spiral)
  • ✅ Vẽ spirograph và mandala
  • ✅ Tạo hoa văn fractal (cây, bông tuyết)
  • ✅ Vẽ các mẫu hình học phức tạp
  • ✅ Kết hợp màu sắc và vòng lặp
  • ✅ Sử dụng random tạo hoa văn độc đáo

Bài tiếp theo, chúng ta sẽ làm các dự án nâng cao thú vị hơn!


Lập trình Python - Bumbii Academy