Exemplo n.º 1
0
  private void offerAndResolveInsurance() {
    for (int seatIndex = 0; seatIndex < seats.size(); seatIndex++) {
      Seat seat = this.seats.get(seatIndex);
      if (seat.hands.size() > 0) {
        seat.insuranceBet =
            seat.player.insureHand(seat.hands.get(0).cards(), this.dealerHand.get(0));

        for (BlackjackObserver observer : this.observers)
          observer.insuranceDecision(
              seatIndex, seat.hands.get(0).cards(), this.dealerHand.get(0), seat.insuranceBet);
      }
    }

    boolean dealerBlackjack = HandUtilities.blackjack(this.dealerHand);

    for (int seatIndex = 0; seatIndex < this.seats.size(); seatIndex++) {
      Seat seat = this.seats.get(seatIndex);

      if (seat.insuranceBet) {
        double insuranceBet = seat.hands.get(0).bet() / 2;

        if (dealerBlackjack) this.take -= insuranceBet * 2;
        else this.take += insuranceBet;

        for (BlackjackObserver observer : this.observers)
          observer.insuranceResult(
              seatIndex,
              insuranceBet,
              seat.hands.get(0).cards(),
              this.dealerHand.get(0),
              dealerBlackjack);
      }
    }
  }