Miền nghiệp vụ
Bàn cờ, quân cờ, người chơi, vị trí và luật Othello được mô tả bằng Java thuần, không phụ thuộc JavaFX.
Ứng dụng Othello JavaFX được tổ chức như một sản phẩm phần mềm dễ bảo trì, tách biệt logic, giao diện, kiểm thử và quy trình bàn giao.
Định hướng kỹ thuật
Tôi xây dựng Othello như một ứng dụng desktop hoàn chỉnh thay vì chỉ ghép luật chơi với các nút bấm. Mỗi trách nhiệm có vị trí rõ ràng và hành vi có thể được kiểm thử mà không cần mở giao diện.
Mục tiêu kỹ thuật
Trò chơi phải xử lý nước đi hợp lệ, lật quân, điểm số, nhiều chế độ, hoàn tác và lưu ván chơi, trong khi giao diện JavaFX vẫn độc lập với luật cốt lõi.
Cấu trúc dự án
Bàn cờ, quân cờ, người chơi, vị trí và luật Othello được mô tả bằng Java thuần, không phụ thuộc JavaFX.
Gameplay và controller điều phối lượt chơi, điểm số, chế độ và lịch sử trạng thái.
Gói graphics định nghĩa giao diện dùng lại, còn JavaFX xây dựng cửa sổ, bàn cờ và tương tác.
Cấu hình, lưu tệp, Java modules và Gradle kết nối ứng dụng với hệ điều hành.
Nguyên tắc làm việc
Interface giữa controller và view giúp logic không bị phụ thuộc vào một màn hình cụ thể.
Mỗi nước đi tạo một bản chụp trạng thái dùng cho hoàn tác, lưu và khôi phục ván chơi.
46 bài kiểm thử JUnit và Mockito bao phủ luật, người chơi, gameplay và controller mà không cần chạy JavaFX.
README giải thích cách build, test và chạy dự án trên macOS, Linux và Windows.
Quy trình bàn giao chuyên nghiệp
Gradle wrapper đảm bảo mọi thành viên dùng cùng một quy trình mà không phải cài Gradle toàn cục.
GitLab CI build dự án với JDK 22 và lưu tệp JAR dưới dạng artifact.
Java module system và jlink chuẩn bị môi trường chạy độc lập với đủ thư viện cần thiết.
Bản chơi thử
Phiên bản cho trình duyệt
Đặt quân vào ô được đánh dấu để bao vây và lật quân đối phương. Bạn có thể chọn chế độ hai người chơi hoặc đấu với AI Minimax của dự án.
Chế độ chơi
2
2
Lượt của bạn (quân đen). Bạn đang đấu với AI.
Tổng kết
Kết quả quan trọng không chỉ là một trò chơi có thể chơi được, mà là codebase có ranh giới rõ ràng: luật có thể phát triển độc lập, giao diện có thể thay thế, kiểm thử bảo vệ hành vi và quy trình bàn giao nằm ngay trong repository.