<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=%EC%9C%A4%EC%A2%85%ED%95%98%2F%EC%A7%80%EB%A2%B0%EC%B0%BE%EA%B8%B0</id>
	<title>윤종하/지뢰찾기 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=%EC%9C%A4%EC%A2%85%ED%95%98%2F%EC%A7%80%EB%A2%B0%EC%B0%BE%EA%B8%B0"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=%EC%9C%A4%EC%A2%85%ED%95%98/%EC%A7%80%EB%A2%B0%EC%B0%BE%EA%B8%B0&amp;action=history"/>
	<updated>2026-05-15T02:07:02Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=%EC%9C%A4%EC%A2%85%ED%95%98/%EC%A7%80%EB%A2%B0%EC%B0%BE%EA%B8%B0&amp;diff=65835&amp;oldid=prev</id>
		<title>imported&gt;yjh0817 at 08:46, 17 February 2011</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=%EC%9C%A4%EC%A2%85%ED%95%98/%EC%A7%80%EB%A2%B0%EC%B0%BE%EA%B8%B0&amp;diff=65835&amp;oldid=prev"/>
		<updated>2011-02-17T08:46:19Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt; /* mine.c: 지뢰찾기 소스 파일(TUI)&lt;br /&gt;
 종류: win32 console program&lt;br /&gt;
 언어: C&lt;br /&gt;
 제작자: 윤종하&lt;br /&gt;
 제작 시작일: 2010년 12월 24일&lt;br /&gt;
 1차 종료일: 2010년 12월 29일*/&lt;br /&gt;
 &lt;br /&gt;
 #include&amp;amp;lt;stdio.h&amp;amp;gt;&lt;br /&gt;
 #include&amp;amp;lt;stdlib.h&amp;amp;gt;&lt;br /&gt;
 #include&amp;amp;lt;time.h&amp;amp;gt;&lt;br /&gt;
 #include&amp;amp;lt;conio.h&amp;amp;gt;&lt;br /&gt;
 #include&amp;amp;lt;windows.h&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 #define TRUE 1&lt;br /&gt;
 #define FALSE 0&lt;br /&gt;
 //#define NO_STATE 3&lt;br /&gt;
 &lt;br /&gt;
 typedef struct cell//1개 셀에 포함된 데이터의 구조체&lt;br /&gt;
 {&lt;br /&gt;
 	int iIsRevealed;&lt;br /&gt;
 	int iIsMine;&lt;br /&gt;
 	int iNumOfMine;//주변에 있는 지뢰의 개수&lt;br /&gt;
 	int iIsUnknown;&lt;br /&gt;
 	int iIsFined;&lt;br /&gt;
 }CELL;&lt;br /&gt;
 &lt;br /&gt;
 COORD* make_mine_map(CELL** map,COORD size,int iNumOfMine);&lt;br /&gt;
 void print_map(CELL** map,COORD size,int iNumOfMine,int iCurrentFindedMine);&lt;br /&gt;
 int click_cell(CELL** map,COORD size,int *iNumOfLeftCell);&lt;br /&gt;
 void one_right_click_cell(CELL** map,COORD size,COORD *cPosOfMine,int iNumOfMine,int *iFindedRealMine);&lt;br /&gt;
 void double_right_click_cell(CELL** map,COORD size);&lt;br /&gt;
 void find_mine(CELL** map,COORD size,COORD pos,int *iNumOfLeftCell);&lt;br /&gt;
 void count_time(int iSecond);&lt;br /&gt;
 void print_one_cell(CELL** map,int xpos,int ypos,int mine);&lt;br /&gt;
 COORD coord_input(COORD size);&lt;br /&gt;
 void initialize_cell(CELL *input);&lt;br /&gt;
 int search_mine(int iNumOfMine,COORD* real_mine_cell,COORD target_cell);&lt;br /&gt;
 &lt;br /&gt;
 int main(int argc,char* argv[])&lt;br /&gt;
 {&lt;br /&gt;
 	CELL **map;&lt;br /&gt;
 	COORD size;&lt;br /&gt;
 	COORD *cPosOfMine;&lt;br /&gt;
 	int iNumOfMine,iCurrentFindedMine=0,iNumOfLeftCell,iIsAlive=TRUE,tempX,tempY,iFindedRealMine=0,i,j;&lt;br /&gt;
 	time_t tStartTime,tEndTime;&lt;br /&gt;
 	char cSelect;&lt;br /&gt;
 &lt;br /&gt;
 	/*걍 멋있으라고 한 시작화면*/&lt;br /&gt;
 	for(i=0;i&amp;amp;lt;5;i++)	printf(&amp;quot;*****************************************************************************\n&amp;quot;);&lt;br /&gt;
 	printf(&amp;quot;**********                                                         **********\n&amp;quot;);&lt;br /&gt;
 	printf(&amp;quot;**********                                                         **********\n&amp;quot;);&lt;br /&gt;
 	printf(&amp;quot;**********                                                         **********\n&amp;quot;);&lt;br /&gt;
 	printf(&amp;quot;**********                       지뢰찾기                          **********\n&amp;quot;);&lt;br /&gt;
 	printf(&amp;quot;**********                                                         **********\n&amp;quot;);&lt;br /&gt;
 	printf(&amp;quot;**********                                                         **********\n&amp;quot;);&lt;br /&gt;
 	printf(&amp;quot;**********                                                         **********\n&amp;quot;);&lt;br /&gt;
 	printf(&amp;quot;**********                                                         **********\n&amp;quot;);&lt;br /&gt;
 	printf(&amp;quot;**********                           크리스마스에 할 거 없어서 만듦*********\n&amp;quot;);&lt;br /&gt;
 	for(i=0;i&amp;amp;lt;5;i++)	printf(&amp;quot;\*****************************************************************************\n&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
 	/*map 작성 시작*/&lt;br /&gt;
 	if(argc==4){//argument로의 맵사이즈 입력이 있을 경우&lt;br /&gt;
 		size.X=(short)atoi(argv[1]);&lt;br /&gt;
 		size.Y=(short)atoi(argv[2]);&lt;br /&gt;
 	}&lt;br /&gt;
 	else{//argument로의 입력이 없을 경우&lt;br /&gt;
 		printf(&amp;quot;맵의 사이즈를 입력하세요(가로 세로): &amp;quot;);&lt;br /&gt;
 		scanf(&amp;quot;%d %d&amp;quot;,&amp;amp;amp;tempX,&amp;amp;amp;tempY);&lt;br /&gt;
 		size.X=tempX;&lt;br /&gt;
 		size.Y=tempY;&lt;br /&gt;
 	}&lt;br /&gt;
 	map=(CELL**)malloc(sizeof(CELL)*size.Y);//1차동적할당&lt;br /&gt;
 	for(i=0;i&amp;amp;lt;size.Y;i++){&lt;br /&gt;
 		map[i]=(CELL*)malloc(sizeof(CELL)*size.X);//2차동적할당&lt;br /&gt;
 		for(j=0;j&amp;amp;lt;size.X;j++)	initialize_cell(&amp;amp;amp;map[i][j]);//초기화 시킴&lt;br /&gt;
 	}&lt;br /&gt;
 	if(argc==4)		iNumOfMine=atoi(argv[3]);////argument로의 지뢰 개수 입력이 있을 경우&lt;br /&gt;
 	else{&lt;br /&gt;
 		printf(&amp;quot;지뢰의 개수를 입력하세요: &amp;quot;);&lt;br /&gt;
 		scanf(&amp;quot;%d&amp;quot;,&amp;amp;amp;iNumOfMine);&lt;br /&gt;
 	}&lt;br /&gt;
 	cPosOfMine=make_mine_map(map,size,iNumOfMine);&lt;br /&gt;
 	iNumOfLeftCell=size.X*size.Y;&lt;br /&gt;
 	printf(&amp;quot;입력한 데이터에 따른 맵 및 데이터의 세팅이 성공적으로 완료됐습니다.\n3초 후 게임이 시작됩니다.\n&amp;quot;);&lt;br /&gt;
 	count_time(3);&lt;br /&gt;
 	//system(&amp;quot;pause&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
 	/*게임을 위한 루프 시작*/&lt;br /&gt;
 	time(&amp;amp;amp;tStartTime);//시작시간 저장&lt;br /&gt;
 	do{&lt;br /&gt;
 		print_map(map,size,iNumOfMine,iCurrentFindedMine);&lt;br /&gt;
 		printf(&amp;quot;수행할 작업을 선택하세요\na: 누르기\ts: 지뢰가 확실히 있음\td: 여기는 뭐가뭔지 모르겠음\tq: 종료&amp;quot;);&lt;br /&gt;
 		cSelect=getch();&lt;br /&gt;
 		fflush(stdin);&lt;br /&gt;
 		cSelect=tolower(cSelect);&lt;br /&gt;
 		switch(cSelect){&lt;br /&gt;
 			case &amp;#039;a&amp;#039;:&lt;br /&gt;
 				iIsAlive=click_cell(map,size,&amp;amp;amp;iNumOfLeftCell);&lt;br /&gt;
 				if(iIsAlive==FALSE){&lt;br /&gt;
 					printf(&amp;quot;지뢰가 폭발했습니다\n&amp;quot;);&lt;br /&gt;
 					system(&amp;quot;pause&amp;quot;);//위에 문장은 읽어야되니까&lt;br /&gt;
 				}&lt;br /&gt;
 				break;&lt;br /&gt;
 			case &amp;#039;s&amp;#039;:&lt;br /&gt;
 				one_right_click_cell(map,size,cPosOfMine,iNumOfMine,&amp;amp;amp;iFindedRealMine);&lt;br /&gt;
 				iCurrentFindedMine++;&lt;br /&gt;
 				break;&lt;br /&gt;
 			case &amp;#039;d&amp;#039;:&lt;br /&gt;
 				double_right_click_cell(map,size);&lt;br /&gt;
 				break;&lt;br /&gt;
 			case &amp;#039;q&amp;#039;:&lt;br /&gt;
 				for(i=0;i&amp;amp;lt;size.Y;i++)	free(map[i]);//2차 동적할당 해제 완료&lt;br /&gt;
 				free(map);&lt;br /&gt;
 				free(cPosOfMine);&lt;br /&gt;
 				printf(&amp;quot;게임을 종료합니다.\n제작: 크리스마스에 할게 없었다니까\n&amp;quot;);&lt;br /&gt;
 				system(&amp;quot;pause&amp;quot;);&lt;br /&gt;
 				exit(0);&lt;br /&gt;
 				break;&lt;br /&gt;
 			default:&lt;br /&gt;
 				printf(&amp;quot;잘못된 입력입니다.&amp;quot;);&lt;br /&gt;
 		}&lt;br /&gt;
 	}while(iNumOfLeftCell&amp;amp;gt;iNumOfMine &amp;amp;amp;&amp;amp;amp; iIsAlive==TRUE &amp;amp;amp;&amp;amp;amp; iFindedRealMine!=iNumOfMine);&lt;br /&gt;
 	time(&amp;amp;amp;tEndTime);//종료시간 저장&lt;br /&gt;
 	free(cPosOfMine);&lt;br /&gt;
 &lt;br /&gt;
 	/*승패 알림 메시지 출력*/&lt;br /&gt;
 	system(&amp;quot;cls&amp;quot;);&lt;br /&gt;
 	if(iIsAlive==TRUE)			printf(&amp;quot;축하합니다! 당신이 승리했습니다.\a\a\a\n&amp;quot;);&lt;br /&gt;
 	else if(iIsAlive==FALSE)	printf(&amp;quot;당신이 졌습니다.\a\a\n&amp;quot;);&lt;br /&gt;
 	else						printf(&amp;quot;Unproteted error is occured!\a&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
 	/*모든 지뢰의 위치 출력*/&lt;br /&gt;
 	for(i=0;i&amp;amp;lt;size.Y;i++){&lt;br /&gt;
 		for(j=0;j&amp;amp;lt;size.X;j++)	print_one_cell(map,j,i,TRUE);&lt;br /&gt;
 		free(map[i]);//2차 동적할당 해제&lt;br /&gt;
 		Sleep(500);&lt;br /&gt;
 		printf(&amp;quot;\n&amp;quot;);&lt;br /&gt;
 	}&lt;br /&gt;
 	free(map);//1차 동적할당 해제&lt;br /&gt;
 	printf(&amp;quot;소요시간: %ldsec.\n&amp;quot;,tEndTime-tStartTime);//소요시간 출력&lt;br /&gt;
 &lt;br /&gt;
 	printf(&amp;quot;2010년 크리스마스에 할거 없어서 만듦\n&amp;quot;);&lt;br /&gt;
 	system(&amp;quot;pause&amp;quot;);&lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 COORD* make_mine_map(CELL **map,COORD size,int iNumOfMine)&lt;br /&gt;
 {&lt;br /&gt;
 	int i,j;&lt;br /&gt;
 	static COORD *pos_data;&lt;br /&gt;
 	//FILE *txtForDebug=fopen(&amp;quot;mine_pos.txt&amp;quot;,&amp;quot;w&amp;quot;);&lt;br /&gt;
 	srand(time(NULL));&lt;br /&gt;
 	pos_data=(COORD*)malloc(sizeof(COORD)*iNumOfMine);//지뢰 개수만큼 동적할당&lt;br /&gt;
 &lt;br /&gt;
 	/*지뢰좌표 생성*/&lt;br /&gt;
 	for(i=0;i&amp;amp;lt;iNumOfMine;){&lt;br /&gt;
 		pos_data[i].X=rand()%size.X;&lt;br /&gt;
 		pos_data[i].Y=rand()%size.Y;&lt;br /&gt;
 		/*중복 좌표 검사*/&lt;br /&gt;
 		for(j=0;j&amp;amp;lt;i;j++)	if(pos_data[i].X==pos_data[j].X &amp;amp;amp;&amp;amp;amp; pos_data[i].Y==pos_data[j].Y)	continue;//중복 좌표가 생기면 재생성&lt;br /&gt;
 		i++;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	/*맵에 지뢰좌표 입력 및 디버깅용 파일 출력*/&lt;br /&gt;
 	for(i=0;i&amp;amp;lt;iNumOfMine;i++){&lt;br /&gt;
 		//printf(&amp;quot;%d: %d %d\n&amp;quot;,i,pos_data[i].X,pos_data[i].Y);&lt;br /&gt;
 		map[pos_data[i].Y][pos_data[i].X].iIsMine=TRUE;&lt;br /&gt;
 		//fprintf(txtForDebug,&amp;quot;%d: %d %d\n&amp;quot;,i,(int)pos_data[i].X,(int)pos_data[i].Y);&lt;br /&gt;
 	}&lt;br /&gt;
 	//system(&amp;quot;pause&amp;quot;);&lt;br /&gt;
 	return pos_data;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void print_map(CELL **map,COORD size,int iNumOfMine,int iCurrentFindedMine)&lt;br /&gt;
 {&lt;br /&gt;
 	int xIndex,yIndex;&lt;br /&gt;
 	system(&amp;quot;cls&amp;quot;);&lt;br /&gt;
 	for(yIndex=-1;yIndex&amp;amp;lt;size.Y;yIndex++){&lt;br /&gt;
 		for(xIndex=-1;xIndex&amp;amp;lt;size.X;xIndex++){&lt;br /&gt;
 			if(yIndex==-1){&lt;br /&gt;
 				if(xIndex==-1)	printf(&amp;quot; &amp;quot;);&lt;br /&gt;
 				else			printf(&amp;quot;%d &amp;quot;,xIndex);&lt;br /&gt;
 			}&lt;br /&gt;
 			else if(xIndex==-1)	printf(&amp;quot;%d&amp;quot;,yIndex);&lt;br /&gt;
 			else{&lt;br /&gt;
 				print_one_cell(map,xIndex,yIndex,FALSE);&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
 		printf(&amp;quot;\n&amp;quot;);&lt;br /&gt;
 	}&lt;br /&gt;
 	printf(&amp;quot;남은 지뢰의 개수: %d\n&amp;quot;,iNumOfMine-iCurrentFindedMine);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int click_cell(CELL** map,COORD size,int *iNumOfLeftCell)&lt;br /&gt;
 {&lt;br /&gt;
 	COORD input=coord_input(size);&lt;br /&gt;
 &lt;br /&gt;
 	if(map[input.Y][input.X].iIsRevealed==TRUE)		return TRUE;//이미 깐 것을 눌렀을 경우&lt;br /&gt;
 	else if(map[input.Y][input.X].iIsMine==TRUE)	return FALSE;//지뢰를 눌렀을 경우&lt;br /&gt;
 	else											find_mine(map,size,input,&amp;amp;amp;(*iNumOfLeftCell));&lt;br /&gt;
 	return TRUE;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void one_right_click_cell(CELL **map,COORD size,COORD *cPosOfMine,int iNumOfMine,int *iFindedRealMine)&lt;br /&gt;
 {&lt;br /&gt;
 	COORD input=coord_input(size);&lt;br /&gt;
 &lt;br /&gt;
 	if(map[input.Y][input.X].iIsRevealed==TRUE)	return;//이미 깐 것을 눌렀을 경우&lt;br /&gt;
 	else{&lt;br /&gt;
 		if(map[input.Y][input.X].iIsFined==TRUE)	map[input.Y][input.X].iIsFined=FALSE;&lt;br /&gt;
 		else										map[input.Y][input.X].iIsFined=TRUE;&lt;br /&gt;
 	}&lt;br /&gt;
 	if(search_mine(iNumOfMine,cPosOfMine,input)==TRUE)	(*iFindedRealMine)++;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void double_right_click_cell(CELL **map,COORD size)&lt;br /&gt;
 {&lt;br /&gt;
 	COORD input=coord_input(size);&lt;br /&gt;
 &lt;br /&gt;
 	if(map[input.Y][input.X].iIsRevealed==TRUE)	return;//이미 깐 것을 눌렀을 경우&lt;br /&gt;
 	else{&lt;br /&gt;
 		if(map[input.Y][input.X].iIsUnknown==FALSE)	map[input.Y][input.X].iIsUnknown=TRUE;&lt;br /&gt;
 		else										map[input.Y][input.X].iIsUnknown=FALSE;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void find_mine(CELL **map,COORD size,COORD pos,int *iNumOfLeftCell)&lt;br /&gt;
 {&lt;br /&gt;
 	int iNumOfMine=0,coordX,coordY;&lt;br /&gt;
 	COORD temp_pos=pos;&lt;br /&gt;
 	if(map[pos.Y][pos.X].iIsMine==TRUE)	return;//만약 지뢰이면 검사 종료&lt;br /&gt;
 	map[pos.Y][pos.X].iIsRevealed=TRUE;//까줌&lt;br /&gt;
 	(*iNumOfLeftCell)--;&lt;br /&gt;
 &lt;br /&gt;
 	for(coordY=-1;coordY&amp;amp;lt;=1;coordY++){&lt;br /&gt;
 		for(coordX=-1;coordX&amp;amp;lt;=1;coordX++){&lt;br /&gt;
 			temp_pos=pos;&lt;br /&gt;
 			if(coordX==0 &amp;amp;amp;&amp;amp;amp; coordY==0)	continue;//기존 위치에 있는 데이터를 참조했을 때&lt;br /&gt;
 			temp_pos.X=pos.X+coordX;	temp_pos.Y=pos.Y+coordY;&lt;br /&gt;
 			if((temp_pos.X&amp;amp;gt;size.X-1 || temp_pos.X&amp;amp;lt;0) || (temp_pos.Y&amp;amp;gt;size.Y-1 || temp_pos.Y&amp;amp;lt;0))	continue;//범위를 초과했을 경우&lt;br /&gt;
 			else if(map[temp_pos.Y][temp_pos.X].iIsRevealed==TRUE)								continue;//이미 깐 것일 경우&lt;br /&gt;
 			else if(map[temp_pos.Y][temp_pos.X].iIsMine==TRUE)									iNumOfMine++;&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	map[pos.Y][pos.X].iNumOfMine=iNumOfMine;//주변 지뢰의 개수 저장&lt;br /&gt;
 	if(map[pos.Y][pos.X].iNumOfMine!=0)	return;//지뢰의 개수가 0개가 아니면 끝&lt;br /&gt;
 	else{//주변의 데이터 탐색시작&lt;br /&gt;
 		for(coordY=-1;coordY&amp;amp;lt;=1;coordY++){&lt;br /&gt;
 			for(coordX=-1;coordX&amp;amp;lt;=1;coordX++){&lt;br /&gt;
 				temp_pos=pos;&lt;br /&gt;
 				temp_pos.X+=coordX;	temp_pos.Y+=coordY;&lt;br /&gt;
 				if((temp_pos.X&amp;amp;gt;size.X-1 || temp_pos.X&amp;amp;lt;0) || (temp_pos.Y&amp;amp;gt;size.Y-1 || temp_pos.Y&amp;amp;lt;0))	continue;//범위를 초과했을 경우&lt;br /&gt;
 				if(coordX==0 &amp;amp;amp;&amp;amp;amp; coordY==0)	continue;//기존 위치를 참조했을 경우. 지우면 stack overflow의 향연&lt;br /&gt;
 				if(map[temp_pos.Y][temp_pos.X].iIsRevealed==TRUE)	continue;//열려있을 경우는 검사할 필요가 없잖아&lt;br /&gt;
 				find_mine(map,size,temp_pos,&amp;amp;amp;(*iNumOfLeftCell));&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void count_time(int iSecond)&lt;br /&gt;
 {&lt;br /&gt;
 	for(;iSecond&amp;amp;gt;0;iSecond--){&lt;br /&gt;
 		printf(&amp;quot;%d\a &amp;quot;,iSecond);&lt;br /&gt;
 		Sleep(1000);&lt;br /&gt;
 	}&lt;br /&gt;
 	printf(&amp;quot;%d\a\n&amp;quot;,iSecond);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void print_one_cell(CELL **map,int xpos,int ypos,int mine)&lt;br /&gt;
 {&lt;br /&gt;
 	if(map[ypos][xpos].iIsRevealed==TRUE){&lt;br /&gt;
 		if(mine==TRUE &amp;amp;amp;&amp;amp;amp; map[ypos][xpos].iIsMine==TRUE)	printf(&amp;quot; *&amp;quot;);&lt;br /&gt;
 		else if(map[ypos][xpos].iNumOfMine==0)			printf(&amp;quot;□&amp;quot;);&lt;br /&gt;
 		else											printf(&amp;quot; %d&amp;quot;,map[ypos][xpos].iNumOfMine);&lt;br /&gt;
 	}&lt;br /&gt;
 	else{&lt;br /&gt;
 		if(map[ypos][xpos].iIsFined==TRUE)				printf(&amp;quot; m&amp;quot;);&lt;br /&gt;
 		else if(map[ypos][xpos].iIsUnknown==TRUE)		printf(&amp;quot; ?&amp;quot;);&lt;br /&gt;
 		else if(mine==TRUE &amp;amp;amp;&amp;amp;amp; map[ypos][xpos].iIsMine)	printf(&amp;quot; *&amp;quot;);&lt;br /&gt;
 		else											printf(&amp;quot;■&amp;quot;);&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 COORD coord_input(COORD size)&lt;br /&gt;
 {&lt;br /&gt;
 	COORD temp;&lt;br /&gt;
 	int tempX,tempY;&lt;br /&gt;
 	printf(&amp;quot;좌표를 입력하세요(x y): &amp;quot;);&lt;br /&gt;
 	scanf(&amp;quot;%d %d&amp;quot;,&amp;amp;amp;tempX,&amp;amp;amp;tempY);&lt;br /&gt;
 	temp.X=(short)tempX;&lt;br /&gt;
 	temp.Y=(short)tempY;&lt;br /&gt;
 &lt;br /&gt;
 	while(temp.X&amp;amp;lt;0 || temp.X&amp;amp;gt;size.X-1 || temp.Y&amp;amp;lt;0 || temp.Y&amp;amp;gt;size.Y-1){&lt;br /&gt;
 		printf(&amp;quot;좌표 입력이 잘못됐습니다. 다시 입력하세요.\n좌표를 입력하세요(x y): &amp;quot;);&lt;br /&gt;
 		scanf(&amp;quot;%d %d&amp;quot;,&amp;amp;amp;tempX,&amp;amp;amp;tempY);&lt;br /&gt;
 		temp.X=(short)tempX;&lt;br /&gt;
 		temp.Y=(short)tempY;&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	return temp;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void initialize_cell(CELL *input)&lt;br /&gt;
 {&lt;br /&gt;
 	input-&amp;amp;gt;iIsFined=FALSE;&lt;br /&gt;
 	input-&amp;amp;gt;iIsMine=FALSE;&lt;br /&gt;
 	input-&amp;amp;gt;iIsRevealed=FALSE;&lt;br /&gt;
 	input-&amp;amp;gt;iIsUnknown=FALSE;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int search_mine(int iNumOfMine,COORD *real_mine_cell,COORD target_cell)&lt;br /&gt;
 {&lt;br /&gt;
 	int i;&lt;br /&gt;
 	for(i=0;i&amp;amp;lt;iNumOfMine;i++)	if(real_mine_cell[i].X==target_cell.X &amp;amp;amp;&amp;amp;amp; real_mine_cell[i].Y==target_cell.Y)	return TRUE;&lt;br /&gt;
 	return FALSE;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
작년 크리스마스에 할게 없어서 모태솔로잉여프로젝트로 지뢰찾기를 제작해봤습니다.&lt;br /&gt;
콘솔 프로그램으로 열심히 짜봤구요, 음주코딩의 위대함을 깨달았습니다.&lt;br /&gt;
&lt;br /&gt;
근데 버그가 넘쳐나는거 같아요 ㅠ&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;yjh0817</name></author>
	</entry>
</feed>