Overall architecture
Game dùng mô hình 1 trang tĩnh: index.html chứa layout + phần giải thích,
style.css lo toàn bộ UI responsive, còn script.js quản lý state,
timer, input, persistence và render.
Minesweeper but fun and modern
Một phiên bản Minesweeper tươi vui theo tinh thần mini game marketing cho ngành F&B: nhanh, dễ vào trận, hợp mobile và đủ chắc để mở rộng cho campaign sau này.
Game dùng mô hình 1 trang tĩnh: index.html chứa layout + phần giải thích,
style.css lo toàn bộ UI responsive, còn script.js quản lý state,
timer, input, persistence và render.
Bàn cờ là mảng 2 chiều các ô. Mỗi ô giữ row, col,
isMine, isRevealed, isFlagged và
adjacentMines. DOM chỉ phản chiếu state này, nên logic dễ kiểm soát và mở rộng.
Mìn chỉ được rải sau cú click đầu tiên. Thuật toán loại ô đầu tiên và toàn bộ hàng xóm của nó khỏi vùng đặt mìn, nhờ vậy người chơi không thể thua ngay từ nước mở màn.
Khi mở một ô có 0 mìn lân cận, game dùng hàng đợi để lan sang các ô trống kế bên,
rồi tiếp tục mở lớp viền số xung quanh. Cách này tránh đệ quy sâu và chạy ổn trên bàn lớn.
Trạng thái game có cờ isPaused. Khi pause, timer dừng, ô cờ không nhận input và
một lớp phủ xuất hiện để báo game đang đứng yên. Resume chỉ việc tiếp tục đồng hồ từ mốc đang có.
Left click để mở ô. Right click hoặc nhấn giữ trên điện thoại để cắm cờ. Click vào ô số đã mở để dùng chord.