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.

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:

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:

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]

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 đỏ.

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:

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]

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

Hình 2-7

HẾT CHƯƠNG II

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

Chủ Đề