[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:02.76,0:00:06.31,Default,,0000,0000,0000,, 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, Dialogue: 0,0:00:06.39,0:00:09.50,Default,,0000,0000,0000,, và ta biết nó được tạo ra như thế nào. Dialogue: 0,0:00:09.50,0:00:14.13,Default,,0000,0000,0000,, 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 Dialogue: 0,0:00:14.13,0:00:17.42,Default,,0000,0000,0000,, 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 Dialogue: 0,0:00:17.42,0:00:23.20,Default,,0000,0000,0000,, thiết lập màu tô và vẽ hình elip tại x, và mỗi lần, Dialogue: 0,0:00:23.20,0:00:26.28,Default,,0000,0000,0000,, 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, Dialogue: 0,0:00:26.28,0:00:38.21,Default,,0000,0000,0000,, 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. Dialogue: 0,0:00:38.21,0:00:40.48,Default,,0000,0000,0000,, Nhưng miễn là với tốc độ khác 0, Dialogue: 0,0:00:40.48,0:00:43.84,Default,,0000,0000,0000,, quả bóng cuối cùng sẽ dịch chuyển ra khỏi màn hình. Dialogue: 0,0:00:43.84,0:00:48.18,Default,,0000,0000,0000,, 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ũ. Dialogue: 0,0:00:48.36,0:00:52.70,Default,,0000,0000,0000,, Ta chạy lại và chạy lại ... Dialogue: 0,0:00:52.70,0:00:55.74,Default,,0000,0000,0000,, Vậy, làm thế này thì sao? Khi quả bóng đến cạnh phải của màn hình, Dialogue: 0,0:00:55.74,0:00:58.43,Default,,0000,0000,0000,, 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. Dialogue: 0,0:00:58.43,0:01:10.32,Default,,0000,0000,0000,, 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. Dialogue: 0,0:01:10.45,0:01:12.86,Default,,0000,0000,0000,, Nhưng vấn đề ở đây. Dialogue: 0,0:01:12.86,0:01:18.24,Default,,0000,0000,0000,, Ta chỉ muốn thay đổi tốc độ khi bóng chạm vào mép phải. Dialogue: 0,0:01:18.24,0:01:25.92,Default,,0000,0000,0000,, 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. Dialogue: 0,0:01:25.92,0:01:29.63,Default,,0000,0000,0000,, Tôi nghĩ rằng ta cần có mệnh đề "if". Dialogue: 0,0:01:29.63,0:01:32.81,Default,,0000,0000,0000,, Cho tới giờ, ta gõ các lệnh máy tính để chạy mọi thứ. Dialogue: 0,0:01:32.81,0:01:39.53,Default,,0000,0000,0000,, 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." Dialogue: 0,0:01:39.53,0:01:42.52,Default,,0000,0000,0000,, "Vậy, chỉ thay đổi tốc độ nếu như bóng chạm vào cạnh phải." Dialogue: 0,0:01:42.52,0:01:45.86,Default,,0000,0000,0000,, Và trong code nó trông như thế này. Dialogue: 0,0:01:45.86,0:01:50.95,Default,,0000,0000,0000,, 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. Dialogue: 0,0:01:50.95,0:01:54.34,Default,,0000,0000,0000,, Bên trong dấu ngoặc đơn là điều kiện. Dialogue: 0,0:01:54.34,0:01:57.10,Default,,0000,0000,0000,, Trong dấu ngoặc ta là code cần chạy. Dialogue: 0,0:01:57.10,0:02:03.01,Default,,0000,0000,0000,, 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ó." Dialogue: 0,0:02:03.01,0:02:10.39,Default,,0000,0000,0000,, 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? Dialogue: 0,0:02:10.39,0:02:22.99,Default,,0000,0000,0000,, 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. Dialogue: 0,0:02:22.99,0:02:30.46,Default,,0000,0000,0000,, Khi "x" > 400, ta biết bóng đã đi qua mép phải một chút. Dialogue: 0,0:02:30.46,0:02:33.04,Default,,0000,0000,0000,, Vậy, hãy xem cách nó chạy. Dialogue: 0,0:02:33.04,0:02:45.31,Default,,0000,0000,0000,, 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. Dialogue: 0,0:02:45.31,0:02:47.52,Default,,0000,0000,0000,, Vậy, lần này, khi bóng đến cạnh phải, nó nảy lên! Yaaaay! Dialogue: 0,0:02:47.61,0:02:50.55,Default,,0000,0000,0000,, Và sau đó nó tiếp tục ra khỏi màn hình. Dialogue: 0,0:02:50.55,0:02:52.67,Default,,0000,0000,0000,, 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. Dialogue: 0,0:02:52.67,0:03:03.05,Default,,0000,0000,0000,, 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. Dialogue: 0,0:03:03.05,0:03:08.11,Default,,0000,0000,0000,, Được rồi, sau đó ta sẽ nhấn chạy lại, và lần này ... Dialogue: 0,0:03:08.11,0:03:11.72,Default,,0000,0000,0000,, nảy qua ... Dialogue: 0,0:03:11.72,0:03:13.82,Default,,0000,0000,0000,, nảy lại ... Dialogue: 0,0:03:13.82,0:03:14.42,Default,,0000,0000,0000,, nảy qua ... Dialogue: 0,0:03:14.50,0:03:16.69,Default,,0000,0000,0000,, Nó chạy rồi. Dialogue: 0,0:03:16.69,0:03:21.40,Default,,0000,0000,0000,, 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,\Nnhưng có cảm giác như nó đi quá xa so với cạnh. Dialogue: 0,0:03:21.62,0:03:25.34,Default,,0000,0000,0000,, 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ẽ. Dialogue: 0,0:03:25.55,0:03:36.90,Default,,0000,0000,0000,, 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. Dialogue: 0,0:03:36.90,0:03:47.31,Default,,0000,0000,0000,, 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, Dialogue: 0,0:03:47.31,0:03:58.64,Default,,0000,0000,0000,, 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. Dialogue: 0,0:03:58.64,0:04:06.87,Default,,0000,0000,0000,, 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. Dialogue: 0,0:04:06.87,0:04:10.98,Default,,0000,0000,0000,, Vì vậy, thay vì kiểm tra điều kiện x > 400, ta sẽ kiểm tra x > 375. Dialogue: 0,0:04:10.98,0:04:15.57,Default,,0000,0000,0000,, Thay vì kiểm tra x < 0, ta sẽ kiểm tra x < 25. Dialogue: 0,0:04:15.57,0:00:00.00,Default,,0000,0000,0000,, Và giờ nó thật hoàn hảo! Yay! Hãy nhìn quả bóng nảy đi.