-
Trong lần nói chuyện cuối cùng, ta đã chỉ ra cách làm quả bóng nảy dịch chuyển ra khỏi cạnh bằng cách sử dụng hàm vẽ và câu lệnh if.
-
Hãy xem lại.
-
Đầu tiên, ta thiết lập một số biến ban đầu dành cho vị trí và tốc độ của quả bóng.
-
Sau đó, trong hàm vẽ, đó là hàm đặc biệt được gọi đi gọi lại khi chương trình đang chạy,
-
ta vẽ lại nền và hình elip trên khung vẽ
-
và định vị hình elip đó dựa trên biến vị trí, tốc độ và cách chúng tương quan nhau.
-
Bây giờ, không có mệnh đề if, quả bóng sẽ tiếp tục di chuyển mãi,
-
hoặc cho đến khi ta nhấn chạy lại.
-
Vậy, ta đã thêm hai mệnh đề if dưới đây
-
để kiểm tra và xem bóng ở gần bên phải hay bên trái màn hình,
-
và nếu vậy, ta thay đổi tốc độ thành dương hoặc âm để bóng, về cơ bản, sẽ nảy trở lại.
-
Vậy, bây giờ ta chỉ có quả bóng này, nảy qua lại mãi.
-
Điều đó thật tuyệt, và có rất nhiều ảnh động thực sự thú vị mà ta có thể tạo ra với nó.
-
Nhưng bây giờ, tôi muốn thêm tương tác người dùng vào chương trình này.
-
Xem này, ngay bây giờ nó giống như một chương trình truyền hình.
-
nếu bạn đưa nó cho một người bạn và người đó không biết lập trình thì sẽ không thể thực sự tương tác với nó.
-
Tất cả những gì họ có thể làm là xem mà thôi, thật tuyệt,
-
nhưng sẽ tuyệt hơn rất nhiều nếu họ thực sự có thể làm gì đó.
-
Vậy, hãy cung cấp cho người dùng một số cách để điều khiển chương trình nhé.
-
Hãy nhớ trước đó ta đã biết về hai biến toàn cục đặc biệt gọi là mouseX và mouseY.
-
Các biến đó trả về các giá trị cho biết về vị trí hiện tại của con trỏ
-
và chúng là cách tuyệt vời để làm cho chương trình mang tính tương tác nhiều hơn.
-
Vậy, hãy xem. Làm thế nào ta có thể sử dụng chúng?
-
Chà, ta nên dùng bên trong hàm draw, ở đâu đó.
-
Bởi vì đó là mã duy nhất được gọi đi gọi lại khi chương trình chạy.
-
Tất cả mọi lệnh bên ngoài draw chỉ được gọi một lần, khi chương trình bắt đầu chạy lần đầu.
-
Vậy, việc sử dụng mouseX và mouseY ở đó là vô nghĩa.
-
Người dùng chưa có cơ hội tương tác với nó.
-
Trong draw, ta đang vẽ quả bóng 200 pixel ở dưới màn hình.
-
Sẽ ra sao nếu ta thay thế nó bằng mouseY?
-
Bởi vì đó là tọa độ y, phải không?
-
Vậy, theo cách này, nó sẽ chỉ thêm tọa độ y tùy theo vị trí y của người dùng. Đúng không nhỉ?
-
Vậy, hãy kiểm tra. Chỉ cần di chuyển con trỏ lên và xuống, tôi đã có thể thay đổi đường đi của bóng theo chiều dọc.
-
Điều đó thật tuyệt. Nhưng tôi cũng muốn sử dụng cả mouseX nữa.
-
Vậy, ta nên sử dụng nó như thế nào?
-
Chà, tại sao không tạo ra một quả bóng khác
-
và cho nó đi theo hướng ngược lại: lên và xuống.
-
Và ở đó ta sẽ cho người dùng điều khiển vị trí x của nó.
-
Vậy, ta cần làm gần như ngược lại.
-
Ta sẽ gõ ellipse mouseX vị trí 50 50. Ổn chứ?
-
Hãy kiểm tra! Giờ, tôi đã có hai quả bóng để điều khiển và đi theo hướng vuông góc.
-
Nhưng, tôi vẫn chưa vui.
-
Tôi muốn cho người dùng quyền kiểm soát nhiều hơn.
-
Tôi muốn cho người dùng sức mạnh để tạo ra quả bóng thứ hai.
-
Để thực sự cho nó tồn tại, chỉ bằng cách nhấn con trỏ.
-
Chà, sau đó tôi cần tìm ra cách để biết người dùng đang nhấn con trỏ.
-
Rất may, ta có một biến boolean rất đặc biệt cho điều đó.
-
Nó được gọi là mouseIsPression và ta có thể sử dụng nó trong câu lệnh if.
-
Vậy, hãy xem. Đây là quả bóng thứ hai .
-
Vậy, ta có thể nói if mouseIsPress, và sau đó ta sẽ di chuyển hình elip đến đó.
-
Vậy, những gì nó đang làm ở đây, là nói với chương trình rằng ta chỉ muốn vẽ hình elip nếu điều kiện là đúng
-
mouseIsPression sẽ chỉ đúng khi người dùng nhấn con trỏ.
-
Vậy, hãy thử xem.
-
Ta da!
-
Vậy, bây giờ ta có thể khiến quả bóng xuất hiện bất cứ khi nào nhấn chuột.
-
Vậy, nó đi vào từ vũ trụ song song này. Vào trong! Vào trong! Vào trong!
-
Thật tuyệt vời!
-
Vậy, điều thú vị về biến mouseIsPression
-
là nó thay đổi dựa trên những gì người dùng làm, không dựa trên những gì chương trình làm.
-
và vì hàm draw được gọi lặp đi lặp lại,
-
kết quả của chương trình sẽ thay đổi theo thời gian
-
chỉ với một chút tác động của người dùng.
-
Với sức mạnh kết hợp của câu lệnh if và mouseIsPress,
-
bạn có mọi thứ cần thiết để tạo ra những điều tuyệt vời như nút bấm (button) và chương trình vẽ.
-
Woo hoo!