----MineSweeper.java------ public class MineSweeper { public static void main(String[] args) { Game game = new Game(); } } ----Game.java------ public class Game { private Board board; boolean finish = false; boolean win = false; int turn=0; public Jogo(){ board = new Board(); Play(board); } public void Play(Board board){ do{ turn++; System.out.println("Turn "+turn); board.show(); finish = board.setPosition(); if(!finish){ board.openNeighbors(); finish = board.win(); } }while(!finish); if(board.win()){ System.out.println("Congratulations, you let the 10 fields with the mines in "+turn+" turns"); board.showMines(); } else { System.out.println("Mine! You lost!"); board.showMines(); } } } -----Board.java------- import java.util.Random; import java.util.Scanner; public class Board { private int[][] mines; private char[][] boardgame; private int Line, Column; Random random = new Random(); Scanner input = new Scanner(System.in); public Board (){ mines = new int[10][10]; boardgame = new char[10][10]; startMines(); randomMines(); fillTips(); startBoard(); } public boolean win(){ int count=0; for(int line = 1 ; line < 9 ; line++) for(int column = 1 ; column < 9 ; column++) if(boardgame[line][column]=='_') count++; if(count == 10) return true; else return false; } public void openNeighbors(){ for(int i=-1 ; i<2 ; i++) for(int j=-1 ; j<2 ; j++) if( (mines[Line+i][Column+j] != -1) && (Line != 0 && Line != 9 && Column != 0 && Column != 9) ) boardgame[Line+i][Column+j]=Character.forDigit(mines[Line+i][Column+j], 10); } public int getPosition(int Line, int Column){ return mines[Line][Column]; } public boolean setPosition(){ do{ System.out.print("\nLine: "); Line = input.nextInt(); System.out.print("Column: "); Column = input.nextInt(); if( (boardgame[Line][Column] != '_') && ((Line < 9 && Line > 0) && (Column < 9 && Column > 0))) System.out.println("Field already shown"); if( Line < 1 || Line > 8 || Column < 1 || Column > 8) System.out.println("Choose a number between 1 and 8"); }while((Line < 1 || Line > 8 || Column < 1 || Column > 8) || (boardgame[Line][Column] != '_') ); if(getPosition(Line, Column)== -1) return true; else return false; } public void show(){ System.out.println("\n Lines"); for(int Line = 8 ; Line > 0 ; Line--){ System.out.print(" "+Line + " "); for(int Column = 1 ; Column < 9 ; Column++){ System.out.print(" "+ boardgame[Line][Column]); } System.out.println(); } System.out.println("\n 1 2 3 4 5 6 7 8"); System.out.println(" Columns"); } public void fillTips(){ for(int line=1 ; line < 9 ; line++) for(int column=1 ; column < 9 ; column++){ for(int i=-1 ; i<=1 ; i++) for(int j=-1 ; j<=1 ; j++) if(mines[line][column] != -1) if(mines[line+i][column+j] == -1) mines[line][column]++; } } public void showMines(){ for(int i=1 ; i < 9; i++) for(int j=1 ; j < 9 ; j++) if(mines[i][j] == -1) boardgame[i][j]='*'; show(); } public void startBoard(){ for(int i=1 ; i<mines.length ; i++) for(int j=1 ; j<mines.length ; j++) boardgame[i][j]= '_'; } public void startMines(){ for(int i=0 ; i<mines.length ; i++) for(int j=0 ; j<mines.length ; j++) mines[i][j]=0; } public void randomMines(){ boolean raffled; int Line, Column; for(int i=0 ; i<10 ; i++){ do{ Line = random.nextInt(8) + 1; Column = random.nextInt(8) + 1; if(mines[Line][Column] == -1) raffled=true; else raffled = false; }while(raffled); mines[Line][Column] = -1; } } }
Java program for Minesweeper game.
Reviewed by
on
December 20, 2019
Rating:
No comments: