-
Whoo hoo! Thêm một ảnh động khác. Lần này ta có một quả bóng di chuyển trên màn hình,
-
và ta biết nó được tạo ra như thế nào.
-
Ta đã có một biến, "x", cho biết vị trí của quả bóng, một biến "speed" cho biết quả bóng di chuyển được bao xa mỗi lần
-
và một vòng lặp quen thuộc nơi hình nền được vẽ lại mỗi lần lặp
-
thiết lập màu tô và vẽ hình elip tại x, và mỗi lần,
-
ta sẽ thay đổi giá trị của "x" thành giá trị cũ của "x" cộng với biến "speed". Vậy, "speed" nhỏ hơn,
-
ta có thể thấy bóng di chuyển chậm hơn. Tôi có thể làm cho nó nhận giá trị âm, để di chuyển thụt lùi lại, hoặc có thế gán cho nó = 0, và quả bóng sẽ ngừng di chuyển.
-
Nhưng miễn là với tốc độ khác 0,
-
quả bóng cuối cùng sẽ dịch chuyển ra khỏi màn hình.
-
Và ta có thể nhấn nút chạy lại để đưa nó trở lại trang thái ban đầu, nhưng bạn biết đấy, sau một lúc, nó lại như cũ.
-
Ta chạy lại và chạy lại ...
-
Vậy, làm thế này thì sao? Khi quả bóng đến cạnh phải của màn hình,
-
thay vì di chuyển ra khỏi mép màn hình như bây giờ, ta muốn nó quay lại.
-
Và, ta biết cách xoay quả bóng, tôi chỉ cần gõ, "speed" bằng -5. Nếu tốc độ nhận giá trị âm, thì quả bóng sẽ đi lùi.
-
Nhưng vấn đề ở đây.
-
Ta chỉ muốn thay đổi tốc độ khi bóng chạm vào mép phải.
-
Hmmm ... vậy như đã nói rồi, ta chỉ muốn thay đổi tốc độ NẾU bóng chạm tới mép phải.
-
Tôi nghĩ rằng ta cần có mệnh đề "if".
-
Cho tới giờ, ta gõ các lệnh máy tính để chạy mọi thứ.
-
Câu lệnh "if" là một cách để nói rằng, "Này chú em, anh muốn chú chạy đoạn code này, nhưng chỉ trong những trường hợp cụ thể mà thôi."
-
"Vậy, chỉ thay đổi tốc độ nếu như bóng chạm vào cạnh phải."
-
Và trong code nó trông như thế này.
-
Tất cả những gì ta cần làm là gõ "if" và sau đó là cặp dấu ngoặc đơn và sau đó là một cặp dấu ngoặc nhọn.
-
Bên trong dấu ngoặc đơn là điều kiện.
-
Trong dấu ngoặc ta là code cần chạy.
-
Vậy, cách nó hoạt động là, "Nếu điều kiện là đúng, thì chạy code này. Nếu không, đừng bận tâm tới nó."
-
Vậy, trong trường hợp này, điều kiện là quả bóng phải chạm tới cạnh phải. Làm sao để biết bóng đã chạm đến cạnh phải hay chưa?
-
Ta đã có biến "x" cho biết quả bóng ở đâu và ta biết cạnh của khung vẽ là vị trí x = 400, vì vậy xem nào.
-
Khi "x" > 400, ta biết bóng đã đi qua mép phải một chút.
-
Vậy, hãy xem cách nó chạy.
-
Và code chạy, như đã nói, ta sẽ thay đổi tốc độ. Tốc độ là -5. Ta sẽ nhấn chạy lại và xem chuyện gì xảy ra.
-
Vậy, lần này, khi bóng đến cạnh phải, nó nảy lên! Yaaaay!
-
Và sau đó nó tiếp tục ra khỏi màn hình.
-
Nhưng không sao, bởi ta có thể làm điều tương tự ở phía bên kia. Lần này, ta muốn kiểm tra xem bóng đã chạm tới cạnh trái chưa.
-
Và đó là khi x < 0, điều ta muốn làm là khiến tốc độ dương trở lại, do đó tốc độ = 5.
-
Được rồi, sau đó ta sẽ nhấn chạy lại, và lần này ...
-
nảy qua ...
-
nảy lại ...
-
nảy qua ...
-
Nó chạy rồi.
-
Và ta biết mình đang kiểm tra xem bóng có vượt qua giới hạn cạnh không,
nhưng có cảm giác như nó đi quá xa so với cạnh.
-
Và nếu bạn còn nhớ, hai tham số này điều chỉnh tâm điểm của hình elip được vẽ.
-
Vậy, lúc này, khi tâm điểm chạm tới cạnh, một nửa hình elip đã vượt qua cạnh rồi.
-
Vậy, nếu ta muốn sửa nó, chỉ cần dừng hình elip sớm hơn một chút. Vậy, nếu cạnh ở đây, ở giá trị 400 và ta muốn dừng hình elip khi đi tới đây,
-
và ta có thể thấy, từ lời gọi hàm, rằng hình elip có chiều rộng 50, có nghĩa là từ tâm đến cạnh, khoảng cách là 25.
-
Vậy, ta muốn dừng nó lại khi tâm điểm đạt giá trị là 375, vì nó là 400 trừ 25.
-
Vì vậy, thay vì kiểm tra điều kiện x > 400, ta sẽ kiểm tra x > 375.
-
Thay vì kiểm tra x < 0, ta sẽ kiểm tra x < 25.
-
Và giờ nó thật hoàn hảo! Yay! Hãy nhìn quả bóng nảy đi.