Showing posts with label minesweeper program. Show all posts
Showing posts with label minesweeper program. Show all posts

Wednesday, 21 January 2015

Minesweeper game in java


minesweeper Program in java

Minesweeper.java

import java.util.Random;
public class Minesweeper {
  int _row=5,_col=5,_countGameOver=0;
  int [][] _board=new int[_row][_col];
  boolean [][] _flagMatrix=new boolean[_row][_col];
 public void plotBoard(){
 int noOfBomb=_col;
while(noOfBomb>0) {
 int i=getRandomNumber();
 int j=getRandomNumber();
 if (_board[i][j]!=-1) {
_board[i][j]=-1;
noOfBomb--;
  }
 }
  }
public int getRandomNumber(){
Random t = new Random();
// random integers in [0, 100]
int num;
{
num=t.nextInt(_col);
}while(num>_col);
return num;
    }
boolean isValid(int i,int j){
return((i>=0 && i<_row)&&(j>=0 && j<_col));
}
int getAdjBomb(int i,int j){
int num=0;
//System.out.println("i="+i+"j="+j);
for (int k = i-1; k <=(i+1); k++) {
for (int l= j-1; l<=(j+1); l++) {
    if (isValid(k,l)&&(_board[k][l]==-1)) {
num++;
   }
    }
}
return num;
}
public void calculateCounts(){
for (int i = 0; i <_row; i++) {
    for (int j = 0; j <_col; j++) {
    if(_board[i][j]!=-1)
       _board[i][j]=getAdjBomb(i,j);
    }
}
}
public void print(){
for (int i = 0; i <_row; i++) {
for (int j = 0; j <_col; j++) {
System.out.print(" "+_board[i][j]);
}
System.out.println("");
}
}
public void displayFlagMatrix(){
for (int i = 0; i <_row; i++) {
   for (int j = 0; j <_col; j++) {
    if (_flagMatrix[i][j]==true) {
    System.out.print(" "+"*");
}
    else{
    System.out.print(" "+"+");
    }
   }
System.out.println(" ");
}
}
public boolean play(int r,int c){
if (!(isValid(r,c))) {
System.out.println("Please Enter row and col in correct range");
return false;
}
if (_flagMatrix[r][c]==true) {
System.out.println("This is a open position please enter other col and row");
return false;
}
if (_board[r][c]==-1)
return true;
if (_board[r][c]!=0) {
_countGameOver++;
_flagMatrix[r][c]=true;
}
else{
_flagMatrix[r][c]=true;
_countGameOver++;
openSpace(r, c);
}
return false;
}
void openSpace(int r,int c){
for (int k = r-1; k <=(r+1); k++) {
   for (int l= c-1; l<=(c+1); l++) {
            if (isValid(k,l)&&(_board[k][l]!=-1)&&(_flagMatrix[k][l]==false)) {
             _flagMatrix[k][l]=true;
              _countGameOver++;
          if (_board[k][l]==0) {
             openSpace(k,l);
          }
         }  
    }
}
}
public boolean checkGameOver(){
return(_countGameOver==(_row*_row)-(_row));
}
}

++++++++++++++++++

MainMinessweeper.java


import java.util.Scanner;
import com.jan21.*;
public class MainMinesweeper extends Minesweeper {
public static void main(String[] args) {
MainMinesweeper obj=new MainMinesweeper();
    obj.plotBoard();
    obj.calculateCounts();
    System.out.println("afate count");
    obj.print();
    int r,c;
    System.out.println("+++++++++++++++");
    obj.displayFlagMatrix();
    while(true){
  System.out.println("===============");
    Scanner input=new Scanner(System.in);
    System.out.println("enter row");
    r=input.nextInt();
    System.out.println("enter col");
    c=input.nextInt();
    if (obj.play(r,c)) {
System.out.println("You Lose");
break;
  }
System.out.println("ok");
if (obj.checkGameOver()) {
obj.displayFlagMatrix();
System.out.println("You Win Game");
break;
}
obj.displayFlagMatrix();
System.out.println("+++++++++++");
obj.print();

  }
}

}