Tôi sắp tạo lớp người chơi và người chơi AI (AIBasicPlayer, AINormalPlayer và AIHardPlayer) cho trò chơi bài của tôi (gin rummy). Phương pháp OOP hoặc Design Pattern tốt nhất để tạo các lớp học như thế nào? Tôi đã kiểm tra một số các trò chơi thẻ mã nguồn mở và so sánh cách tiếp cận của họ, sau đây là cách tiếp cận tôi đã thu thập được:Trình chơi trò chơi trên thẻ Class OOP Design
***Classes**
1. player class only
public class player{
}
public class AIPlayer{
}
2. base class player
public abstract class player{
}
public class HumanPlayer extends player{
}
public class APlayer extends player{
}
3. interface player
public interface IPlayer{
}
public class Player implements IPlayer{}
public class AIPlayer implements IPlayer{}
*** Methods**
takeTurn()
doDiscard()
doDraw() //pick from discard pile or deck
doKnock()
Tôi hiểu việc sử dụng các mã trên, nhưng tôi không thể quyết định cái nào để áp dụng hoặc thực hiện Tôi mới vào OOP hoặc Design Pattern và mẫu tư vấn và mã của bạn sẽ là một trợ giúp rất lớn.
@ ggreiner-Điều đó có ý nghĩa. Làm thế nào về thiết kế cho AIPlayer có sức mạnh khác nhau? Ý tôi là, tôi có AIPlayer khác nhau như AIBasicPlayer, AINormalPlayer và AIHardPlayer. Tôi nên sử dụng mẫu thiết kế nào vì chúng có cùng phương pháp với cường độ hoặc thuật toán khác nhau? Tôi sẽ đánh giá cao nếu bạn có thể cung cấp một mã mẫu. – Zack
@Zack trong lớp AIPlayer của bạn, bạn có thể làm điều gì đó dọc theo dòng xác định thành phần AIBehavior xác định cách anh ấy chơi. Bằng cách đó bạn chỉ có thể sử dụng cùng lớp AIPlayer cho mọi khó khăn và cập nhật thành phần AIBehavior nếu cần. – SpartanDonut