Chuyên đề 3: Lập trình Trò chơi & Dự án sáng tạo (Chi tiết từng bài)
Chuyên đề này hướng dẫn chi tiết từng bài học từ Tuần 25 đến Tuần 31 theo lộ trình ôn thi Tin học trẻ, giúp học sinh làm chủ kỹ năng thiết kế trò chơi tương tác 2D trên Scratch.
📘 Bài 1 (Tuần 25): Kỹ thuật Bản sao (Clones) nâng cao
Mục tiêu: Hiểu rõ biến cục bộ của bản sao và quản lý bộ nhớ sân khấu chống tràn.
1. Phân biệt Biến toàn cục & Biến cục bộ của Bản sao
Khi tạo một biến số trong Scratch, bạn có hai tùy chọn:
- Cho tất cả nhân vật (For all sprites): Biến toàn cục. Tất cả các bản sao và nhân vật đều đọc/ghi chung một ô nhớ.
- Chỉ cho nhân vật này (For this sprite only): Biến cục bộ. Mỗi khi một bản sao được tạo ra, nó sẽ nhân bản một phiên bản độc lập của biến này cho riêng nó.
- Ứng dụng: Nếu muốn tạo 10 con quái vật có lượng máu (HP) khác nhau hoặc tốc độ di chuyển khác nhau, bắt buộc phải dùng biến cục bộ
"Chỉ cho nhân vật này".
2. Thuật toán quản lý bộ nhớ bản sao mẫu
Tránh lỗi giật lag do vượt giới hạn 300 bản sao bằng cách kiểm tra biên tịnh tiến:
- Khi tôi khởi đầu là một bản sao:
- Hiện.
- Lặp lại cho đến khi
tọa độ y < -170hoặcđang chạm [Người chơi]:- Thay đổi y một lượng
-5(Rơi tự do).
- Thay đổi y một lượng
- Xóa bản sao này (Giải phóng bộ nhớ).
📘 Bài 2 (Tuần 26): Xử lý va chạm và Tính điểm số
Mục tiêu: Lập trình cơ chế ghi nhận ăn điểm và mất mạng khi va chạm.
1. Xử lý va chạm vật lý cơ bản
- Nhân vật người chơi di chuyển qua lại bằng phím mũi tên.
- Các vật phẩm rơi xuống kiểm tra va chạm liên tục với người chơi bằng cảm biến
đang chạm [Người chơi]?.
2. Thuật toán tính điểm số và mạng sống
- Tạo biến
Điểmvà biếnMạng. - Khi bắt đầu game: đặt
Điểmthành0, đặtMạngthành3. - Ở nhân vật vật phẩm rơi (bản sao):
- Khi tôi khởi đầu là một bản sao:
- Lặp liên tục di chuyển xuống dưới.
- Nếu
đang chạm [Người chơi]thì:- Nếu là vật phẩm tốt (Táo): thay đổi
Điểmmột lượng1, phát âm thanhPop. - Nếu là vật phẩm xấu (Bom): thay đổi
Mạngmột lượng-1, phát âm thanhBoom. - Xóa bản sao này.
- Nếu là vật phẩm tốt (Táo): thay đổi
- Khi tôi khởi đầu là một bản sao:
📘 Bài 3 (Tuần 27): Lập trình Trọng lực & Chuyển động nhảy (Platformer)
Mục tiêu: Tạo chuyển động nhảy và rơi tự do mượt mà cho nhân vật.
Thuật toán Trọng lực tiêu chuẩn:
- Tạo biến riêng của nhân vật chính:
toc_do_y. - Vòng lặp chính xử lý chuyển động theo trục đứng Y:
- Thay đổi y một lượng
toc_do_y. - Thay đổi
toc_do_ymột lượng-1(Gia tốc trọng lực kéo xuống). - Nếu
đang chạm [Mặt đất]thì:- Lặp lại cho đến khi
không đang chạm [Mặt đất]:- Thay đổi y một lượng
1(Đẩy nhân vật lên bề mặt đất).
- Thay đổi y một lượng
- Đặt
toc_do_ythành0. - Nếu
phím mũi tên lên được nhấnthì:- Đặt
toc_do_ythành12(Vận tốc nhảy lên ban đầu).
- Đặt
- Lặp lại cho đến khi
- Thay đổi y một lượng
📘 Bài 4 (Tuần 28): Quản lý Trạng thái trò chơi bằng Tin nhắn (Broadcast)
Mục tiêu: Đồng bộ hóa toàn bộ nhân vật qua các màn hình giao diện khác nhau.
1. Cấu hình các trạng thái Game
- Tạo biến toàn cục
trang_thainhận các giá trị:MENU,PLAYING,GAME_OVER.
2. Phối hợp Phát - Nhận tin nhắn:
- Khi nhấn cờ xanh:
- Đặt
trang_thaithànhMENU. - Phát tin nhắn
SHOW_MENU. (Nhân vật nút Start sẽ hiện, nhân vật chính sẽ ẩn).
- Đặt
- Khi người chơi bấm vào nút Start:
- Đặt
trang_thaithànhPLAYING. - Phát tin nhắn
START_GAME. (Nút Start sẽ ẩn, nhân vật chính sẽ hiện và bắt đầu di chuyển, quái vật bắt đầu sinh bản sao).
- Đặt
- Khi biến
Mạng= 0:- Đặt
trang_thaithànhGAME_OVER. - Phát tin nhắn
SHOW_GAME_OVERvà dừng tất cả các hoạt động khác.
- Đặt
📘 Bài 5 (Tuần 29): Trò chơi bắn máy bay (Space Invaders)
Mục tiêu: Kết hợp đồng thời bản sao của đạn bắn và bản sao của kẻ địch.
1. Lập trình nhân vật Đạn bắn
Nhân vật Đạn được vẽ nhỏ và ẩn đi khi bắt đầu.
- Khi người chơi nhấn phím Space:
- Đi tới
Người chơi. - Tạo bản sao của
bản thân.
- Đi tới
- Khi tôi khởi đầu là một bản sao:
- Hiện.
- Lặp lại cho đến khi
tọa độ y > 170hoặcđang chạm [Kẻ địch]:- Thay đổi y một lượng
10(Bay lên nhanh).
- Thay đổi y một lượng
- Xóa bản sao này.
2. Kẻ địch nhận va chạm với Đạn
Ở nhân vật Kẻ địch:
- Khi tôi khởi đầu là một bản sao:
- Hiện, di chuyển xuống dưới.
- Lặp liên tục:
- Nếu
đang chạm [Đạn]thì:- Tạo hiệu ứng nổ (đổi trang phục).
- Thay đổi
Điểmmột lượng1. - Xóa bản sao này.
- Nếu
📘 Bài 6 (Tuần 30): Trò chơi Mê cung nhiều màn chơi (Multi-level)
Mục tiêu: Lập trình chuyển cấp độ màn chơi linh hoạt.
Thuật toán chuyển màn chơi:
- Tạo biến
Levelđặt thành1khi bắt đầu. - Nhân vật mê cung thiết kế 3 trang phục (Costumes) tương ứng với 3 bản đồ mê cung từ dễ đến khó.
- Lập trình ở nhân vật người chơi:
- Lặp liên tục di chuyển.
- Nếu
đang chạm [Cúp vàng](Đích đến) thì:- Phát âm thanh chiến thắng màn.
- Thay đổi
Levelmột lượng1. - Đi tới điểm xuất phát
x: -200 y: 140(Điểm đầu của mê cung tiếp theo).
- Lập trình ở nhân vật Mê cung:
- Lặp liên tục:
- Đổi trang phục thành
Level. - Nếu
Level > 3thì phát tin nhắnVICTORYvà kết thúc game.
- Đổi trang phục thành
- Lặp liên tục:
📘 Bài 7 (Tuần 31): Đồ họa, Hoạt ảnh chuyển động & Âm thanh
Mục tiêu: Nâng cao chất lượng trải nghiệm nghe nhìn của trò chơi.
1. Lập trình hoạt ảnh đi bộ mượt mà
Khi nhân vật di chuyển qua lại, ta phải thay đổi trang phục liên tục để tạo cảm giác nhân vật đang bước đi chân thực (Animation).
- Khi phím mũi tên phải được nhấn:
- Hướng về phía
90. - Di chuyển
5bước. - Đợi
0.1giây (độ trễ hợp lý để hoạt ảnh không chạy quá nhanh). - Sang trang phục kế tiếp (
next costume).
- Hướng về phía
2. Sử dụng Âm thanh đúng thời điểm
- Nhạc nền (Background Music): Chọn một đoạn nhạc lặp lại tốt (Loop) và dùng khối
phát âm thanh đến hết (play sound ... until done)đặt trong vòng lặpliên tụcđể nhạc chạy lặp vô tận suốt màn chơi. - Âm thanh tương tác (Sound Effects): Sử dụng lệnh
bắt đầu âm thanh (start sound ...)khi ăn điểm hoặc va chạm để không làm gián đoạn luồng di chuyển của nhân vật (lệnhbắt đầu âm thanhsẽ chạy độc lập, không bắt chương trình phải đợi âm thanh kết thúc).
