diff --git a/CMakeLists.txt.user b/CMakeLists.txt.user index 357ab9b..8313d6e 100644 --- a/CMakeLists.txt.user +++ b/CMakeLists.txt.user @@ -1,6 +1,6 @@ - + EnvironmentId @@ -8,7 +8,7 @@ ProjectExplorer.Project.ActiveTarget - 0 + 1 ProjectExplorer.Project.EditorSettings @@ -37,6 +37,7 @@ true true 1 + 0 false true false @@ -88,9 +89,9 @@ ProjectExplorer.Project.Target.0 Desktop - Replacement for "Desktop Qt 6.5.1 GCC 64bit" - Replacement for "Desktop Qt 6.5.1 GCC 64bit" - qt.qt6.651.gcc_64_kit + Desktop Qt 6.6.0 GCC 64bit + Desktop Qt 6.6.0 GCC 64bit + qt.qt6.660.gcc_64_kit 0 0 0 @@ -101,14 +102,14 @@ -DCMAKE_GENERATOR:STRING=Ninja -DCMAKE_BUILD_TYPE:STRING=Debug --DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{buildDir}/.qtc/package-manager/auto-setup.cmake +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake -DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} -DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} -DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} -DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} -DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} 0 - /home/sanderspeetjens/git/build-Desktop_Qt_6_5_1_GCC_64bit-Debug + /home/sanderspeetjens/git/Blackjack/build-Desktop_Qt_6_6_0_GCC_64bit-Debug @@ -158,13 +159,13 @@ -DCMAKE_GENERATOR:STRING=Ninja -DCMAKE_BUILD_TYPE:STRING=Release --DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{buildDir}/.qtc/package-manager/auto-setup.cmake +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake -DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} -DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} -DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} -DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} -DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} - /home/sanderspeetjens/git/Blackjack/build-Desktop_Qt_6_5_1_GCC_64bit-Release + /home/sanderspeetjens/git/Blackjack/build-Desktop_Qt_6_6_0_GCC_64bit-Release @@ -212,13 +213,13 @@ -DCMAKE_GENERATOR:STRING=Ninja -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo --DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{buildDir}/.qtc/package-manager/auto-setup.cmake +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake -DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} -DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} -DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} -DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} -DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} - /home/sanderspeetjens/git/Blackjack/build-Desktop_Qt_6_5_1_GCC_64bit-RelWithDebInfo + /home/sanderspeetjens/git/Blackjack/build-Desktop_Qt_6_6_0_GCC_64bit-RelWithDebInfo @@ -266,14 +267,14 @@ -DCMAKE_GENERATOR:STRING=Ninja -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo --DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{buildDir}/.qtc/package-manager/auto-setup.cmake +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake -DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} -DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} -DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} -DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} -DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} 0 - /home/sanderspeetjens/git/Blackjack/build-Desktop_Qt_6_5_1_GCC_64bit-Profile + /home/sanderspeetjens/git/Blackjack/build-Desktop_Qt_6_6_0_GCC_64bit-Profile @@ -321,13 +322,13 @@ -DCMAKE_GENERATOR:STRING=Ninja -DCMAKE_BUILD_TYPE:STRING=MinSizeRel --DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{buildDir}/.qtc/package-manager/auto-setup.cmake +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake -DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} -DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} -DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} -DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} -DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} - /home/sanderspeetjens/git/Blackjack/build-Desktop_Qt_6_5_1_GCC_64bit-MinSizeRel + /home/sanderspeetjens/git/Blackjack/build-Desktop_Qt_6_6_0_GCC_64bit-MinSizeRel @@ -385,25 +386,337 @@ true true + 0 true 2 false + -e cpu-cycles --call-graph dwarf,4096 -F 250 Blackjack CMakeProjectManager.CMakeRunConfiguration.Blackjack Blackjack + false true true true - /home/sanderspeetjens/git/build-Desktop_Qt_6_5_1_GCC_64bit-Debug + /home/sanderspeetjens/git/Blackjack/build-Desktop_Qt_6_6_0_GCC_64bit-Debug + + 1 + + + + ProjectExplorer.Project.Target.1 + + WebAssemblyDeviceType + WebAssembly Qt 6.6.0 (multi-threaded) + WebAssembly Qt 6.6.0 (multi-threaded) + qt.qt6.660.wasm_multithread_kit + 0 + -1 + 0 + + Debug + 2 + false + + -DCMAKE_GENERATOR:STRING=Ninja +-DCMAKE_BUILD_TYPE:STRING=Debug +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} +-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} +-DCMAKE_TOOLCHAIN_FILE:FILEPATH=%{Qt:QT_INSTALL_PREFIX}/lib/cmake/Qt6/qt.toolchain.cmake +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} + 0 + /home/sanderspeetjens/git/Blackjack/build-WebAssembly_Qt_6_6_0_multi_threaded-Debug + + + + + all + + false + + true + Build + CMakeProjectManager.MakeStep + + 1 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + + + clean + + false + + true + Build + CMakeProjectManager.MakeStep + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Debug + CMakeProjectManager.CMakeBuildConfiguration + + + Release + 2 + false + + -DCMAKE_GENERATOR:STRING=Ninja +-DCMAKE_BUILD_TYPE:STRING=Release +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} +-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} +-DCMAKE_TOOLCHAIN_FILE:FILEPATH=%{Qt:QT_INSTALL_PREFIX}/lib/cmake/Qt6/qt.toolchain.cmake +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} + /home/sanderspeetjens/git/Blackjack/build-WebAssembly_Qt_6_6_0_multi_threaded-Release + + + + + all + + false + + true + CMakeProjectManager.MakeStep + + 1 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + + + clean + + false + + true + CMakeProjectManager.MakeStep + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Release + CMakeProjectManager.CMakeBuildConfiguration + + + RelWithDebInfo + 2 + false + + -DCMAKE_GENERATOR:STRING=Ninja +-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} +-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} +-DCMAKE_TOOLCHAIN_FILE:FILEPATH=%{Qt:QT_INSTALL_PREFIX}/lib/cmake/Qt6/qt.toolchain.cmake +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} + /home/sanderspeetjens/git/Blackjack/build-WebAssembly_Qt_6_6_0_multi_threaded-RelWithDebInfo + + + + + all + + false + + true + CMakeProjectManager.MakeStep + + 1 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + + + clean + + false + + true + CMakeProjectManager.MakeStep + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Release with Debug Information + CMakeProjectManager.CMakeBuildConfiguration + + + RelWithDebInfo + 2 + false + + -DCMAKE_GENERATOR:STRING=Ninja +-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} +-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} +-DCMAKE_TOOLCHAIN_FILE:FILEPATH=%{Qt:QT_INSTALL_PREFIX}/lib/cmake/Qt6/qt.toolchain.cmake +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} + 0 + /home/sanderspeetjens/git/Blackjack/build-WebAssembly_Qt_6_6_0_multi_threaded-Profile + + + + + all + + false + + true + CMakeProjectManager.MakeStep + + 1 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + + + clean + + false + + true + CMakeProjectManager.MakeStep + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Profile + CMakeProjectManager.CMakeBuildConfiguration + + + MinSizeRel + 2 + false + + -DCMAKE_GENERATOR:STRING=Ninja +-DCMAKE_BUILD_TYPE:STRING=MinSizeRel +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} +-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} +-DCMAKE_TOOLCHAIN_FILE:FILEPATH=%{Qt:QT_INSTALL_PREFIX}/lib/cmake/Qt6/qt.toolchain.cmake +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} + /home/sanderspeetjens/git/Blackjack/build-WebAssembly_Qt_6_6_0_multi_threaded-MinSizeRel + + + + + all + + false + + true + CMakeProjectManager.MakeStep + + 1 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + + + clean + + false + + true + CMakeProjectManager.MakeStep + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Minimum Size Release + CMakeProjectManager.CMakeBuildConfiguration + + 5 + 0 + + true + true + 0 + true + + -e cpu-cycles --call-graph dwarf,4096 -F 250 + Blackjack + WebAssembly.RunConfiguration.EmrunBlackjack + Blackjack + false + true + true + firefox 1 ProjectExplorer.Project.TargetCount - 1 + 2 ProjectExplorer.Project.Updater.FileVersion diff --git a/playwindow.cpp b/playwindow.cpp index b69be08..dc6e306 100644 --- a/playwindow.cpp +++ b/playwindow.cpp @@ -83,7 +83,6 @@ playWindow::playWindow(QWidget *parent) : QMainWindow(parent), { // To prevent users from activating function before the function ending. this->setEnabled(false); - ui->statusLabel->setText("Stick"); ui->playagainButton->setEnabled(true); ui->twistButton->setEnabled(false); ui->stickButton->setEnabled(false); @@ -118,7 +117,6 @@ void playWindow::playerTurn(void) // if player bust if (player->getHandValue() > 21) { - ui->statusLabel->setText("Bust!"); ui->twistButton->setEnabled(false); ui->stickButton->setEnabled(false); @@ -157,23 +155,20 @@ void playWindow::computerTurn(void) turnCount++; } - //if computer is bust - ui->computerStatusLabel->setText(dealer->getHandValue() > 21 ? "Bust!" : "Stick"); - - // if same score or both bust - if ((dealer->getHandValue() == player->getHandValue()) || ((dealer->getHandValue() > 21) && (player->getHandValue() > 21))){ - ui->outcomeLabel->setPixmap(draw); - } - // if both players are not bust AND computer is larger than player - else if ( - ((dealer->getHandValue() < 22) && (player->getHandValue() < 22) - && (dealer->getHandValue() > player->getHandValue())) - || ((player->getHandValue() > 21) && dealer->getHandValue() < 22 )){ + int8_t winner = calculate_winner(player.get(), dealer.get()); + if (winner < 0) + { ui->outcomeLabel->setPixmap(lose);; computer_wins++; } - // else, player wins - else{ + + if (winner == 0) + { + ui->outcomeLabel->setPixmap(draw); + } + + if (winner > 0) + { ui->outcomeLabel->setPixmap(win); player_wins++; } @@ -199,8 +194,6 @@ void playWindow::reset(void) ui->playagainButton->setEnabled(false); ui->stickButton->setEnabled(false); ui->outcomeLabel->clear(); - ui->computerStatusLabel->setText(""); - ui->statusLabel->setText(""); ui->computerScoreLabel->setText("Computer: " + QString::number(0)); // Clear Cards from player table @@ -226,6 +219,36 @@ void playWindow::reset(void) ui->card1Label_2->clear(); } +int8_t playWindow::calculate_winner(Player* player, Player* dealer) +{ + // if dealer and player lose, dealer wins + if (dealer->getHandValue() > 21 && player->getHandValue() > 21) + { + return -1; + } + + // if same score, draw + if (dealer->getHandValue() == player->getHandValue()){ + return 0; + } + + // if dealer went bust, player wins + if (dealer->getHandValue() > 21) + { + return 1; + } + + // if player went bust, dealer wins + if (player->getHandValue() > 21) + { + return -1; + } + + // player and dealer both have less then 21 + // hence compare the values + return player->getHandValue() > dealer->getHandValue() ? 1 : -1; +} + playWindow::~playWindow() { delete ui; diff --git a/playwindow.hpp b/playwindow.hpp index 438068d..2d008ec 100644 --- a/playwindow.hpp +++ b/playwindow.hpp @@ -42,6 +42,7 @@ public: void playerTurn(void); void computerTurn(void); void reset(void); + int8_t calculate_winner(Player* player, Player* dealer); private: Ui::playWindow *ui; diff --git a/playwindow.ui b/playwindow.ui index 88cf2fb..c016faf 100644 --- a/playwindow.ui +++ b/playwindow.ui @@ -23,6 +23,111 @@ border-image:url(:/images/blackjack_table.png) 0 0 0 0 stretch stretch; + + + + + 800 + 500 + + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Minimum + + + + 20 + 40 + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::MinimumExpanding + + + + 40 + 20 + + + + + + + + false + + + Play Again + + + + + + + Twist + + + + + + + Stick + + + + + + + Qt::Horizontal + + + QSizePolicy::MinimumExpanding + + + + 40 + 20 + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Minimum + + + + 20 + 40 + + + + @@ -156,8 +261,8 @@ border-image:url(:/images/blackjack_table.png) 0 0 0 0 stretch stretch; - - + + Qt::Vertical @@ -172,26 +277,10 @@ border-image:url(:/images/blackjack_table.png) 0 0 0 0 stretch stretch; - - - - Qt::Vertical - - - QSizePolicy::Minimum - - - - 20 - 40 - - - - - - + + - + @@ -230,12 +319,12 @@ border-image:url(:/images/blackjack_table.png) 0 0 0 0 stretch stretch; - + Total: 0 - + Qt::Horizontal @@ -248,7 +337,7 @@ border-image:url(:/images/blackjack_table.png) 0 0 0 0 stretch stretch; - + @@ -287,64 +376,7 @@ border-image:url(:/images/blackjack_table.png) 0 0 0 0 stretch stretch; - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - 255 - 255 - 255 - - - - - - - - - 255 - 255 - 255 - - - - - - - - - 120 - 120 - 120 - - - - - - - - + Computer: 0 @@ -657,8 +689,8 @@ border-image:url(:/images/blackjack_table.png) 0 0 0 0 stretch stretch; - - + + Qt::Vertical @@ -673,10 +705,23 @@ border-image:url(:/images/blackjack_table.png) 0 0 0 0 stretch stretch; - - + + - + + + Qt::Horizontal + + + + 40 + 20 + + + + + + @@ -715,12 +760,12 @@ border-image:url(:/images/blackjack_table.png) 0 0 0 0 stretch stretch; - Total: 0 + - + Qt::Horizontal @@ -732,139 +777,6 @@ border-image:url(:/images/blackjack_table.png) 0 0 0 0 stretch stretch; - - - - - - - - - 255 - 255 - 255 - - - - - - - - - 255 - 255 - 255 - - - - - - - - - 120 - 120 - 120 - - - - - - - - Computer: 0 - - - - - - - - - Qt::Vertical - - - QSizePolicy::Minimum - - - - 20 - 40 - - - - - - - - - 800 - 500 - - - - - - - - - - - - - Qt::Horizontal - - - QSizePolicy::MinimumExpanding - - - - 40 - 20 - - - - - - - - false - - - Play Again - - - - - - - Twist - - - - - - - Stick - - - - - - - Qt::Horizontal - - - QSizePolicy::MinimumExpanding - - - - 40 - 20 - - - -