Vẽ hình xoắn ốc trong python

Your kids can do this with Python!

Điều kiện học:

  • Phụ huynh phải biết sử dụng Windows 10 VÀ Internet nếu trẻ chưa biết.
  • Dành cho các máy PC.
  • Dùng Google Chrome
  • Một ít tiếng Anh về điện toán
  • Có bộ gõ tiếng Việt càng tốt (VNI, VPS…)

Turtle Graphics là một chương trình con có sẵn trong Python khi bạn đã cài (install) 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.

Vẽ hình xoắn ốc trong python
The turtle (“con rùa”) tưởng tượng, chỉ là hình một mũi tên (arrow mà thôi)

Bây giờ bạn click IDLE để gõ chương trình sau đây, gõ y chang như vậy, kẻo bị syntax error (sai văn phạm của Python) rồi chúng ta sẽ tìm hiểu từng dòng một.

# SquareSpiral1.py  - để vẽ một hình vuông xoắn ốc (square spiral)
import turtle
t = turtle.Pen() for x in range(100) : t.forward(x) t.left(90)

Xong bạn cho save nó lên máy bạn (trong một ngăn hồ sơ folder nào đó trên diã)  với tên XoanocVuong.py rồi cho Run thử (Save và Run bạn đã biết làm ở chương I rồi) , bạn sẽ thấy “con ruà” của bạn (chỉ là một mũi tên) nó vẽ một hình vuông xoắn ốc như sau:

Vẽ hình xoắn ốc trong python
Hình 2-1

GIẢI THÍCH TỪNG DÒNG MỘT CỦA CHƯƠNG TRÌNH

  1. Dòng 1: # SquareSpiral1,py – để vẽ một hình vuông xoắn ốc. Dòng này chỉ là dòng chú thích (comments), có dấu # , máy không thi hành những dòng này khi Run. Có thể thêm ghi chú của người viết về mục đích của chương trình.
  2. Dòng 2: import turtle: Muốn sử dụng chương trình nhỏ turtle graphics của Python thì phải “nhập cảng” (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 khẩu (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.
  3. Dòng 3: t = turtle.Pen() có nghiã là ta dùng t thay thế cho turtle.Pen() vì mỗi khi gọi chương trình con này của turtle thì cái tên ấy dài quá không gọn.
  4. Dòng 4: for x in range(100): đây là một vòng lặp (loop). Với biến số (variable) x đi từ 0 đến 99 thì những lệnh bên trong vòng lặp này sẽ được lặp đi lằp lại 100 lần (range 100 – phạm vi 100).

KHẢO SÁT XEM MÁY THI HÀNH CHƯƠNG TRÌNH NÀY THẾ NÀO?

Không cần khảo sát các dòng 1, 2, 3 vì dễ hiểu rối . Chỉ cần khảo sát vòng lặp ở dòng 4: for x in range(100) và những lệnh nằm bên trong vòng lặp ấy. Những lệnh này cần gõ thụt vào bên trong phiá dưới và qua phải của lệnh for x in range(100). Đầu tiên là lệnh t.forward(x). Lệnh này khiến cái bút của con ruà (cái mũi tên) nhích tới x dots. Với x=0 (lần đầu tiên) thì cây bút của con ruà chẳng nhúc nhích chi cả. Lệnh kế tiếp t.left(90) bắt “con ruà” quẹo trái 1 góc 90 độ. Thế là xong 1 vòng. Vòng lặp lại với x=1, rồi 2, 3, …đến 99 (tức là đủ 100 vòng) thì bạn sẽ có hình như 2-1.

CHO “CON RÙA” CUỐN (ROLL)

Bây giờ bạn thử đổi chương trình XoanocVuong nói trên một chút như sau:

# SquareSpiral2.py  - để vẽ một hình xoắn ốc cuốn
import turtle
t = turtle.Pen() for x in range(100) : t.forward(x) t.left(91)

Dòng comment không quan trọng. Bạn muốn chú thích thế nào tuỳ ý. Bạn chỉ đổi t.left(90) thành t.left(91) tức là mỗi khi con ruà tiến tới vẽ được x dots xong nó sẽ quẹo trái 91 độ. Vòng lặp cũng lặp đi lặp lại 100 lần với x đi từ 0 đến 99 bạn sẽ có một hình vẽ như sau:

Vẽ hình xoắn ốc trong python
Hình 2-2

CHO “CON RÙA” XOẮN TRÒN

Thay vì dùng lệnh t.forward(x) để vẽ đường thẳng ta sửa chương trình trên để vẽ vòng tròn bằng lệnh t.circle(x) trong đó biến số x là bán kính của vòng tròn.

# CircleSpiral1.py  - để vẽ một hình xoắn ốc cuốn tròn
import turtle
t = turtle.Pen() for x in range(100) : t.circle(x) t.left(91)

Vẽ hình xoắn ốc trong python
Hình 2-3

Bài tập: Bạn thử đổi chương trình: thay lệnh t.left(91) bằng lệnh t.right(91) sẽ thấy con ruà quay qua phải mỗi khi vẽ xong một vòng tròn. right() cũng là một lệnh viết sẵn nằm trong thư viện của Python. Hoặc bạn cho trẻ thử thay range(100) thành range(200) xem sao.

CHO MỘT ÍT MÀU MÈ (COLOR)

Bây giờ bạn lấy lại chương trình XoanocVuong,py , sửa đổi lại như sau:

# SquareSpiral3.py  - để vẽ một hình vuông xoắn ốc (square spiral) tô màu
import turtle
t = turtle.Pen()
t.pencolor("red")
for x in range(100):
    t.forward(x)
    t.left(91)

pencolor (“ “) là lệnh của Python để con ruà vẽ màu. Màu gì sẽ để trong ngoặc đôi. Khi cho Run Module bạn sẽ có hình xoắn ốc vuông màu đỏ.

Vẽ hình xoắn ốc trong python
Hình 2-4

Bài tập:

Bạn cho trẻ đổi color thành blue, hay yellow, hay brown xem sao.

HÌNH XOẮN ỐC 4 MÀU

Muốn vậy ta sẽ sửa chương trình trên lại như sau rồi lưu nó lên diã với tên XoanocVuongBonMauLthực ra bạn muốn đặt tên gì tuỳ thích)

 # ColorSquareSpiral - Để vẽ hình xoắn ốc vuông có 4 màu
import turtle
t = turtle.Pen()
colors = ["red", "yellow", "blue", "green"]
for x in range(100):
    t.pencolor(colors[x%4])
    t.forward(x)
    t.left(91)

  • Lệnh colors = [“red”, “yellow”, “blue”, “green”] cho ta một danh sách (list) 4 màu: đỏ, vàng, xanh dương, và xanh lá cây.
  • Lệnh t.pencolor(colors[x%4]). Ký hiệu %modulo (mô đun) . Biến (variable) x thì cũng như trước, biến thiên từ 0 đến 99 vì range là 100. Còn [x%4] là cho Python biết mình dùng 4 màu đầu tiên trong danh sách màu (color list) đánh số từ 0 đến 3 và rồi xoay vòng (rotate) trở lại suốt danh sách ấy mỗi khi x thay đổi.

Sau khi Save và Run Module chương trình này bạn sẽ có một hình xoắn ốc vuông với 4 màu red, yellow, blue, green như sau:

Vẽ hình xoắn ốc trong python
Hình 2-5

THAY ĐỔI MÀU NỀN (BACKGROUND COLOR)

Thí dụ 1– Giả sử bạn muốn có xoắn ốc vòng tròn có 4 màu đỏ, vàng, xanh dương, xanh lá cây. Bạn viết lại chương trình như sau; 

# ColorCircleSpiral  - vẽ xoắn ốc tròn 4 màu nền đen
import turtle
t = turtle.Pen()
turtle.bgcolor("black")
colors = ["red", "yellow", "blue", "green"]
for x in range(100):
    t.pencolor(colors[x%4])
    t.circle(x)
    t.left(91)

Vẽ hình xoắn ốc trong python
Hình 2-6

Lệnh turtle.bgcolor(“black”) cho ta màu nền đen. Sở dĩ đôi khi ta cần đổi màu

đen ở đây là để cho hình vẽ nổi bật không tiệp màu với màu nền.

Thí dụ 2: Giả sử bạn muốn có hình xoắn ốc vuông, có 4 màu và nền đen với range(200):

# ColorSquareSpiral - Để vẽ hình xoắn ốc vuông có 4 màu, nền đen
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)

Kết quả sau khi Run->Run Module

Vẽ hình xoắn ốc trong python
Hình 2-7

HẾT CHƯƠNG II

CHÚC CÁC BẠN TRẺ THÀNH CÔNG