Trong bài viết này chúng tôi dùng Mswlogo để vẽ bông hoa 6 cánh như hình dưới đây:
Kết quả là như thế này :D, nhìn nó không giống với phiên bản gốc cho lắm nhưng ở trong đó có rất nhiều điều thú vị, các bạn có thể xem lại tại đây
Trong bài này tôi viết một chương trình tên là a, (do lười nên trong page toàn đặt là aa zz xx thôi) chương trình này vẽ và tô màu 1 cụm 5 cánh hoa, để cho việc chọn màu vẽ và tô màu được ngắn ngọn chúng tôi sử dụng kiểu tập hợp, bạn có thể thấy khai báo đó ở dòng:
Make “mau {[251 229 127][221 93 181][132 137 203][58 78 131][161 182 125]}
Màu là tập hợp gồm 5 màu tính từ cánh nhỏ ra tới cánh lớn, khi vẽ thì vẽ ở ngoài vào trong, tô màu thì tô từ trong ra ngoài. Để lấy mã màu của hình mẫu tôi sử dụng addon PickColor dành cho Firefox.
Trong chương trình con tôi sử dụng 2 biến temp và HD mục đích là lưu lại vị trí của rùa (temp) và hướng (HD) hiện tại của nó, sau khi vẽ và tô màu xong 5 cánh hoa thì nó thay đổi đi chỗ khác, hướng khác, nên tôi dùng 2 biến đó mục đích là cho nó về vị trí, hướng ban đầu:
Make “temp Pos
Make “HD Heading
…..
SetH :HD
Setpos :temp
Code vẽ bông hoa 6 cánh 5 lớp
To a PD Make "mau {[251 229 127][221 93 181][132 137 203][58 78 131][161 182 125]} SetPC [161 182 125] For[i 5 1 -1][Repeat 2[Arc2 80 :i*40 Rt 100] Setpc Item :i :mau] Make "temp Pos Make "HD Heading PU RT 40 For [i 1 5 1][FD 45 SetFC Item :i :mau Fill] SetH :HD Setpos :temp End ;CT con To Hoa CS Repeat 6 [a Rt 360/6] End ;Ket thuc chuong trinh chinh
Kết quả nguyên quá trình vẽ là như thế này đây 🙂
Code vẽ bông hoa do thầy Lộc và cô Thủy hoàn thiện, chân thành cảm ơn 2 thầy cô 🙂
To BongHoa cs make "mau1 {3 1 5 6 4 12} make "mau2 {6 14 4 13 1 2} for [i 6 1 -1] [ setpc item :i :mau1 setfc item :i :mau1 circle 50*:i fill] for [i 6 1 -1] [ repeat 6[canhhoa3 50*:i item :i :mau2 rt 60]] END To canhhoa3 :r :m setpc :m setfc :m make "bk sqrt :r/6*:r/6 +:r/2*:r/2 ;Tính nửa bán kính make "goc arccos (2*:bk*:bk-:r/2*:r/2)/(2*:bk*:bk) ;Tính góc chứa cung repeat 2[arc2 :goc :bk*2 rt 180-:goc] pu rt 30 fd :r/12 repeat 6[fill fd :r/6] bk :r+:r/12 lt 30 pd END
to hoa6canh5lop1
for[i 1 3 0.5][repeat 2[repeat 90[fd :i rt 1]rt 90]]
rt 45 pu for[k 1 5 1][fd 45 setfc :k fill]
bk 225 rt 15 pd
end
to hoa6canh5lop
repeat 6[hoa6canh5lop1]
end
Cái code của mình dài hơn vì nó tô theo đúng cái màu hoa. Về giải thuật 2 cái cũng như nhau thôi mà.
đã thành công thật rồi
cảm ơn ad nhiều ạ
Cảm ơn rất nhiều! Tôi đang mày mò tìm ko ra đây
cs repeat 100 [fd 100 repeat 6 [fd 10 bk 10 rt 360/50]bk 100 rt 360/100]
cuối cùng cũng làm đc rùi
hay quá!
Phê!
Hay quá! Cảm ơn Em Yêu Tin Học nhiều!