gtheler 5 лет назад
Родитель
Сommit
a947b23d4a
4 измененных файлов: 47 добавлений и 5 удалений
  1. +5
    -1
      src/base.h
  2. +4
    -3
      src/blackjack.cpp
  3. +35
    -1
      src/tty.cpp
  4. +3
    -0
      src/tty.h

+ 5
- 1
src/base.h Просмотреть файл

@@ -74,7 +74,7 @@ namespace Libreblackjack {
enum class Info {
None,
InvalidBet,
BetInvalid,
NewHand,
Shuffle,
CardPlayer,
@@ -83,6 +83,9 @@ namespace Libreblackjack {
DealerBlackjack,
PlayerWinsInsurance,
PlayerBlackjackAlso,
PlayerSplitInvalid,
PlayerSplitOk,
PlayerSplitIds,
PlayerNextHand,
PlayerPushes,
PlayerLosses,
@@ -183,6 +186,7 @@ class Hand {
class PlayerHand : public Hand {
public:
PlayerHand(std::size_t i = 0) : id(i) { };
std::size_t id;
unsigned int bet = 0;
bool insured = false;

+ 4
- 3
src/blackjack.cpp Просмотреть файл

@@ -430,13 +430,13 @@ int Blackjack::process(void) {
case Libreblackjack::PlayerActionTaken::Bet:
// TODO: bet = 0 -> wonging
if (player->currentBet == 0) {
info(Libreblackjack::Info::InvalidBet, player->currentBet);
info(Libreblackjack::Info::BetInvalid, player->currentBet);
return 0;
} else if (player->currentBet < 0) {
info(Libreblackjack::Info::InvalidBet, player->currentBet);
info(Libreblackjack::Info::BetInvalid, player->currentBet);
return 0;
} else if (max_bet != 0 && player->currentBet > max_bet) {
info(Libreblackjack::Info::InvalidBet, player->currentBet);
info(Libreblackjack::Info::BetInvalid, player->currentBet);
return 0;
} else {
// ok, valid bet, copy the player's bet and use the local copy
@@ -526,6 +526,7 @@ int Blackjack::process(void) {
///ip+split+detail This command can be abbreviated as `p` (for pair).
case Libreblackjack::PlayerActionTaken::Split:

// TODO: front() and front()+1
firstCard = *(playerInfo.currentHand->cards.begin());
secondCard = *(++playerInfo.currentHand->cards.begin());

+ 35
- 1
src/tty.cpp Просмотреть файл

@@ -93,7 +93,7 @@ void Tty::info(Libreblackjack::Info msg, int p1, int p2) {
switch (msg) {

case Libreblackjack::Info::InvalidBet:
case Libreblackjack::Info::BetInvalid:
if (p1 < 0) {
// s = "bet_negative";
s = "Your bet is negative (" + std::to_string(p1) + ")";
@@ -185,6 +185,40 @@ void Tty::info(Libreblackjack::Info msg, int p1, int p2) {
render = true;
break;

case Libreblackjack::Info::PlayerSplitInvalid:
// s = "player_split_invalid";
s = "Cannot split";
render = true;
break;

case Libreblackjack::Info::PlayerSplitOk:
// s = "player_split_ok";
s = "Splitting hand" + ((p1 != 0)?(" #" + std::to_string(p1)):"");
handToSplit = p1;
render = true;
break;

case Libreblackjack::Info::PlayerSplitIds:

// TODO: check if the hand is found
for (auto hand = hands.begin(); hand != hands.end(); ++currentHand) {
if (hand->id == handToSplit) {
hand->id = p1;
cardToSplit = hand.back();
hand.pop_back();
break;
}
}
// create a new hand
PlayerHand newHand;
newHand.id = playerInfo.hands.size() + 1;
newHand.bet = playerInfo.currentHand->bet;
render = true;
break;
case Libreblackjack::Info::PlayerNextHand:
// s = "player_next_hand";
s = "Playing next hand #" + std::to_string(p1);

+ 3
- 0
src/tty.h Просмотреть файл

@@ -56,6 +56,9 @@ class Tty : public Player {
std::string input_buffer;
#endif

std::size_t handToSplit;
unsigned int cardToSplit;
std::string arrow;
std::string prompt;

Загрузка…
Отмена
Сохранить