๐Ÿ˜Ž ๊ณต๋ถ€ํ•˜๋Š” ์ง•์ง•์•ŒํŒŒ์นด๋Š” ์ฒ˜์Œ์ด์ง€?

[inflearn ๊ฐ•์˜] ๊ธฐ๋ณธ ๋ฌธ๋ฒ• - ์ˆซ์žํผ์ฆ๊ฒŒ์ž„ ๋ณธ๋ฌธ

๐Ÿ‘ฉ‍๐Ÿ’ป IoT (Embedded)/C++

[inflearn ๊ฐ•์˜] ๊ธฐ๋ณธ ๋ฌธ๋ฒ• - ์ˆซ์žํผ์ฆ๊ฒŒ์ž„

์ง•์ง•์•ŒํŒŒ์นด 2023. 6. 30. 01:38
728x90
๋ฐ˜์‘ํ˜•

<๋ณธ ๋ธ”๋กœ๊ทธ๋Š” ์–ด์†ŒํŠธ๋ฝ ๊ฒŒ์ž„์•„์นด๋ฐ๋ฏธ ๋‹˜์˜ ์œ ํŠœ๋ธŒ๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ๊ณต๋ถ€ํ•˜๋ฉฐ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค :-)>

=> C++ Let's Make Games

 

๐Ÿซง ์ˆซ์žํผ์ฆ๊ฒŒ์ž„

// Chapter1_13

#include <iostream>
#include <time.h>
// console input output ํ—ค๋” ํŒŒ์ผ
// ์ฝ˜์†”์ฐฝ์—์„œ ์ž…์ถœ๋ ฅ ํ•˜๋Š” ํ—ค๋”ํŒŒ์ผ
#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;
	}
	// ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ์นธ์€ ๊ณต๋ฐฑ์œผ๋กœ ๋น„์›Œ๋‘ 
	// ๊ณต๋ฐฑ ์˜๋ฏธ๋ฅผ INT_MAX ์œผ๋กœ! ์ด๋ฏธ ์ •์˜๋œ ์ตœ๋Œ€๊ฐ’
	iNumber[24] = INT_MAX;

	// ๋ณ„ ์žˆ๋Š” ์œ„์น˜๋ฅผ ์ €์žฅํ•  ๋ณ€์ˆ˜
	int iStarIndex = 24;

	// 1~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) {
				// i๊ฐ€ 0์ผ ๋•Œ 0~4๊นŒ์ง€ ๋ฐ˜๋ณต
				// i๊ฐ€ 1์ผ ๋•Œ 5~9๊นŒ์ง€ ๋ฐ˜๋ณต
				// i๊ฐ€ 2์ผ ๋•Œ 10~14๊นŒ์ง€ ๋ฐ˜๋ณต
				// i๊ฐ€ 3์ผ ๋•Œ 15~19๊นŒ์ง€ ๋ฐ˜๋ณต
				// i๊ฐ€ 4์ผ ๋•Œ 20~24๊นŒ์ง€ ๋ฐ˜๋ณต
				// ์ค„๋ฒˆํ˜ธ * ๊ฐ€๋กœ ๊ฐœ์ˆ˜ + ์นธ ๋ฒˆํ˜ธ
				cout << iNumber[i * 5 + j] << "\t";
			}
			cout << endl;
		}
		
		// true ๋กœ ๋จผ์ € ๋ชจ๋‘ ๋งž์ท„๋‹ค ๋ผ๊ณ  ๊ฐ€์ •
		bool bWin = true;
		// ํผ์ค„ ๋งž์ถ”์—ˆ๋Š”์ง€ ์ฒดํฌ
		for (int i = 0; i < 24; ++i) {
			if (iNumber[i] != i + 1) {
				bWin = false;
				break;
			}
		}

		if (bWin == true) {
			cout << "์ˆซ์ž ๋ชจ๋‘ ๋งž์ถค" << endl;
			break;
		}
		cout << "w : ์œ„ s : ์•„๋ž˜ a : ์™ผ์ชฝ d : ์˜ค๋ฅธ์ชฝ q : ์ข…๋ฃŒ : ";
		// _getch() : ๋ฌธ์ž 1๊ฐœ ์ž…๋ ฅ๋ฐ›๋Š” ํ•จ์ˆ˜ (๋ฌธ์ž ๋ˆ„๋ฅด๋Š” ์ˆœ๊ฐ„ ๋ฐ”๋กœ ๊ทธ ๋ฌธ์ž ๋ฐ˜ํ™˜ํ•˜๊ณ  ์ข…๋ฃŒ)
		char cInput = _getch();
		if (cInput == 'q' || cInput == 'Q') {
			break;
		}		

		switch (cInput) {
		case 'w':
		case 'W':
				// ๊ฐ€์žฅ ์œ—์ค„์—๋Š” 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];
					// ์œ„์— ์œ„์น˜์— ๋ณ„ ๋„ฃ๊ณ  2๊ฐœ์˜ ๊ฐ’ ์„œ๋กœ ๊ต์ฒด
					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;
		}
	}
	cout << "๊ฒŒ์ž„์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹น" << endl;
	return 0;
}

728x90
๋ฐ˜์‘ํ˜•
Comments