Programming/ C & C++

[C++]숫자퍼즐게임

BadaGreen_Kim 2018. 2. 13. 14:44
#include
#include
 
//consol input ouput Hearder File
#include
 
using namespace std;
 
int main()
{
 
    srand((unsigned)time(0));
 
    int iNumber[25] = {};
 
 
    for (int i = 0;i < 24;++i)
    {
        iNumber[i] = i + 1;
    }
 
   
 
    iNumber[24] = INT_MAX;
    int iStarIndex = 24;
 
    int iTemp, idx1, idx2;
 
    for (int i = 0; i < 100;++i)
    {
        idx1 = rand() % 24;
        idx2 = rand() % 24;
 
 
        iTemp = iNumber[idx1];
        iNumber[idx1] = iNumber[idx2];
        iNumber[idx2] = iTemp;
 
    }
 
    // 5x5 출력
    // i = 세로  j = 가로
 
    while (true)
    {
        for (int i = 0;i < 5;++i)
        {
            for (int j = 0;j < 5;++j)
            {
 
                cout << iNumber[i * 5 + j] << "\t";
            }
            cout << endl;
        }
        cout << "w 위 s: 아래 a :왼쪽 d : 오른쪽 q:종료";
 
        //_getch 문자 1개를 입력받는 함수.
        char cInput = _getch();
 
 
        if (cInput == 'q' || cInput == 'Q')
            break;
 
 
        switch (cInput)
        {
 
 
        case 'w':
 
        case 'W':
           
            if (iStarIndex > 4)
            {
            //별이 있는 위치에 바로 위에 있는 값을 넣어준다.
            iNumber[iStarIndex] = iNumber[iStarIndex - 5];
            // 위의 위치에 별을 넣어주어서 2개의 값을 서로 교체한다.
            iNumber[iStarIndex - 5] = INT_MAX;
            //별이 한칸 위로 올라갔으므로 한칸 내려준다.
            iStarIndex -= 5;
            break;
            }
        case 's':
 
        case 'S':
 
            //가장 아랫줄이 아닌경우.
            if (iStarIndex < 20)
            {
 
                iNumber[iStarIndex] = iNumber[iStarIndex + 5];
                iNumber[iStarIndex + 5] = INT_MAX;
                //별이 한칸 위로 올라갔으므로 한칸 내려준다.
                iStarIndex += 5;
 
                break;
            }
        case 'a':
 
        case 'A':
            if (iStarIndex % 5 != 0)
            {
 
                iNumber[iStarIndex] = iNumber[iStarIndex - 1];
                iNumber[iStarIndex - 1] = INT_MAX;
                //별이 한칸 위로 올라갔으므로 한칸 내려준다.
                --iStarIndex;
                break;
            }
        case 'd':
 
        case 'D':
            if (iStarIndex % 5 != 4)
            {
 
                iNumber[iStarIndex] = iNumber[iStarIndex + 1];
                iNumber[iStarIndex + 1] = INT_MAX;
                //별이 한칸 위로 올라갔으므로 한칸 내려준다.
                ++iStarIndex;
                break;
            }
 
        default:
            break;
        }
 
    }
 
    cout << "게임을 종료합니다...." << endl;
 
    return 0;
}

 

 

 

 

 

 

 

Source 출처 : https://www.inflearn.com/course/c_game-making/

 

'Programming > C & C++' 카테고리의 다른 글

[C++] Bingo Game ver.3 ( AI Ver )  (0) 2018.02.21
[C++] Bingo Game ver.2  (0) 2018.02.20
[C++] Bingo Game ver.1  (0) 2018.02.20
[C++] BaseBall Game  (0) 2018.02.13
[C++] Lotto Game  (0) 2018.02.13