Calendar « June 2014 » Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Main » 2014 » June » 13 » C++ Program for MINESWEEPER
10:37:12 PM
C++ Program for MINESWEEPER
// MINESWEEPER void main() { int b; do { cout << "Enter number of squares per side (2 - 10)" << endl; cin >> b; }while(b < 1 && b >= 10); int board[b][b]; //0 - 8 = # of mines, 9 is mine int revealed[b][b]; //1 is revealed int i = 0; int j = 0; int x = 0; int y = 0; int z; //number of mines int q; int t = 0; //game over input int dead = 0; do { cout << "How many mines? (1 - " << ((b*b)-1) << ")" << endl; cin >> z; }while(z <= 0 && z >= ((b*b)-1)); for(i=0;i<b;i++) for(j=0;j<b;j++) board[i][j] = 0; i = random(i, b); j = random(j, b); cout << "Generating board..." << endl; do { i+=3; j+=6; x = random(i, b); y = random(j, b); if(board[y][x] != 9) { board[y][x] = 9; z--; if((y-1) >= 0) if(board[y-1][x] != 9) board[y-1][x]++; if((y-1) >= 0 && (x-1) >= 0) if(board[y-1][x-1] != 9) board[y-1][x-1]++; if((x-1) >= 0) if(board[y][x-1] != 9) board[y][x-1]++; if((y+1) < b) if(board[y+1][x] != 9) board[y+1][x]++; if((y+1) < b && (x+1) < b) if(board[y+1][x+1] != 9) board[y+1][x+1]++; if((x+1) < b) if(board[y][x+1] != 9) board[y][x+1]++; if((y-1) >= 0 && (x+1) < b) if(board[y-1][x+1] != 9) board[y-1][x+1]++; if((y+1) < b && (x-1) >= 0) if(board[y+1][x-1] != 9) board[y+1][x-1]++; } }while(z>0); for(i = 0; i < b; i++) for(j=0;j<b;j++) revealed[i][j]=0; //board creation end //ask for input/check squares loop do { system ("clear"); q = 0; z = 0; cout << " "; for(i=0;i<b;i++) cout << i << " "; cout << endl; for(i=0;i<b;i++) { for(j=0;j<b;j++) { if(j==0) cout << i << " |"; if(revealed[i][j]==1) reveal(board[i][j]); else cout << "_|"; if(j==(b-1)) cout << endl; if(board[i][j]!=9 && revealed[i][j]==1) q++; if(board[i][j] == 9) z++; } } if(q >= ((b*b) - z)) { cout << "You win!" << endl; dead = 1; } if(dead == 0) { cout << "X: "; cin >> x; cout << "Y: "; cin >> y; } if(board[y][x] == 9) { system ("clear"); cout << "You hit a mine!" << endl; cout << " "; for(i=0;i<b;i++) cout << i << " "; cout << endl; dead = 1; for(i=0; i<b; i++) { for(j=0;j<b;j++) { if(j==0) cout << i << " |"; if(board[i][j]==9) revealed[i][j]=1; if(revealed[i][j]==1) reveal(board[i][j]); else cout << "_|"; if(j==(b-1)) cout << endl; } } } if(board[y][x]==0) { revealed[y][x] = 1; for(i=0;i<b;i++) { for(j=0;j<b;j++) { if(i>(y-2)&&i<(y+2)) if(j>(x-2)&&j<(x+2)) if(board[i][j]!=9) revealed[i][j]=1; } } } if(board[y][x]>0 && board[y][x]<9) revealed[y][x] = 1; } while(dead == 0); if (dead == 1) replay(); } void replay() { char a; cout << "1) Replay 2) Quit" << endl; cin >> a; switch(a) { case '1': main(); break; case '2': cout << "Quit" << endl; break; default: cout << "Invalid input" << endl; replay(); break; } } void reveal(int x) { if(x == 0) cout << "o|"; else if(x == 9) cout << "x|"; else cout << x << "|"; } int random(int i, int b) { long ran; int t = time(0); int s; srand(t); s = ran; ran = rand(); ran >>= ran / (ran * i) + (i * 1337); ran = ran % b; return ran; }
Views: 1975 |
Added by: Chinnu1
| Rating: 5.0 /1
Statistics
Total online: 1
Guests: 1
Users: 0