PADDLE BALL
Giới thiệu về PADDLE BALL
Paddle Ball Game là một trò chơi arcade kinh điển được xây dựng bằng Flutter.
1. Kiến trúc & Công nghệ Trò chơi Paddle Ball Trò chơi được phát triển bằng Flutter, tận dụng khả năng hiển thị hiệu năng cao để tạo hoạt ảnh mượt mà.Công cụ hoạt ảnh: Vòng lặp trò chơi được điều khiển bởi một StatefulWidget sử dụng SingleTickerProviderStateMixin và một AnimationController với thời lượng cố định (16ms cho ~60 FPS). Phương thức _updateGame, được gọi trên mỗi tick, xử lý tất cả các kiểm tra vật lý và va chạm.Hiển thị: Các yếu tố trò chơi (Bóng, Vợt, Gạch) được hiển thị bằng cách kết hợp các widget Flutter: Transform.translate trong một Stack để định vị chính xác dựa trên tọa độ $(\text{x}, \text{y})$ được tính toán và các widget Container được tạo kiểu để tạo sự hấp dẫn về mặt hình ảnh (gradient, bóng).Hệ tọa độ: Công cụ vật lý hoạt động trên một hệ tọa độ trung tâm trong đó $(0, 0)$ là tâm màn hình, đơn giản hóa logic va chạm với các cạnh và vợt.2. Cơ chế chơi cốt lõiA. Chuyển động của quả bóng: Vị trí của quả bóng $(\text{ballX}, \text{ballY})$ được cập nhật trên mỗi khung hình dựa trên vectơ hiện tại của nó $(\text{velocityX}, \text{velocityY})$. Tốc độ & Lên cấp: Tốc độ của quả bóng tăng lên theo từng cấp độ, khiến trò chơi ngày càng trở nên thử thách hơn (velocityX/Y = 4 + (level * 0.5)). Va chạm với tường: Khi quả bóng chạm vào các ranh giới màn hình theo chiều dọc (trái/phải) hoặc chiều ngang (trên), thành phần vận tốc tương ứng sẽ được đảo ngược (velocityX = -velocityX hoặc velocityY = -velocityY). Điều khiển vợt: Vị trí ngang của vợt (paddleX) được điều khiển trực tiếp bằng thao tác kéo của người dùng thông qua hàm gọi lại onPanUpdate của GestureDetector. Nảy thông minh: Va chạm của vợt sử dụng phép tính nảy thông minh. Góc của quả bóng đi ra được xác định bởi vị trí va chạm trên vợt (càng gần mép vợt thì tốc độ ngang càng lớn), khuyến khích những cú đánh góc cạnh để trúng những viên gạch khó với tới.C. Gạch và Tính điểmKhởi tạo: Gạch được khởi tạo trong một lưới (mặc định 5 × 6) với màu sắc dựa trên vị trí hàng của chúng.Va chạm: Va chạm gạch được kiểm tra trong mỗi lần cập nhật trò chơi. Khi một quả bóng va chạm, viên gạch được đánh dấu là bị phá hủy (isDestroyed = true), điểm số tăng thêm 10 điểm và hướng dọc hoặc ngang của quả bóng bị đảo ngược dựa trên phía va chạm.Mục tiêu trò chơi:Lên cấp: Cấp độ được chuyển lên khi tất cả các viên gạch bị phá hủy. Một bộ gạch mới được khởi tạo và tốc độ của quả bóng tăng lên.Mất mạng: Nếu quả bóng rơi xuống dưới vị trí thẳng đứng của vợt (paddleY), người chơi sẽ mất một mạng. Quả bóng được đặt lại về vị trí trung tâm phía trên.Kết thúc trò chơi: Trò chơi kết thúc khi người chơi hết mạng (lives <= 0).3. Giao diện người dùng và màn hình hiển thị trạng thái (HUD): Hiển thị điểm số, số mạng và cấp độ hiện tại ở đầu màn hình. Trạng thái trò chơi: Ứng dụng quản lý ba trạng thái khác nhau:Màn hình bắt đầu: Hiển thị hướng dẫn và nút BẮT ĐẦU TRÒ CHƠI để bắt đầu cấp độ 1. Trò chơi đang hoạt động: Vòng lặp chơi chính, nơi vợt, bóng và các viên gạch được hiển thị và hoạt động. Kết thúc trò chơi: Hiển thị điểm số cuối cùng và cấp độ đạt được, cùng với nút CHƠI LẠI để đặt lại trạng thái trò chơi.