이제 일주일 정도 공부한 놈인데, 숫자 야구 게임 만들어 봤다.

돌아가긴 하는데 뭔가 코드가 되게 지저분 하거든?


혹시 더 깔쌈하게 바꿀 순 없을까...


현재 내가 c++에서 배운건 조건문 반복문 배열 기초 정도임


아래는 코드





#include <iostream>

#include <time.h>


using namespace std;


int main()

{

int iPlayer[3] = {};

    int iAi[3] = {};

int iStrike = 0, iBall = 0;


srand((unsigned int)time(0));


int iCountArray[9] = {};


for (int i = 0; i < 9; ++i)

{

iCountArray[i] = i + 1;

}


for (int i = 0; i < 100; ++i)

{

int iTemp, idx1, idx2;


idx1 = rand() % 9;

idx2 = rand() % 9;


iTemp = iCountArray[idx1];

iCountArray[idx1] = iCountArray[idx2];

iCountArray[idx2] = iTemp;

}


for (int i = 0; i < 3; ++i)

{

iAi[i] = iCountArray[i];

    }


    while (true)

{


cout << "3개 숫자를 입력해주세요 (스페이스바로 구분) : ";

cin >> iPlayer[0] >> iPlayer[1] >> iPlayer[2];


for (int i = 0; i < 3; ++i)

{

if (iPlayer[i] == iAi[i])

iStrike += 1;

else if (iPlayer[0] == iAi[i + 1])

iBall += 1;

else if (iPlayer[1] == iAi[i * 2])

iBall += 1;

else if (iPlayer[2] == iAi[i - 1])

iBall += 1;


if (iPlayer[i] < 1 || iPlayer[i] > 9)

{

cout << "0, 혹은 9가 넘어가는 숫자는 입력하면 안됩니다." << endl;

break;

}

}


cout << iStrike << " strike " << iBall << " Ball" << endl;


if (iStrike == 3)

{

cout << "정답입니다!" << endl;

exit(1);

}


iStrike = 0;

iBall = 0;

}


return 0;

}