Estoy a punto de crear la clase Player and AI Players (AIBasicPlayer, AINormalPlayer y AIHardPlayer) para mi juego de cartas (gin rummy). ¿Cuál sería el mejor enfoque OOP o patrón de diseño para crear dichas clases? Revisé algunos de los juegos de tarjeta de código abierto y comparar sus enfoques, siguiendo son los enfoques he recogido:Card Game Player 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()
entiendo el uso de los códigos anteriores, pero no podía decidir cuál aplicar o poner en práctica Soy nuevo en OOP o Design Pattern y su muestra de consejos y códigos sería de gran ayuda.
@ ggreiner-Eso tiene sentido. ¿Qué tal el diseño de AIPlayer que tiene diferente fuerza? Quiero decir, tengo diferentes AIPlayer como AIBasicPlayer, AINormalPlayer y AIHardPlayer. ¿Qué patrón de diseño debo usar ya que tienen los mismos métodos con diferente fuerza o algoritmo? Le agradecería si pudiera proporcionar un código de muestra. – Zack
@Zack en su clase AIPlayer podría hacer algo en la línea de identificar un componente de AIBehavior que determine cómo juega. De esta forma, puede usar la misma clase AIPlayer para cada dificultad y actualizar el componente AIBehavior según sea necesario. – SpartanDonut