// baseball.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdlib.h>
#include <time.h>
#include <math.h>
void makeSecret(int* nSecretNum);
int CheckYourNum(int* nSecretNum , int* nYourNum);
int main(int argc, char* argv[])
{
int nSecretNum[3] = {0} , // 컴퓨터가 생성할 secret 넘버를 저장할 변수배열
nYourNum[3] = {0} , // 사용자가 입력할 변수
nResult = 0 , // secret 넘버와 사용자 입력변수의 비교결과를 저장할 변수 , CheckYourNum 함수의 리턴값을 저장함
nGaemCount = 1 ; // 사용자가 한번 맞추기 시도할때 마다 count값이 증가하여 , 몇번만에 secret 넘버를 맞추는지 나타낸다.
char cGaemPlay ='Y'; // 게임이 끝나후 계속 여부를 확인할때 사용하는 변수
srand(time(0));
while(cGaemPlay == 'Y')
{
nGaemCount = 1 ;
makeSecret(nSecretNum) ; // 게임 시작과 동시에 컴퓨터는 3자리 secret 넘버를 생성한다.
while(1)
{
printf("Input Secret Number(ex:4 5 6):");
scanf("%d %d %d", &nYourNum[0] , &nYourNum[1] ,&nYourNum[2] ); // 사용자는 3자리 숫자를 입력하여
// 컴퓨터의 secret 넘버를 맞춘다.
nResult= CheckYourNum(nSecretNum ,nYourNum); // 사용자가 입력한 숫자와 컴퓨터의 secret 넘버를
// 비교하여 strike와 ball의 갯수를 리턴한다.
// 1s1b => return 11 , 3s0s => return 30 ,
// 즉 strike는 10자리수 ball은 1의자리수로 조합하여 int 형으로 리턴한다.
printf("[%02d] %d Strike %d ball\n\n", nGaemCount++, nResult /10 , nResult %10 ); // nGameCount는 사용자 몇번의 입력만에 secret 넘버를 맞추는지 세는 count 변수이다.
if(nResult == 30) // CheckYourNum 함수의 리턴값이 30 이면 3strike 0 ball 이므로 사용자가 컴퓨터 secret 넘버를 맞추었으므로 게임이 종료된다.
{
puts("축하합니다. 시크릿넘버를 맞추셨습니다");
break;
}
}
puts("게임을 계속하시겠습니까?(Y/N)");
cGaemPlay = getchar();
}
return 0;
}
int CheckYourNum(int* nSecretNum , int* nYourNum)
{
// nSecretNum 포인터는 main함수에서 컴퓨터가 생성해서 저장한 int형 배열변수를 가리키는 포인터변수
// nYourNum 포인터변수는 main함수에서 사용자가 입력한 숫자 3개를 저장한 배열변수를 가리키는 포인터변수
// 두개의 배열을 각각 가리키는 포인터변수를 통해 상호비교하여 strike 와 ball의 갯수를 리턴한다.
int check = 0;
int i, j;
for(i = 0; i < 3; i++)
{
for(j = 0; j < 3; j++)
{
if(nSecretNum[i] == nYourNum[j])
{
if(i == j)
check += 10;
else
check += 1;
break;
}
}
}
// return 값은 strike , ball 의 갯수를 십단위 숫자로 리턴한다.
// 1Strike 1Ball -> return 11 ;
// 3Strike 0Ball -> return 30 ;
// 2Strike 1Ball -> return 21 ; // 숫자는 당연히 변수에 할당해서 변수를 리턴한다.
return check;
}
까지 했는데 실행은 되는데 하면은 정답은안되고 2스트라이크까지만 되네요 ;ㅁ;...
어디가 잘못됬는지 찾을수가없에요 ㅜㅜ....
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.