Skip to content

Commit 67b726e

Browse files
committed
simplifications
1 parent afbf19c commit 67b726e

File tree

2 files changed

+27
-30
lines changed

2 files changed

+27
-30
lines changed

SOLUTIONS/Exercise 10.1.2/CardGameGUI/blackjack.cpp

Lines changed: 21 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -142,61 +142,55 @@ void BlackJack::handOver()
142142
ui->actionHit_Me->setDisabled(true);
143143
ui->actionStay->setDisabled(true);
144144

145-
QMessageBox msgBox;
146-
147145
// if dealer gets 21, dealer wins automatically
148146
if(dealerHand->getValue() == 21) {
149-
msgBox.setText("Dealer gets 21. Dealer wins!");
150-
msgBox.exec();
151-
ui->sb_dealerScore->setValue(ui->sb_dealerScore->value() + 1);
147+
finalDecision("Dealer gets blackjack. Dealer wins!", ui->sb_dealerScore);
152148
return;
153149
}
154150

155151
// if player exceeds 21, gets busted and loose
156152
if(playerHand->getValue() > 21) {
157-
msgBox.setText("You exceeded 21 thus have lost!");
158-
msgBox.exec();
159-
ui->sb_dealerScore->setValue(ui->sb_dealerScore->value() + 1);
153+
finalDecision("You exceeded 21 thus have lost!", ui->sb_dealerScore);
160154
return;
161155
}
162156

163-
// if dealer exceeds 21, gets busted and loose
164-
if(dealerHand->getValue() > 21) {
165-
msgBox.setText("Dealer exceeds 21. You win!");
166-
msgBox.exec();
167-
ui->sb_playerScore->setValue(ui->sb_playerScore->value() + 1);
157+
// if player gets 21, hits blackjack and wins
158+
if(playerHand->getValue() == 21) {
159+
finalDecision("BlackJack! :D", ui->sb_playerScore);
168160
return;
169161
}
170162

171-
// if player gets 21, hits blackjack and wins
172-
if(playerHand->getValue() == 21) {
173-
msgBox.setText("BlackJack! :D");
174-
msgBox.exec();
175-
ui->sb_playerScore->setValue(ui->sb_playerScore->value() + 1);
163+
// if dealer exceeds 21, gets busted and loose
164+
if(dealerHand->getValue() > 21) {
165+
finalDecision("Dealer exceeds 21. You win!", ui->sb_playerScore);
176166
return;
177167
}
178168

179169
// if player draws 5 cards, wins
180170
if(playerHand->count() >= 5) {
181-
msgBox.setText("5 cards?? You win!");
182-
msgBox.exec();
183-
ui->sb_playerScore->setValue(ui->sb_playerScore->value() + 1);
171+
finalDecision("5 cards?? You win!", ui->sb_playerScore);
184172
return;
185173
}
186174

187175
// if dealer >= player, dealer wins
188176
if(dealerHand->getValue() >= playerHand->getValue()) {
189-
msgBox.setText("Dealer hand equal or exceeds player hand. Dealer Wins!");
190-
msgBox.exec();
191-
ui->sb_dealerScore->setValue(ui->sb_dealerScore->value() + 1);
177+
finalDecision("Dealer hand equal or exceeds player hand. Dealer Wins!",
178+
ui->sb_dealerScore);
192179
} else {
193180
// if player > dealer, player wins
194-
msgBox.setText("Player hand exceeds dealer. Player wins!");
195-
msgBox.exec();
196-
ui->sb_playerScore->setValue(ui->sb_playerScore->value() + 1);
181+
finalDecision("Player hand exceeds dealer. Player wins!",
182+
ui->sb_playerScore);
197183
}
198184
}
199185

186+
void BlackJack::finalDecision(QString message, QSpinBox *spinbox, int score)
187+
{
188+
QMessageBox msgBox;
189+
msgBox.setText(message);
190+
msgBox.exec();
191+
spinbox->setValue(spinbox->value() + score);
192+
}
193+
200194
BlackJack::~BlackJack()
201195
{
202196
delete playerHand;

SOLUTIONS/Exercise 10.1.2/CardGameGUI/blackjack.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ class CardDeck;
66
class CardHand;
77
class QLabel;
88
class QGridLayout;
9+
class QSpinBox;
910

1011
namespace Ui {
1112
class BlackJack;
@@ -18,9 +19,6 @@ class BlackJack : public QMainWindow
1819
public:
1920
explicit BlackJack(QWidget *parent = 0);
2021
~BlackJack();
21-
void handOver();
22-
// delete and read images
23-
void refreshImages(CardHand *hand, QList<QLabel *> &labels, QGridLayout *layout);
2422

2523
private slots:
2624
void newGame();
@@ -30,6 +28,11 @@ private slots:
3028
void stay();
3129

3230
private:
31+
void handOver();
32+
// delete and read images
33+
void refreshImages(CardHand *hand, QList<QLabel *> &labels, QGridLayout *layout);
34+
void finalDecision(QString message, QSpinBox *spinbox, int score = 1);
35+
3336
Ui::BlackJack *ui;
3437
CardDeck *deck;
3538
CardHand *playerHand;

0 commit comments

Comments
 (0)