Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Can someone make some precise comment on this code and help me understand it: it

ID: 3582243 • Letter: C

Question

Can someone make some precise comment on this code and help me understand it: it is for minesweeper:

public void mousePressed(MouseEvent evt) {

int row, col;

row = findR( evt.getY() );

col = findCol( evt.getX() );

if(evt.isMetaDown()){

   if(color[row][col] == clicked){

color[row][col] = bomb;

flaggedSpace++;

   }

   else if(color[row][col] == bomb){

color[row][col] =clicked;

flaggedSpace--;

   }

}

else if(bombs[row][col]==true){

   JOptionPane.showMessageDialog(this, "You Loss!");

   lose=true;

}

else{

   if(color[row][col] !=safe){

safeSpace++;

   }

   color[row][col] =safe;

}

if(safeSpace+flaggedSpace==100){

if(flaggedSpace<=10){

   JOptionPane.showMessageDialog(this, "You Won!");

}

private int countMines(int r, int c) {

int counter;

counter = 0;

if(r>=0 && r<=9 && c<=9 && c>=0){

if(r-1>=0 && c-1>=0){

   if (bombs[r-1][c-1]==true){

counter++;

   }

}

if(r-1>=0 && c+1<=9){

   if (bombs[r-1][c+1]==true){

counter++;

   }

}

if(r-1>=0){

   if (bombs[r-1][c]==true){

counter++;

   }

}if(c-1>=0){

   if (bombs[r][c-1]==true){

counter++;

   }

}

if(c+1<=9){

   if (bombs[r][c+1]==true){

counter++;

   }

}

if(r+1<=9 && c-1>=0){

   if (bombs[r+1][c-1]==true){

counter++;

   }

}

if(r+1<=9 &&c+1<=9){

   if (bombs[r+1][c+1]==true){

counter++;

   }

}

if(r+1<=9){

   if (bombs[r+1][c]==true){

counter++;

   }

}

}

return counter;

}

private void defineMines(){

int counter = 0;

while (counter<10){

int r = (int)(10*Math.random());

int c = (int)(10*Math.random());

if(bombs[r][c] == false){

   counter++;

   bombs[r][c] = true;

}

}

for (int i=0; i<10; i++){

for(int c=0; c<10;c++){

   color[i][c] =clicked;

}

}

}

public void mouseClicked(MouseEvent evt) { }

public void mouseEntered(MouseEvent evt) { }

public void mouseExited(MouseEvent evt) { }

public void mouseReleased(MouseEvent evt) { }

}

repaint();

}

Explanation / Answer

Also there are two boards- color and bombs.
Color: denotes the positions of all colored cells ( safe moves ).
Bombs: denotes the positions of all bombs ( unsafe moves ).

We also assign the moves using the function mousePressed().

Then the game is played till the user either wins (when the user never steps/clicks on a mine-containing cell) or lose (when the user steps/clicks on a mine-containing cell). This is checked by the positions of bombs and current position.

This function returns a true if the user steps/clicks on a mine and hence he loses else if he step/click on a safe cell, then we get the count of mines surrounding that cell. We use the function countAdjacentMines() to calculate the adjacent mines. Since there can be maximum 8 surrounding cells, so we check for all 8 surrounding cells.

If there are no adjacent mines to this cell, then we recursively click/step on all the safe adjacent cells (hence reducing the time of the game-play). And if there is atleast a single adjacent mine to this cell then that count is displayed on the current cell. This is given as a hint to the player so that he can avoid stepping/clicking on the cells having mines by logic.
Also if you click on a cell having no adjacent mines (in any of the surrounding eight cells) then all the adjacent cells are automatically cleared, thus saving our time.

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote