{
  "title": "Dự án 3: Đèn Giao Thông Tự Động",
  "subtitle": "Học và rèn luyện kỹ năng Bài 22 môn Web",
  "description": [
    {
      "text": "Chào mừng các em học sinh lớp 4! Trong dự án 3 này, chúng ta sẽ lập trình ứng dụng 'Đèn Giao Thông Tự Động'.",
      "bold": false
    },
    {
      "text": " Em sẽ thực hành và sử dụng các kiến thức đã học ở Bài 22 kết hợp với các kiến thức từ các bài trước để xây dựng giao diện tương tác sinh động.",
      "bold": false
    }
  ],
  "knowledge_title": "Kiến thức trọng tâm",
  "knowledge_tags": [
    "Bài học chính: Bài 22",
    "Ngôn ngữ: HTML, CSS, JavaScript",
    "Đếm thời gian: setInterval()",
    "Dừng đếm: clearInterval()",
    "Thời gian chờ: setTimeout()"
  ],
  "steps_title": "Các bước thực hiện chi tiết",
  "steps": [
    {
      "title": "Bước 1: Khởi tạo thư mục dự án",
      "body": "- Trên ổ đĩa Z, tạo thư mục dự án của em: hocsinh01/{tên của em}/bai22-3.\n- Tạo file: index.html, style.css, và tạo một thư mục con tên là assets để chứa các tệp tài nguyên hình ảnh, âm thanh."
    },
    {
      "title": "Bước 2: Xây dựng khung HTML chính",
      "body": "- Trong thẻ <head>, khai báo thẻ đường dẫn cơ sở: <base href=\"./assets/\"> và kết nối file CSS ngoài bằng đường dẫn tương đối lùi cấp: <link rel=\"stylesheet\" href=\"../style.css\">.\n- Tạo một thẻ div lớp 'container' bao bọc toàn bộ nội dung.\n- Thêm thẻ tiêu đề chính <h1> với nội dung 'ĐÈN GIAO THÔNG TỰ ĐỘNG'.\n- Tạo nút bấm <button class=\"btn-kick\"> với nội dung 'KÍCH HOẠT' và sự kiện click chuột onclick gọi tương tác.\n- Tạo nút bấm <button class=\"btn-go\"> với nội dung 'DỪNG LẠI' và sự kiện click chuột onclick gọi tương tác."
    },
    {
      "title": "Bước 3: Lập trình tương tác JavaScript",
      "body": "- Tự viết mã JavaScript trong thẻ <script> đặt ở cuối body (học sinh tự xây dựng, không có code mẫu):\n  + Tự khai báo biến thời gian đếm giây (let giay = 5;), biến lưu bộ đếm (let boDem = null;) và trạng thái màu đèn giao thông ban đầu.\n  + Khai báo hàm kích hoạt đèn giao thông: kiểm tra tránh kích hoạt lặp lại, sử dụng hàm setInterval() chu kỳ 1000ms để trừ lùi biến giây (giay--), cập nhật hiển thị ra thẻ <div id=\"so-giay\">.\n  + Khi biến giây về 0: đổi trạng thái đèn (giữa XANH và ĐỎ), thiết lập lại 5 giây và đổi màu nền tương ứng.\n  + Khai báo hàm dừng lại: sử dụng clearInterval(boDem) và gán lại boDem = null khi bấm nút 'DỪNG LẠI'."
    },
    {
      "title": "Bước 4: Định dạng CSS cho đẹp mắt",
      "body": "- Mở file style.css để thiết lập màu nền cho body là '#2c3e50'.\n- Định dạng lớp '.container': chiều rộng tối đa '600px', viền '3px solid #2ecc71' và đổ bóng đẹp mắt.\n- Thiết lập cursor: pointer cho tất cả phần tử tương tác click chuột được."
    },
    {
      "title": "Bước 5: Sáng tạo thêm",
      "body": "- Hãy bổ sung thêm ít nhất 5 nút bấm điều khiển thời gian khác (ví dụ: tăng thời gian, giảm thời gian, tạm dừng...) và lập trình các hiệu ứng thay đổi màu nền chớp nháy cảnh báo khẩn cấp khi thời gian sắp hết.\n- Định dạng màu sắc và hình nền mang đậm phong cách cá nhân độc đáo của riêng em để hoàn thành bài tập."
    }
  ],
  "code_samples_title": "Gợi ý Code mẫu",
  "code_samples_desc": "Đây là bài tập rèn luyện tư duy độc lập về nhà, học sinh hãy tự suy nghĩ và tự viết toàn bộ code HTML/CSS/JavaScript (không có code mẫu có sẵn).",
  "code_samples": [
    {
      "title": "HTML Gợi ý",
      "type": "html",
      "code": "<!-- Giao diện dự án Đèn Giao Thông Tự Động -->\n<base href=\"/* base href assets */\">\n<link rel=\"stylesheet\" href=\"/* đường dẫn lùi cấp ra style.css */\">\n<div class=\"container\">\n  <h1>ĐÈN GIAO THÔNG TỰ ĐỘNG</h1>\n  <button class=\"btn-kick\" onclick=\"/* JS code của em */\">KÍCH HOẠT</button>\n  <button class=\"btn-go\" onclick=\"/* JS code của em */\">DỪNG LẠI</button>\n</div>\n<script>\n  /* Tự viết mã JavaScript xử lý trong thẻ script của em */\n</script>"
    },
    {
      "title": "CSS Gợi ý",
      "type": "css",
      "code": "/* CSS Cơ bản cho dự án */\nbody {\n  background-color: /* màu nền: #2c3e50 */;\n}\n.container {\n  max-width: /* độ rộng container: 600px */;\n  border: /* viền: 3px solid #2ecc71 */;\n  /* bo góc, đổ bóng container */\n}\n.nut-bam, .btn, .btn-nhac, .btn-mo, .btn-dong, .btn-tinh, .btn-them, .btn-play, .btn-pause, .btn-check, .btn-kick, .btn-go {\n  /* màu nền nút bấm */\n  /* con trỏ chuột: bàn tay chỉ */\n}"
    }
  ],
  "tip": {
    "title": "💡 Mẹo nhỏ:",
    "desc": "Hàm setInterval() chạy lặp lại sau mỗi khoảng mili-giây. Phải nhớ lưu bộ đếm vào biến và dùng clearInterval() để dừng đếm khi cần thiết nhé!"
  }
}