Skip to content

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 < -170 hoặc đang chạm [Người chơi]:
      • Thay đổi y một lượng -5 (Rơi tự do).
    • 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ểm và biến Mạng.
  • Khi bắt đầu game: đặt Điểm thành 0, đặt Mạng thành 3.
  • Ở 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ểm một lượng 1, phát âm thanh Pop.
        • Nếu là vật phẩm xấu (Bom): thay đổi Mạng một lượng -1, phát âm thanh Boom.
        • Xóa bản sao này.

📘 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_y mộ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).
      • Đặt toc_do_y thành 0.
      • Nếu phím mũi tên lên được nhấn thì:
        • Đặt toc_do_y thành 12 (Vận tốc nhảy lên ban đầu).

📘 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_thai nhậ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_thai thành MENU.
    • 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).
  • Khi người chơi bấm vào nút Start:
    • Đặt trang_thai thành PLAYING.
    • 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).
  • Khi biến Mạng = 0:
    • Đặt trang_thai thành GAME_OVER.
    • Phát tin nhắn SHOW_GAME_OVER và dừng tất cả các hoạt động khác.

📘 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.
  • Khi tôi khởi đầu là một bản sao:
    • Hiện.
    • Lặp lại cho đến khi tọa độ y > 170 hoặc đang chạm [Kẻ địch]:
      • Thay đổi y một lượng 10 (Bay lên nhanh).
    • 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ểm một lượng 1.
        • Xóa bản sao này.

📘 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ành 1 khi 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 Level một lượng 1.
      • Đ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 > 3 thì phát tin nhắn VICTORY và kết thúc game.

📘 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 5 bước.
    • Đợi 0.1 giây (độ trễ hợp lý để hoạt ảnh không chạy quá nhanh).
    • Sang trang phục kế tiếp (next costume).

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ặp liê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ệnh bắt đầu âm thanh sẽ chạy độc lập, không bắt chương trình phải đợi âm thanh kết thúc).

Tài liệu hướng dẫn học Scratch Tin học trẻ