콘솔창 & 윈도우창/코딩 테스트

블랙잭 게임 구현

게임 개발 2023. 1. 13. 01:28

#include<iostream>
#include<string>
#include<Windows.h>
#include<random>
#include<time.h>
#include<algorithm>
#define SIZE 13

using namespace std;


void printintro();
void printcardgame(int card[][SIZE], int col, int row, int* user_sum, int* dealer_sum);
void printdealer();
void printchoice(string *choice);
void cardline_up(int card[][SIZE], int col, int row);

int main(void)
{
srand(time(0));

string choice;
string symbol;

int select;
int user_sum = 0;
int dealer_sum = 0;
int card[4][13] = { };
int dealer_win = 1;
int user_win = 0;

int col = sizeof(card[0]) / sizeof(int);
int row = sizeof(card) / sizeof(card[0]);
int user_Cnum0 = rand() % 4;
int user_Cnum1 = rand() % 13;

cardline_up(card, col, row);
printintro();
printcardgame(card, col, row, &user_sum, &dealer_sum);
printdealer();

// cout << "딜러의 카드 : " << card[dealer_Cnum0][dealer_Cnum1] << endl << endl;

printchoice(&choice);


if (choice == "hit")
{
printintro();
printcardgame(card, col, row ,& user_sum, &dealer_sum);
printdealer();

while (user_sum <= 21)
{
printchoice(&choice);
printintro();
printcardgame(card, col, row, &user_sum, &dealer_sum);
printdealer();
if (choice == "hit")
{
if (user_sum > 21)
{
cout << "딜러의 카드의 총 합 : " << dealer_sum << endl;

cout << "딜러가 승리하였습니다." << endl;
}

else if (user_sum == 21)
{
cout << "플레이어가 승리하였습니다." << endl;
}
}

if (choice == "stand")
{
if(user_sum < 21)
{
if (user_sum > dealer_sum)
{
cout << "플레이어가 승리하였습니다." << endl;
break;
}
else
{
cout << "딜러가 승리하였습니다." << endl;
break;
}
}
else
{
if (user_sum > 21)
{
cout << "딜러가 승리하였습니다." << endl;
break;
}

else if (user_sum == 21)
{
cout << "플레이어가 승리하였습니다." << endl;
break;
}
}
}
}
}

else if (choice == "stand")
{
if (user_sum > dealer_sum)
{
cout << "플레이어가 승리하였습니다." << endl;
}
else
{
cout << "딜러가 승리하였습니다." << endl;
}
}

return 0;
}

void cardline_up(int card[][SIZE], int col, int row)
{
for (int j = 0; j < 4; j++)
{
for (int i = 0; i < 13; i++)
{
card[j][i] = i + 1;
cout << card[j][i] << "   ";
}
cout << "\n";
}
}

void printintro()
{
cout << "블랙잭 게임을 시작합니다 \n\n";
Sleep(600);
cout << "카드 셔플 중 입니다. \n\n";
Sleep(600);
cout << ".\n";
Sleep(600);
cout << ".\n";
Sleep(600);
cout << ".\n";
Sleep(600);
system("cls");
cout << "카드를 분배 중 입니다\n\n";
Sleep(300);
cout << ".\n";
Sleep(600);
cout << ".\n";
Sleep(600);
cout << ".\n";
}

void printcardgame(int card[][SIZE], int col, int row, int *user_sum, int *dealer_sum)
{
int user_Cnum0 = rand() % 4;
int user_Cnum1 = rand() % 13;

*user_sum += card[user_Cnum0][user_Cnum1];

cout << "플레이어의 카드 : " << card[user_Cnum0][user_Cnum1] << endl << endl;
cout << "플레이어 카드의 총합 : " << *user_sum << endl;
int dealer_Cnum0 = rand() % 4;
int dealer_Cnum1 = rand() % 13;

*dealer_sum += card[dealer_Cnum0][dealer_Cnum1];

}

void printdealer()
{
cout << "딜러의 카드 : ";
Sleep(600);
cout << "? ";
Sleep(600);
cout << "? ";
Sleep(600);
cout << "?" << endl << endl;
}

void printchoice(string *choice)
{
cout << "카드를 뽑으시려면  hit 를, 카드 뽑기를 멈추려면 stand 를 입력해주세요.\n\n";
cout << "hit 와 stand 중에 선택하여 입력해주세요.  \n\n";
cin >> *choice;

system("cls");
}

'콘솔창 & 윈도우창 > 코딩 테스트' 카테고리의 다른 글

Anagram문제  (0) 2024.04.11
백준 - 괄호 9012  (0) 2024.01.29
프로그래머스 lv1 덧칠하기  (0) 2023.11.17
프로그래머스 lv2 최댓값과 최솟값 c++  (0) 2023.10.24
백준 A : 특식 배부 C언어  (0) 2023.01.08