Sau khi tìm hiểu về những khái niệm cơ bản của vòng lặp, ta cùng tiếp tục học cách tạo một bức vẽ lặp sao cho được đẹp như bức này,
Balloon Hopper đang bay trên bầu trời xanh.
Trong khi viết chương trình từ đầu, tôi muốn các bạn suy ngẫm xem mình sẽ tự thực hiện bằng cách nào, vì các bạn sẽ phải tự thân vận động sớm thôi.
Trước hết, ta nên chia chương trình thành nhiều bước.
Ta sẽ bắt đầu bằng cách vẽ những quả bóng này, tất cả đều là một hình e-lip lặp đi lặp lại, nghe giống như một vòng lặp nhỉ.
Sau đó ta sẽ vẽ những đường thẳng này, và cuối cùng ta thêm Balloon Hopper.
Được rồi, ta đang có một slate trống. Có vẻ khá đáng sợ đấy.
Đôi khi, thêm nền vào cũng giúp mọi thứ trở nên thân thiện hơn một chút đấy, để làm quen tốt hơn thôi mà.
Bây giờ, vì ta đang muốn vẽ một vòng lặp, suy nghĩ đầu tiên của ta phải là những câu hỏi vòng lặp mà ta đã đề cập từ bài trước.
Lần này chúng ta sẽ làm nhanh thôi, vì vậy nếu các bạn cần xem lại, hãy quay trở lại bài “Intro to While Loops”.
Câu hỏi đầu tiên là: “Ta muốn lặp cái gì?”
Ta cùng thử vẽ quả bóng đầu tiên nhé. Vì ta muốn lặp lại những quả bóng đó mà.
Các bạn có thể vẽ như này, có thể như này nữa, và, các bạn biết đấy, chắc là hơi nhỏ, hơi lệch một chút nhỉ.
ta di chuyển một chút nhé.
Đây mới chỉ là một phần của lập trình thôi, trong đó ta thử, rồi nhận ra đó không phải cái ta muốn, rồi ta thử lại và dần dần sẽ được như ý.
Được rồi, bây giờ chắc ta phải tô màu nhỉ? Khi cân nhắc các bước ta đã không tính đến điều này, nên ta có thể coi đó là một phần của bước vẽ bóng của được.
Được chứ? Tiếp theo, ta phải nghĩ mình muốn thay đổi quả bóng này chính xác đến đâu trong vòng lặp.
Chúng ta cần vẽ quả bóng ngang màn hình phải không nào? Ta cần vẽ ở đây, ở đây, và ở đây,
vậy nên ta sẽ lệnh cho máy tính thực hiện, vì tôi vẽ dở tệ.
Ta có thể làm việc đso bằng cách thay đổi chữ số đầu tiên, như các bạn đã biết đso là vị trí x: vị trí nghiêng.
Nhưng, ý tôi là, nhìn nhạt nhẽo quá phải không? Trông chẳng đẹp như bức tranh lúc đầu gì hết.
Vì vậy, thay vào đó, giả sử ta gọi đây là x, cho vị trí x, và ta sẽ tạo một biến như bài học trước.
Và bây giờ, ta sẽ thay đổi biến đó trong vòng lặp, vì vậy ta sẽ sử dụng vòng lặp while,
rồi trong vòng lặp đó ta đặt x thay đổi cho mỗi lần lặp, giả sử theo 20 đơn vị.
Nếu ta chỉ đưa hình e-lip đó vào trong vòng lặp, hãy thật cẩn thận để không đưa cả hàm khai biến vào trong,
vì sau đó ta sẽ chỉ nghĩ đến vấn đề có thể nằm ở đâu.
Thực ra nếu các bạn thấy tò mò, thì cũng đáng để tự mày mò đấy.
Được rồi, như vậy câu hỏi lặp thứ ba của chúng ta là: “Ta muốn lặp trong bao lâu?”
Ta có thể nghĩ rằng sẽ chỉ lặp cho tới khi nào kín màn hình mới thôi.
Như vậy chắc hẳn cho tới khi x nhỏ hơn 400.
Cũng hay đấy vì chúng ta đang có gì đó trên tranh rồi đúng không? Nhưng không giống những gì ta đã tưởng tượng cho lắm.
Vì vậy chúng ta sẽ rà lại một lượt, và dần dần cải thiện để đạt được như những gì ta đã tưởng tượng, giống như trước đây vậy.
Trước hết, các e-lip đang bị dính hết vào nhau rồi. Ta xử lý trước nhé.
Được rồi, vậy là dễ thở hơn một chút rồi.
Nhưng các bạn biết đấy, có thể chúng vẫn cách hơi xa cạnh màn hình, vậy nên nếu ta thay đổi điểm cuối, ta có thể bắt đầu làm biến mất
những hình e-lip xuất hiện ở đây, vì ta đã đặt khi x tới vị trí này thì sẽ ngừng vẽ.
Và đó cũng chính là nội dung của phần này trong vòng lặp while.
Được rồi chứ? Ta cũng có thể nói rằng “có thể ta muốn thay đổi các hình e-lip một chút”, ta muốn di chuyển toàn bộ lùi xuống dưới,
hay thay đổi lại kích thước một chút, và điều hay ho của vòng lặp while là ta có thể cùng lúc thực hiện tất cả.
Được rồi. Quá hoàn hảo.
Bây giờ ta hãy quan sát những quả bóng này, nếu thêm ít dây vào thì sẽ đẹp hơn đấy. Nếu muốn ta có thể thêm,
không thì chúng sẽ bay mất đấy.
Như vậy với mỗi quả bóng ta sẽ cần một đường thẳng. Hãy nghĩ rằng ta muốn đường thẳng đó xuất phát từ tâm của mỗi quả bóng,
để mọi thứ dễ dàng hơn thôi, và tất cả đều buông xuống cùng một điểm, như thế này.
Vậy làm cách nào ta có thể khiến chương trình thực hiện thao tác đó, thay vì phải vẽ tay?
Ta có thể nghĩ như sau, nếu muốn lặp thứ gì đó, chắc chắn ta phải đưa vào vòng lặp while, vì vậy chúng ta cũng tạo đường thẳng đó đã.
Nếu muốn đặt đường thẳng vào trung tâm hình e-lip, thì ta phải bắt đầu tại hai tọa độ này, làm thế cũng được.
Và ta có thể cho chúng kết thúc, các bạn biết đấy, ở đâu cũng được. Cũng khá sát đó chứ!
Nhưng, một lần nữa, nó vẫn chưa hoàn thiện – hẳn các bạn sẽ cảm nhận được chủ đề - vì vậy ta cần phải chỉnh sửa lại. Trước tiên hãy chỉnh lại cái thứ xấu xí này đã.
Những chiếc dây buộc bóng mà ta vừa vẽ đang chồng chéo lên bóng bay, không hợp lý một chút nào luôn.
Ta phải điều chỉnh sao cho hình e-lip có thể che được đường thẳng, ta có thể thực hiện điều đó bằng cách thay đổi thứ tự.
Hẳn các bạn sẽ nhận thấy những gì mình đã học đang dần hiện ra trước mắt.
Được rồi, như này là tốt rồi, nhưng có lẽ ta sẽ thay đổi cả màu của những đường thẳng đó nữa, vậy ta thực hiện như thế nào nếu thực sự phải tự viết chương trình này?
Ta có thể tham khảo tài liệu.
Hoặc ta có thể xem video tư liệu nếu không biết cách xem tài liệu.
Ta có thể sử dụng stroke () để tô màu cho những đường thẳng đó,
và có lẽ tô màu, tôi không biết nữa, màu này chăng?
Cũng đẹp đấy. Cuối cùng, tất cả những gì ta phải làm là vẽ Hopper. Và ta chỉ cần đưa vào dưới định dạng ảnh, như thế này,
các bạn có thể tham khảo tài liệu mà tôi đã sử dụng để thực hiện thao tác, chỉ cần di chuyển xung quanh thôi để cô ấy trông như đang giữ mấy quả bóng bay
và lơ lửng trên trời cao.
Và thế là xong! Chúng ta đã thành công! Các bạn có thể thử trang trí bóng bay, hay nghĩ đến việc thêm một số thứ vào vòng lặp này để khiến những quả bóng bay đó hay ho hơn,
thậm chí các bạn có thể sử dụng vòng lặp cho bức vẽ tiếp theo của mình.