728x90
www.youtube.com/watch?v=umpMT1xql0I&list=PL4SIC1d_ab-b4zy_3FDRIiohszShOZ0PK&index=16
#include <iostream>
#include <time.h>
#include <conio.h>
using namespace std;
int main() {
srand((unsigned int)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;
}
while (true)
{
system("cls");
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
if (iNumber[i * 5 + j] == INT_MAX)
cout << "*\t";
else
cout << iNumber[i * 5 + j] << "\t";
}
cout << endl;
}
cout << "w: up, s: down, a:left, d:right, q:quit";
char cInput = _getch();
if (cInput == 'q' || cInput == 'Q')
break;
switch (cInput)
{
case 'w': case 'W':
if (iStarIndex > 4)
{
iNumber[iStarIndex] = iNumber[iStarIndex - 5];
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 -= 1;
}
break;
case 'd': case 'D':
if (iStarIndex % 5 != 4)
{
iNumber[iStarIndex] = iNumber[iStarIndex + 1];
iNumber[iStarIndex + 1] = INT_MAX;
iStarIndex += 1;
}
break;
}
bool bWin = true;
for (int i = 0; i < 24; i++)
{
if (iNumber[i] != i + 1)
{
bWin = false;
break;
}
}
if (bWin)
{
cout << "숫자를 모두 맞췄습니다." << endl;
break;
}
}
return 0;
}
무료강의가 있길래 따라 하면서 만들어본 퍼즐게임인데 다 만들고나니까 꽤 재밌다 ㅋㅋㅋ
그리고 새로운 수를 만들어내는 것보다 일정 카드가 있으면 셔플 알고리즘을 사용해서 섞는것도 가능하다는 것도 알게 되었다.
재미도 보고 공부도 하고 일석이조의 강의였다.
아마 이 강의들을 쭉 들으면서 대부분 따라 해볼것같다
'STUDY > C, C++' 카테고리의 다른 글
[C] scanf 개행 문자 처리 (0) | 2021.06.09 |
---|---|
[C/C++] 버블 정렬, 카운트 정렬 (0) | 2021.06.03 |
[C] _getch를 사용한 움직임 구현 (0) | 2021.04.28 |
[C] C 프로그래밍 문법 (1) (0) | 2021.03.31 |
[C] 개발환경 구축 (2) | 2021.03.31 |