Player immutable
Some checks failed
Build and Test (KnockOutWhist) TeamCity build failed

This commit is contained in:
LQ63
2024-12-05 19:23:16 +01:00
parent 0a4d725669
commit 87e9d66f46
5 changed files with 24 additions and 15 deletions

View File

@@ -5,7 +5,16 @@ import de.knockoutwhist.rounds.Trick
import scala.util.Try
class AIPlayer private[player](name: String) extends AbstractPlayer(name) {
class AIPlayer private[player](name: String, hand: Option[Hand]) extends AbstractPlayer(name, hand) {
override def provideHand(hand: Hand): AbstractPlayer = {
AIPlayer(name, Some(hand))
}
override def removeCard(card: Card): (Int, AbstractPlayer) = {
val npl = AIPlayer(name, Some(hand.get.removeCard(card)))
(npl.hand.size, npl)
}
override def handlePlayCard(hand: Hand, trick: Trick): Try[Card] = {
Try{
AILogic.decideCard(this, trick)

View File

@@ -5,19 +5,11 @@ import de.knockoutwhist.rounds.Trick
import scala.util.Try
abstract case class AbstractPlayer private[player](var name: String) {
private var hand: Option[Hand] = None
abstract case class AbstractPlayer private[player](var name: String, hand: Option[Hand], doglife: Boolean = false) {
def currentHand(): Option[Hand] = hand
var doglife: Boolean = false
def provideHand(hand: Hand): Boolean = {
this.hand = Some(hand)
true
}
def provideHand(hand: Hand): AbstractPlayer
def removeCard(card: Card): Int = {
hand = Some(hand.get.removeCard(card))
hand.get.cards.size
}
def removeCard(card: Card): (Int, AbstractPlayer)
def handlePlayCard(hand: Hand, trick: Trick): Try[Card]
def handleDogPlayCard(hand: Hand, trick: Trick, needstoplay: Boolean): Try[Option[Card]]

View File

@@ -8,7 +8,15 @@ import de.knockoutwhist.rounds.Trick
import scala.util.Try
class HumanPlayer private[player](name: String) extends AbstractPlayer(name) {
class HumanPlayer private[player](name: String, hand: Option[Hand]) extends AbstractPlayer(name, hand) {
override def provideHand(hand: Hand): AbstractPlayer = {
HumanPlayer(name, Some(hand))
}
override def removeCard(card: Card): (Int,AbstractPlayer) = {
val npl = HumanPlayer(name, Some(hand.get.removeCard(card)))
(npl.hand.size, npl)
}
override def handlePlayCard(hand: Hand, trick: Trick): Try[Card] = {
ControlHandler.invoke(RequestCardEvent(hand))
}

View File

@@ -7,7 +7,7 @@ class AIPlayerBuilder extends PlayerBuilder {
override def setName(name: String): PlayerBuilder = {
if (unfinished.isEmpty) {
unfinished = Some(AIPlayer(name))
unfinished = Some(AIPlayer(name, None))
} else {
unfinished.get.name = name
}

View File

@@ -8,7 +8,7 @@ class HumanoidBuilder extends PlayerBuilder {
private var unfinished: Option[HumanPlayer] = None
override def setName(name: String): PlayerBuilder = {
if (unfinished.isEmpty) {
unfinished = Some(HumanPlayer(name))
unfinished = Some(HumanPlayer(name, None))
} else {
unfinished.get.name = name
}