본문 바로가기
공부

스트링 활용 빙고

by MY블로그 2022. 10. 26.

https://chans-note2.tistory.com/m/32

빙고 ver2(문자열)

입력할 때 실시간으로 중복검출하는 부분에서 많은 고민이 있었다. 뭔가 코드가 좀 난잡해진 것 같은 기분이다... #include #include #include using namespace std; int main() { string bingo[5][5]; //빙고 배..

chans-note2.tistory.com

박찬 님의 블로그 도움으로 문제 해결 .. 너무 어렵다..
문자입력할때도 꼭 스트링.
불값을 이용한 플래그 관리도 다시한번 복습하고 찾아보기.

#include<iostream>
#include<string>
#include<Windows.h>

using namespace std;

int main()
{
	string bingo[5][5];	//스트링 문자 빙고 배열
	string input; //스트링 문자 입력값 변수
	int x = 0, y = 0; //출력 변수
	bool playing = true; //중복 검출용 변수
	int clear = 0, count = 0; //빙고 확인용 변수

	//빙고 입력
	while (x < 5 && y < 5) //X:01234 * Y:01234입력 다되면 while문 종료 조건
	{
		cout << "x : " << x << ", y : " << y << " 좌표의 이름을 입력해 주세요 :  ";
		cin >> input;
		playing = true;

		for (int y = 0; y < 5; y++) //배열내의 중복확인
		{
			for (int x = 0; x < 5; x++)
			{
				if (bingo[x][y] == input)
				{
					cout << "잘못된 입력 입니다. 다시 입력해 주세요." << endl;
					playing = false;
				}
			}
		}
		if (playing)		//배열내의 중복검출용 변수 확인
			bingo[x][y] = input;
		else
			continue;

		if (x != 4) x++; //반복을 위한 증감식
		else
		{
			y++;
			x = 0;
		}
	}
	system("cls");
	while (clear < 3)  //3빙고 시 종료조건
	{
		cout <<"\t   " << "[ 빙 고 시 작 ]" << endl;
		cout << endl;
		for (int y = 0; y < 5; y++) //빙고 출력
		{
			for (int x = 0; x < 5; x++)
			{
				if (bingo[x][y] == "-1") cout << "●" << "\t"; //입력된값 ●로 출력
				else cout << bingo[x][y] << "\t"; //입력되지않은 값들 그대로 출력
			}
			cout << endl << endl;
		}
		cout << "빙고 : " << clear << endl;
		cout << "입력 :  ";
		cin >> input;

		//중복입력 체크
		playing = false;
		for (int y = 0; y < 5; y++)
		{
			for (int x = 0; x < 5; x++)
			{
				if (bingo[x][y] == input)
				{
					bingo[x][y] = "-1";
					playing = true;
				}
			}
		}
		if (!playing) //중복값 입력시 출력
		{
			cout << "다시 입력해 주세요." << endl << endl;
			continue;
		}

		clear = 0; //반복을 위해 빙고(clear)변수 초기화
		for (int y = 0; y < 5; y++) //가로
		{
			count = 0;
			for (int x = 0; x < 5; x++)
			{
				if (bingo[x][y] == "-1") count++;
			}
			if (count == 5) clear++;
		}
		
		for (int x = 0; x < 5; x++) //세로
		{
			count = 0;
			for (int y = 0; y < 5; y++)
			{
				if (bingo[x][y] == "-1") count++;
			}
			if (count == 5) clear++;
		}
		
		int count1 = 0;  //대각선1의 임시변수
		int count2 = 0; //대각선2의 임시변수
		for (int x = 0; x < 5; x++)
		{
			if (bingo[x][x] == "-1")	count1++; //대각선1
			if (count1 == 5)	clear++;

			if (bingo[4 - x][x] == "-1")	count2++; //대각선2
			if (count2 == 5)	clear++;
		}
		system("cls");
	}
	cout << endl;
	cout <<"[ 빙고 " << clear << " 개가 되어종료 합니다 ]" << endl;
	cout << endl;
	Sleep(2000); //프로그램 2초뒤 자동종료.
 
 return 0;
}

'공부' 카테고리의 다른 글

메모리의 관리(구조/스택프레임/동적할당)  (2) 2022.10.26
스트링 활용 빙교 풀이  (0) 2022.10.26
숫자 빙고 게임  (0) 2022.10.24
숫자 슬라이드 퍼즐 게임  (0) 2022.10.23
아스키코드 참고자료  (0) 2022.10.20

댓글