Lập Trình Đồng Hồ Đếm Ngược Giao Thừa Bằng Scratch 3.0: Hướng Dẫn Chi Tiết
Bạn đang tìm kiếm một dự án Scratch nâng cao để thử thách kỹ năng lập trình của mình? Dự án Đếm Ngược Giao Thừa (New Year Countdown) là lựa chọn hoàn hảo! Đây không chỉ là một game vui vẻ mà còn là cơ hội tuyệt vời để học về cách xử lý thời gian thực, năm nhuận và tạo hiệu ứng hình ảnh động chuyên nghiệp như Parallax và Pháo hoa trong Scratch.
1. Chuẩn Bị: Tạo Các Nhân Vật Chính
Dự án của chúng ta sẽ sử dụng 6 nhân vật (Sprite) và Sân khấu (Stage).
| Nhân vật | Chức năng chính |
| Tính thời gian | Logic cốt lõi: Tính tổng số giây và xử lý năm nhuận. |
| Stage | Tính toán số giây còn lại và chuyển đổi thành Ngày/Giờ/Phút/Giây. |
| Số | Hiển thị các chữ số đếm ngược (sử dụng bản sao). |
| Background | Tạo hiệu ứng nền di chuyển Parallax theo chuột. |
| Pháo hoa | Tạo hiệu ứng pháo hoa bay lên và nổ tung. |
| hiệu ứng pháo hoa | Tạo hiệu ứng ánh sáng chớp của vụ nổ. |
| Bầu trời | Tạo hiệu ứng nền trời đổi màu liên tục (Color Effect). |
Bước 1.1: Tạo Biến và Danh Sách Cần Thiết
Trong nhân vật Tính thời gian, tạo các biến và danh sách sau:
- Variables (Toàn cục):
Ngày,Giờ,Phút,Giây(Dùng để hiển thị kết quả)tổng số giây tính từ đầu năm nay tới đầu năm sau(Mốc kết thúc)tổng số giây tính từ đầu năm nay tới 1 mốc thời gian bất kì(Mốc hiện tại)số giây còn lại(Hiệu số giữa hai mốc)số giây cần cộng thêm(Biến tạm để chuyển đổi đơn vị)
- Lists (Nội bộ):
Số ngày trong thángvàSố ngày trong tháng (Năm Nhuận)(Để xử lý chính xác 28,29,30,31 ngày).
2. Lập Trình Logic Đếm Ngược (The Core Logic)
Bước 2.1: Tạo Khối Tùy Chỉnh “Thời Gian Kết Thúc”
Đây là khối quan trọng nhất. Trong sprite Tính thời gian, tạo khối “Thời Gian Kết Thúc: Năm %s Tháng %s Ngày %s Giờ %s Phút %s Giây %s” (chọn Run without screen refresh).
Khối này tính tổng số giây từ đầu năm (01/01 năm hiện tại) đến mốc thời gian bạn nhập vào (hoặc thời gian hiện tại).
Logic chính:
- Tính Giây cho các Năm/Tháng trọn vẹn: Lặp qua từng năm/tháng. Sử dụng khối
modđể kiểm tra Năm Nhuận (Năm mod 4 = 0) và cộng thêm 31.622.400 giây (năm nhuận) hoặc 31.536.000 giây (năm thường). - Tính Giây cho Ngày/Giờ/Phút/Giây: Nhân các giá trị thời gian đầu vào với hệ số chuyển đổi tương ứng:
- Ngày: ×86400
- Giờ: ×3600
- Phút: ×60
- Giây: ×1
Bước 2.2: Khởi tạo và Lặp lại (Sprite Tính thời gian)
Trong khối when flag clicked:
- Thiết lập Mốc Kết Thúc:
call“Thời Gian Kết Thúc…” với Năm =current YEAR + 1, Tháng/Ngày/Giờ/Phút/Giây = 0.settổng số giây tính từ đầu năm nay tới đầu năm sautotổng số giây tính từ đầu năm nay tới 1 mốc thời gian bất kì.
- Vòng lặp
forever:call“Thời Gian Kết Thúc…” với các giá trịcurrent [YEAR/MONTH/DATE/HOUR/MINUTE/SECOND]để lấy Mốc Hiện tại.broadcastcập nhật lại thời gian(Gửi tín hiệu đến Stage).wait untilnot(biến tạm=current SECOND) để chờ đến giây tiếp theo.
Bước 2.3: Chuyển đổi Đơn vị (Sprite Stage)
Trong sprite Stage, tạo khối when I receive cập nhật lại thời gian:
- Tính Hiệu số:
setsố giây còn lạitotổng số giây tới đầu năm sau–tổng số giây tới 1 mốc thời gian bất kì.setsố giây cần cộng thêmtosố giây còn lại.
- Khối Tùy Chỉnh
Cập nhật lại thời gian: Tạo khối này (chọn Run without screen refresh).- Giây:
setGiâytosố giây cần cộng thêmmod 60. - Phút:
setPhútto(số giây cần cộng thêm / 60) mod 60. - Giờ:
setGiờto(số giây cần cộng thêm / 3600) mod 24. - Ngày:
setNgàyto(số giây cần cộng thêm / 86400). broadcastĐếm số trong chuỗi ngày giờ(để nhân vật Số hiển thị).
- Giây:
3. Lập Trình Hiển Thị và Hình ảnh Động (Visual Effects)
Bước 3.1: Hiển thị Số (Sprite Số)
- Tạo Trang phục: Tạo 10 trang phục cho các chữ số 0 đến 9.
- Tạo Bản sao: Trong
when flag clicked, dùng khốirepeat 8vàcreate clone of myselfđể tạo 8 bản sao (cho 2 Ngày, 2 Giờ, 2 Phút, 2 Giây). - Lập trình Bản sao: Trong
when I start as a clone, sử dụng chuỗi khốiif/else ifdựa trênmã số bản sao(từ 1 đến 8) để xác định vị trí và giá trị của từng chữ số.- Sử dụng khối
switch costume tovàletter [index] of [variable]để hiển thị đúng chữ số.
- Sử dụng khối
Bước 3.2: Hiệu ứng Nền Parallax (Sprite Background)
Parallax là kỹ thuật làm cho các lớp nền khác nhau di chuyển ở tốc độ khác nhau khi chuột di chuyển, tạo cảm giác về chiều sâu.
- Tạo Bản sao: Tương tự như sprite Số, tạo 3 bản sao cho 3 lớp nền (
Tòa nhà,Núi,Mặt Trăng). - Logic di chuyển (trong
when I start as a clone):- Sử dụng công thức dựa trên vị trí chuột (
mouse x,mouse y) và vị trí hiện tại của sprite: New X=Current X+T(mouse X/k)−Current X - Trong đó:
- k: Hệ số chia nhỏ vị trí chuột (thường là 5)
- T: Hệ số đàn hồi (càng lớn, di chuyển càng chậm).
- Lớp gần (
Tòa nhà): Dùng T nhỏ (ví dụ: 15) để di chuyển nhanh. - Lớp xa (
Mặt Trăng): Dùng T lớn (ví dụ: 55) để di chuyển chậm.
- Sử dụng công thức dựa trên vị trí chuột (
Bước 3.3: Hiệu ứng Pháo hoa (Sprite Pháo hoa & hiệu ứng pháo hoa)
- Sprite Pháo hoa: Dùng khối
foreverđể định kỳ tạo bản sao pháo hoa bay lên. Khi đạt đến độ cao nhất định, nó tạo các bản sao con để tạo hiệu ứng nổ (sử dụngpoint in directionvàmove steps). - Sprite hiệu ứng pháo hoa: Dùng khối
when I receivebắn pháo hoa. Sử dụng hiệu ứngGHOST(trong suốt) và vòng lặprepeatđể tăng dầnGHOSTby 10, tạo hiệu ứng ánh sáng bùng lên rồi mờ dần.
Kết Luận: Khai Phá Sức Mạnh Lập Trình Scratch!
Dự án Đếm Ngược Giao Thừa (New Year Countdown) không chỉ là một ứng dụng đếm giờ đơn giản; nó là một bài học tổng hợp tuyệt vời về việc áp dụng các khái niệm lập trình thực tế.
Bạn đã học được cách:
- Sử dụng khối Custom Block (Khối tùy chỉnh) để tạo ra các hàm tính toán phức tạp như xử lý năm nhuận và chuyển đổi đơn vị thời gian.
- Quản lý thời gian thực bằng cách đồng bộ hóa dự án với đồng hồ hệ thống.
- Áp dụng kỹ thuật Parallax Scrolling để tạo ra hiệu ứng chiều sâu 3D chuyên nghiệp.
- Sử dụng bản sao (Clones) một cách hiệu quả để giảm thiểu khối lệnh và tăng hiệu suất hiển thị.
Hãy coi đây là bước đệm để tiến xa hơn trong thế giới lập trình Scratch. Tiếp theo, bạn có thể thử thách bản thân bằng cách tích hợp âm thanh thông báo khi đồng hồ đếm về 0, hoặc khám phá các dự án lập trình game, lập trình trí tuệ nhân tạo (AI) khác trên kênh Dare2Share!







