반응형
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <Windows.h>
#pragma warning (disable : 4996)
int count = 1;//게임 횟수
int Player[3] = { 0 };//player 숫자
int AI[3] = { 0 };//ai 숫자
int p_Guess[3] = { 0 }, a_Guess[3] = { 0 };//추측숫자
int p_Strike=0, p_Ball=0, p_Out = 0;
int a_Strike=0, a_Ball=0, a_Out = 0;
void AIrand()//ai숫자 정하기
{
AI[0] = (rand() % 9) + 1;
while (true)//중복방지
{
AI[1] = (rand() % 9) + 1;
if (AI[1] != AI[0])
break;
}
while (true)//중복방지
{
AI[2] = (rand() % 9) + 1;
if (AI[2] != AI[0] && AI[2] != AI[1])
break;
}
}
void AIGuess()
{
a_Guess[0] = (rand() % 9) + 1;
a_Guess[1] = (rand() % 9) + 1;
if (a_Guess[1] == a_Guess[0])//중복방지
a_Guess[1] = (rand() % 9) + 1;
a_Guess[2] = (rand() % 9) + 1;
if (a_Guess[2] == a_Guess[0] || a_Guess[2] == a_Guess[1])//중복방지
a_Guess[2] = (rand() % 9) + 1;
}
void Game()
{
p_Strike = 0, p_Ball = 0;
a_Strike=0, a_Ball=0;
if (AI[0] == p_Guess[1] || AI[0] == p_Guess[2])//player추측 검사
{
p_Ball++;
}
else if (AI[0] == p_Guess[0])
{
p_Strike++;
}
if (AI[1] == p_Guess[0] || AI[1] == p_Guess[2])
{
p_Ball++;
}
else if (AI[1] == p_Guess[1])
{
p_Strike++;
}
if (AI[2] == p_Guess[0] || AI[2] == p_Guess[1])
{
p_Ball++;
}
else if (AI[2] == p_Guess[2])
{
p_Strike++;
}
if (Player[0] == a_Guess[1] || Player[0] == a_Guess[2])//ai추측 검사
{
a_Ball++;
}
else if (Player[0] == a_Guess[0])
{
a_Strike++;
}
if (Player[1] == a_Guess[0] || Player[1] == a_Guess[2])
{
a_Ball++;
}
else if (Player[1] == a_Guess[1])
{
a_Strike++;
}
if (Player[2] == a_Guess[0] || Player[2] == a_Guess[1])
{
a_Ball++;
}
else if (Player[2] == a_Guess[2])
{
a_Strike++;
}
if (a_Strike == 0 && a_Ball == 0)
a_Out++;
if (p_Strike == 0 && p_Ball == 0)
p_Out++;
}
void Gameover()
{
if (p_Strike >= 3)//player승리
{
printf("Player 3스트라이크 승리, AI 패배!!");
getchar();
}
if (a_Strike >= 3)//ai승리
{
printf("AI 3스트라이크 승리, Plyaer 패배,,,,,,");
getchar();
}
if (p_Out >= 3)//player패배
{
printf("Player 3아웃 패배,,,,,, AI 승리,,,");
getchar();
}
if (a_Out >= 3)//ai패배
{
printf(" AI 3아웃 패배, Plyaer 승리!!");
getchar();
}
if (p_Strike >= 3 || a_Strike >= 3 || p_Out >= 3 || a_Out >= 3)
{
printf("\n\n");
printf(" Player의 숫자 : %d %d %d\n", Player[0], Player[1], Player[2]);
printf(" AI의 추측 숫자 : %d %d %d\n", a_Guess[0], a_Guess[1], a_Guess[2]);
printf(" AI의 숫자 : %d %d %d\n", AI[0], AI[1], AI[2]);
printf("Player의 추측 숫자 : %d %d %d\n", p_Guess[0], p_Guess[1], p_Guess[2]);
getchar();
}
}
void explain()
{
system("cls");
printf("==============게임 설명==============\n\n");
printf("Player는 1~9 까지의 숫자중 중복되지 않는 수를 3개 선택합니다.\n");
printf("숫자를 고르는게 끝나면, 한번씩 번갈아가면서 상대방이 선택했을법한 숫자 3개를 골라서 말해줍니다.\n");
printf("Player가 1 2 3 이라고 추측하면 AI가 고른 번호와 일치하는지에 대한 결과가 나옵니다.\n");
printf("결과를 토대로 추리를 하며 상대방이 고른 번호를 먼저 부르는 사림이 이기는 게임입니다.\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 14); //노랑
printf("\n스트라이크\n");//스트라이크
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE); //흰색
printf("상대방이 부른 숫자가 내가 고른 숫자와 일치하고 자리까지 동일 할 경우.\n");
printf(" AI :");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 14); //노랑
printf(" 1");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE); //흰색
printf(" 4 5\n");
printf("Player :");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 14); //노랑
printf(" 1");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE); //흰색
printf(" 4 5\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 9); //파랑
printf("\n볼\n");//볼
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE); //흰색
printf("상대방이 부른 숫자가 내가 고른 숫자와 일치하지만, 자리는 다를 경우.\n");
printf(" AI :");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 9); //파랑
printf(" 1");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE); //흰색
printf(" 4 5\n");
printf("Player : 7 3");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 9); //파랑
printf(" 1\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE); //흰색
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 12); //빨강
printf("\n아웃\n");//아웃
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE); //흰색
printf("상대방이 부른 숫자 3개가 내가 고른 번호에 하나도 속해 있지 않을 경우.\n");
printf(" AI : 1 2 3\n");
printf("Player : 5 6 7\n");
}
void main()
{
srand((unsigned)time(NULL));
start:
system("cls");
printf("<야구 게임>\n");
printf("1.게임시작 2.게임설명 99.게임종료 :");
int Set = 0;
scanf_s("%d", &Set);
getchar();
if (Set < 1 || Set > 2)
{
if (Set == 99)
return;
printf("잘못입력하셨습니다.\n\n");
getchar();
goto start;
}
else if (Set == 2)
{
explain();
getchar();
goto start;
}
one:
printf("1~9 중에 중복을 피하여 3개를 입력하세요.\n");
printf("첫번째 숫자 :");
scanf_s("%d", &Player[0]);
if (Player[0] < 1 || Player[0] > 9)
{
printf("잘못입력하셨습니다.\n\n");
getchar();
goto one;
}
getchar();
two:
printf("두번째 숫자 :");
scanf_s("%d", &Player[1]);
if (Player[1] < 1 || Player[1] > 9)
{
printf("잘못입력하셨습니다.\n\n");
getchar();
goto two;
}
if (Player[1] == Player[0])
{
printf("이미 입력한 숫자입니다. 다시입력해주세요.\n\n");
getchar();
goto two;
}
getchar();
three:
printf("세번째 숫자 :");
scanf_s("%d", &Player[2]);
if (Player[2] < 1 || Player[2] > 9)
{
printf("잘못입력하셨습니다.\n\n");
getchar();
goto three;
}
if (Player[2] == Player[0] || Player[2] == Player[1])
{
printf("이미 입력한 숫자입니다. 다시입력해주세요.\n\n");
getchar();
goto three;
}
getchar();
AIrand();
while (true)
{
One:
system("cls");
printf("==============야구게임==============\n");
printf("%d번째 게임",count);
printf("AI의 숫자를 맞춰보세요.\n");
printf("첫번째 숫자 :");
scanf_s("%d", &p_Guess[0]);
if (p_Guess[0] < 1 || p_Guess[0] > 9)
{
printf("잘못입력하셨습니다.\n\n");
getchar();
goto One;
}
getchar();
Two:
printf("두번째 숫자 :");
scanf_s("%d", &p_Guess[1]);
if (p_Guess[1] < 1 || p_Guess[1] > 9)
{
printf("잘못입력하셨습니다.\n\n");
getchar();
goto Two;
}
if (p_Guess[1] == p_Guess[0])
{
printf("이미 입력한 숫자입니다. 다시입력해주세요.\n\n");
getchar();
goto Two;
}
getchar();
Three:
printf("세번째 숫자 :");
scanf_s("%d", &p_Guess[2]);
if (p_Guess[2] < 1 || p_Guess[2] > 9)
{
printf("잘못입력하셨습니다.\n\n");
getchar();
goto Three;
}
if (p_Guess[2] == p_Guess[0] || p_Guess[2] == p_Guess[1])
{
printf("이미 입력한 숫자입니다. 다시입력해주세요.\n\n");
getchar();
goto Three;
}
getchar();
AIGuess();
printf("\nPlayer의 추측 : %d %d %d\n",p_Guess[0], p_Guess[1], p_Guess[2]);
printf("AI의 추측 : %d %d %d\n",a_Guess[0], a_Guess[1], a_Guess[2]);
getchar();
p_Strike, p_Ball, p_Out = 0;
a_Strike, a_Ball, a_Out = 0;
Game();
printf("\n==============결과==============\n");
printf("Player - 스트라이크[%d] 볼[%d] 아웃[%d]\n", p_Strike, p_Ball, p_Out);
printf("AI - 스트라이크[%d] 볼[%d] 아웃[%d]\n", a_Strike, a_Ball, a_Out);
getchar();
if (p_Strike >= 3 || a_Strike >= 3 || p_Out >= 3 || a_Out >= 3)
{
Gameover();
return;
}
count++;
}//while()
}//main
반응형
'C언어' 카테고리의 다른 글
[c언어]영화 예매 프로그램 (0) | 2020.04.02 |
---|---|
[c언어] 음식추천 프로그램 (0) | 2020.04.02 |
[c언어]빙고게임[EASY] (0) | 2020.04.02 |
[c언어] BMI측정 프로그램 (0) | 2020.04.02 |
[c언어] 로또번호 생성기 (0) | 2020.04.02 |