Bài viết trước (Điều khiển nhân vật bằng bàn phím – cơ bản) đã hướng dẫn các bạn cách lập trình giúp người chơi có thể điều khiển nhân vật bằng bàn phím thông qua việc sử dụng Event “When … key pressed”. Cách làm này có ưu điểm là đơn giản và dễ thực hiện. Tuy nhiên, mỗi lần nhấn phím, nhân vật lại chỉ di chuyển được một số bước nhất định. Điều này khiến cho người chơi phải nhấn phím nhiều lần nếu muốn đi nhanh (thay vì giữ phím) và nhân vật chuyển động cũng không được mượt .
Bài viết này sẽ hướng dẫn các bạn một cách làm khác, giúp khắc phục tình trạng “giật” khi người chơi muốn nhân vật di chuyển nhanh.
Giải thích ý tưởng di chuyển mượt
Cách làm này sẽ sử dụng khối lệnh “key … pressed?” trong mục Sensing. Khối lệnh này sẽ trả về kết quả Đúng (khi ấn phím) hoặc Sai (khi không nhấn phím).
Do đó, để giúp cho nhân vật di chuyển siêu mượt, chúng ta sẽ sử dụng câu lệnh này kết hợp với khối lệnh If để tạo thành điều kiện “Nếu người chơi ấn phím, nhân vật sẽ chuyển động”
Hướng dẫn lập trình
Cụ thể, nếu người chơi nhấn phím mũi tên phải, nhân vật sẽ di chuyển sang phải. (Hãy quay lại bài viết cơ bản để được giải thích kỹ hơn về các khối lệnh giúp nhân vật di chuyển).
Có một nguyên tắc chung của các ngôn ngữ lập trình là mỗi câu lệnh thì chỉ được thực hiện 1 lần duy nhất khi chương trình chạy. Tuy nhiên, để nhân vật có thể di chuyển liên tục, di chuyến bất cứ khi nào người chơi ấn thì câu lệnh If phải được thực hiện lặp đi lặp lại nhiều lần. Vì vậy, ta cần đặt câu lệnh if vào bên trong khối lệnh lặp “Forever”.
Lưu ý: Việc đặt If bên trong khối lệnh Forever giúp câu lệnh If được lặp đi lặp lại rất quan trọng. Nếu không có khối lệnh Forever, câu lệnh sẽ chỉ được thực hiện một lần duy nhất ngay sau khi Event xảy ra. Như vậy, trong suốt quá trình trò chơi diễn ra, dù người chơi có nhấn phím, máy tính cũng không nhận biết được điều đó và nhân vật cũng sẽ không thực hiện việc gì cả.
Và cuối cùng, chúng ta cần tìm một Event cho nhóm các khối lệnh này. Vậy câu hỏi đặt ra là “Khi nào chúng ta cần chương trình bắt đầu kiểm tra xem người chơi có ấn phím hay không?“
Trong ví dụ này, tôi muốn ngay khi bắt đầu trò chơi, hay chính là khi người chơi ấn phím lá cờ, thì nhân vật có thể di chuyển. Chính vì vậy, tôi sẽ chọn event “When green flag clicked”
Như vậy, phần lập trình khi ấn mũi tên sang phải, nhân vật sẽ di chuyển sang phải đã được hoàn thành. Các bạn có thể làm tương tự với các hướng di chuyển lên trên, xuống dưới và sang trái.
Lưu ý: Nhiều câu lệnh If có thể đặt chung vào bên trong khối lệnh Forever và cùng dùng chung một Event ” When green flag clicked”. Tốc độ xử lý của máy tính rất nhanh nên việc đặt chung như vậy cũng không làm ảnh hưởng đến tốc độ di chuyển của nhân vật.
Hãy thử thực hành và so sánh kết quả với mình trong clip này nhé!
Link project mẫu: https://scratch.mit.edu/projects/310782256/
Pingback: Scratch | Hướng dẫn làm game: Tránh Bom | Dạy & Học lập trình trẻ em