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.