Tôi đang thiết kế trò chơi cờ vua bằng Java (không AI, chỉ do người dùng kiểm soát), và vẫn quen với OOP. Tôi có hai câu hỏi.Thiết kế các đối tượng cho trò chơi cờ vua trong java
Tôi đã nghĩ đến việc có, ngoài các đối tượng Game
, Cell
, Piece
và Board
, đối tượng Player
.
Câu hỏi của tôi là, tôi có thực sự cần phải không? Tất nhiên tôi không cần, nhưng là một trong hai lựa chọn được coi là thiết kế tốt hơn? Một mặt, có vẻ như một Người chơi rất hữu ích để chứa thông tin về các phần của người chơi và nên chứa các phương pháp như takeTurn()
. (Để thực hiện của tôi, tôi cũng muốn theo dõi tất cả các động thái có thể, vì vậy tôi sẽ có một phương pháp getAllMoves()
). Mặt khác, không phải là Player đơn giản là sắp xếp lại dữ liệu hiện có? Mỗi mảnh đã có một dấu hiệu của người chơi mà nó thuộc về. Và vì trò chơi của tôi không chứa AI, điều này có thể có ý nghĩa đối với takeTurn()
thuộc về Game
, thay vì Player
. Mặt khác, có lẽ Player
chỉ có thể có phương thức getAllMoves()
, sử dụng dữ liệu của nó nhưng không thực hiện hành động.
Câu hỏi thứ hai, có liên quan nếu câu trả lời cho câu hỏi đầu tiên là có, là làm cách nào để tổ chức các mối quan hệ giữa các đối tượng? getAllMoves()
sẽ lấy đầu vào như một mảng ô; nhưng nó cảm thấy lạ khi lớp Player phụ thuộc vào thực tế là các tế bào của nó khớp nhau (là một tập hợp con) các ô được truyền vào như đầu vào. Sẽ cảm thấy ổn hơn nếu dữ liệu được chia theo từng ô sẽ được giữ cùng với mảng của tất cả các ô trong Bảng và được cập nhật cùng nhau, do đó đảm bảo rằng chúng đồng ý. Tất nhiên, sự đảm bảo rằng họ đồng ý sẽ tồn tại một trong hai cách, nhưng có vẻ như là đối tượng Player không nên nhận thức được sự bảo đảm đang diễn ra trong đối tượng Board
.
Làm cách nào để giải quyết các câu hỏi này?
Cảm ơn!
Có vẻ như bạn đang thử [BDUF] (http://en.wikipedia.org/wiki/Big_Design_Up_Front) - có lẽ bạn có thể xem xét một phương tiện thay thế cho việc lái xe ra mô hình đối tượng của bạn, như [TDD] (http://msdn.microsoft.com/en-us/magazine/dd882516.aspx) – razlebe
BTW Tôi nghĩ rằng thiết kế một trò chơi như cờ vua là một cách tiếp cận rất tốt để trở nên quen thuộc với OOP. Hãy nhớ ủng hộ các associatons bằng giao diện qua các lớp con trực tiếp bởi vì sau này tạo ra một khớp nối chặt chẽ mà không phải lúc nào cũng cần thiết. –