코드 ¶
~cpp #include <iostream.h> #include <stdlib.h> #include <time.h> static int space[16][16]; static int gameover=1; //0일경우 메뉴 무한루프 끝 void mine_confirm(int X, int Y); //지뢰가 있는지 없는지 확인 void mine_update(int X, int Y); //지뢰가 없을경우 그근처에 지뢰수를 업뎃 void mine_newgame(); //지뢰 위치 초기화 void mine_show(); //지뢰 화면 보여주기 void mine_menu(); //메뉴 ///////////////////////////////////////////////////////// void main() { mine_newgame(); mine_show(); while(gameover) { mine_menu(); } } ///////////////////////////////////////////////////////// void mine_menu() //메뉴 나타냄 { int num_x,num_y; while(1){ num_x = 0; num_y = 0; cout << "X 좌표는 ? (1~20): "; cin >> num_x; cout << "Y 좌표는 ? (1~20): "; cin >> num_y; if (1<=num_x<=20) if (1<=num_y<=20) break; cout << "잘못된값을입력하셨습니다." << endl; } mine_confirm(num_x-1,num_y-1); } void mine_show() { int a,b; cout << endl << endl<< endl<< endl<< endl<< endl<< endl; cout << " ======지뢰찾기 1.00======" << endl; for (a=0 ; a!=16 ; a++){ cout << " "; for (b=0 ; b!=16 ; b++){ switch(space[b][a]){ case 10 : cout << "■"; break; case 9 : cout << "■"; break; default : cout << space[b][a] << " " ; } } cout << endl; } } ///////////////////////////////////////////////////////// void mine_update(int X, int Y) { int mine_count; mine_count = 0; if(X-1 >= 0 && Y-1 >= 0){ if (space[X-1][Y-1] == 9){ mine_count++; } } if(Y-1 >= 0){ if (space[X][Y-1] == 9){ mine_count++; } } if(X+1 <= 15 && Y-1 >= 0){ if (space[X+1][Y-1] == 9){ mine_count++; } } if(X-1 >= 0 ){ if (space[X-1][Y] == 9){ mine_count++; } } if(X+1 <= 15){ if (space[X+1][Y] == 9){ mine_count++; } } if(X-1 >= 0 && Y+1 <= 15){ if (space[X-1][Y+1] == 9){ mine_count++; } } if(Y+1 <= 15){ if (space[X][Y+1] == 9){ mine_count++; } } if(X+1 <=15 && Y+1 <= 15){ if (space[X+1][Y+1] == 9){ mine_count++; } } space[X][Y] = mine_count; mine_show(); } /////////////////////////////////////////////////////////// void mine_confirm(int X, int Y) { if (space[X][Y] ==9){ gameover = 0; cout << endl<< endl<< endl<< endl; cout << endl << " ====YOU step MINE AND BOOM===="; cout << endl << " ============GAME OVER=============" <<endl; int a,b; for (a=0 ; a!=16 ; a++){ cout << " "; for (b=0 ; b!=16 ; b++){ switch(space[b][a]){ case 10 : cout << "■"; break; case 9 : cout << "⊙"; break; default : cout << space[b][a] << " " ; } } cout << endl; } char c; cout << "다시하시겠습니까?(y/n) : "; cin >> c ; if (c == 'y'){ gameover = 1; mine_newgame(); mine_show(); } } else if(space[X][Y] ==10) mine_update(X,Y); } ///////////////////////////////////////////////////////// void mine_newgame() { int i; int a,b; for (a=0 ; a!=16 ; a++){ for (b=0 ; b!=16 ; b++){ space[b][a] = 10; } } // 초기화 srand(time(NULL)); // 난수 발생 시드값 결정 for (i=0;i!=40;i++){ while(1) { int x,y; x=rand()%15+0; y=rand()%15+0; if (space[x][y] != 9){ space[x][y] = 9; break; } } } } /////////////////////////////////////////////////////////
후기 ¶
찾기 기능만 넣었는데 ㅡ,.ㅡ;;대략 200라인밖에;;
도저히 깃발꽃기랑 근처에 마인없으면 다 보이게 하는건 못하겟던데 ㅠ
비주얼적인 클릭같은게 없으니 단순히 X,Y좌표 방식 ㅡ,.ㅡ;;;
역시 힘들어 ㅠ