Guest User

Untitled

a guest
Dec 17th, 2018
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.38 KB | None | 0 0
  1. //////////////////////////////////////////////////////////////
  2. //                      Minesweeper V 0.1                   //
  3. //                                                          //
  4. //  Created by Bruno Caceiro on 05/10/12.                   //
  5. //  Copyright (c) 2012 Bruno Caceiro. All rights reserved.  //
  6. //                                                          //
  7. //  Bruno Caceiro   - 2008107991                            //
  8. //  Leonardo Toledo - 2011168960                            //
  9. //                                                          //
  10. //////////////////////////////////////////////////////////////             
  11. import java.util.*;
  12. public class Minesweeper {
  13.     /*****************************************************************
  14.      *  Falta :                                                     **
  15.      *          - Subststituir o -1 default das minas por 'M'       **
  16.      *          - Sistema de pontuação de acordo com o pdf            **
  17.      *          - Melhorar sistema de preencher a matriz(consoante  **
  18.      *            linhas/colunas imprimir moldura !                 **
  19.      ****************************************************************/
  20.     public static void main(String[] args) {
  21.  
  22.         int [][]matriz;
  23.         matriz=get_biarray();
  24.         matriz=insere_minas(matriz);
  25.         matriz=preenche_matriz(matriz);
  26.         novo_jogo(matriz);
  27.         imprime_tabela_bidimensional(matriz);
  28.        
  29.     }
  30.             public static void novo_jogo(int[][]a){                 //Melhorar o sistema de pontuacao, para multiplicar por -1 com as minas, só conta as minas  .
  31.                     int n,x,y,minas=0;
  32.                     int pontuacao=0;
  33.                     int linhas = a.length;
  34.                     int colunas = a[0].length;
  35.                     int[] vx = new int [colunas];
  36.                     int[] vy = new int [linhas];
  37.                     Scanner sc=new Scanner(System.in);
  38.                     System.out.print("Numero de posicoes a visitar: ");
  39.                     n=sc.nextInt();
  40.                     for(int i=0;i<n;i++){
  41.                             do{
  42.                                     System.out.print("Insira a coordenada x: ");
  43.                                     x=sc.nextInt();
  44.                                    
  45.                             }while(x<0|x>=linhas);
  46.                             do{
  47.                                     System.out.print("Insira a coordenada y: ");
  48.                                     y=sc.nextInt();
  49.                                    
  50.                             }while(y<0|y>=colunas);
  51.                            
  52.                             /* Créditos para João Ricardo Lourenço e João Fernandes */
  53.                             Boolean continueAfter = false;
  54.                             for(int j=0;j<i;j++){
  55.                                 if (vx[j] == x && vy[j] == y){
  56.                                     System.out.print("\nINSIRa OUTRAS COORDENADAS");
  57.                                     i--;
  58.                                     continueAfter = true;
  59.                                    
  60.                                     j = i+1;
  61.                                 }
  62.                             }
  63.                            
  64.                             if (continueAfter)
  65.                                 continue;
  66.                            
  67.                             System.out.print("Ponto a testar ("+x+","+y+")\n");
  68.                             vx[i] = x;
  69.                             vy[i] = y;
  70.                            
  71.                             /* ---------------------------------------------------- */
  72.                             if(a[x][y]==-1){
  73.                                     minas++;
  74.                             }
  75.                             else{
  76.                                     pontuacao+=a[x][y];
  77.                             }
  78.                            
  79.                     }
  80.                     System.out.println("Acertou em "+minas+" minas e obteve "+pontuacao+" pontos !");
  81.             }
  82. /*
  83.     public static int verifica_casa_matriz(int[][]a,int b){
  84.         int linhas = a.length;
  85.         int colunas = a[0].length;
  86.         int c=0;
  87.         for (int i=0; i<linhas; i++){
  88.             for (int j=0; j<colunas; j++){
  89.                 if(a[i][j]==b){
  90.                     c++;
  91.                 }
  92.             }
  93.         }
  94.         return c;
  95.     }
  96. */
  97.     public static int [][]insere_minas(int[][]a){
  98.        
  99.         int i,pos_x,pos_y;
  100.         int linhas = a.length;
  101.         int colunas = a[0].length;
  102.         int numero_minas=(15*(linhas*colunas))/100;
  103.         System.out.println("Numero de minas="+numero_minas);
  104.         Random gerador= new Random();
  105.         for(i=0;i<numero_minas;i++){
  106.             pos_x=gerador.nextInt(linhas);
  107.             pos_y=gerador.nextInt(colunas);
  108.             if (a[pos_x][pos_y]==-1){           //Melhorar por causa de depois da verificação voltar a gerar uma posição com minas.
  109.                 pos_x=gerador.nextInt(linhas);
  110.                 pos_y=gerador.nextInt(colunas);
  111.             }
  112.             (a[pos_x][pos_y])=-1;
  113.            
  114.         }
  115.        
  116.         return a;
  117.     }
  118.     public static int [][]preenche_matriz(int[][]a){
  119.         int linhas = a.length;
  120.         int colunas = a[0].length;
  121.         /*ESTA MERDA PARECE NÃO ESTAR TOTALMENTE FUNCIONAL AINDA*/
  122.         for (int i=0; i<linhas; i++){
  123.             for (int j=0; j<colunas; j++){
  124.                 if(a[i][j]==-1){
  125.                     if((i>=1)&&(a[i-1][j]!=-1)){ // Posição acima
  126.                         a[i-1][j]+=1;
  127.                         if((i+1<linhas)&&(a[i+1][j]!=-1)){ // Posição abaixo
  128.                             a[i+1][j]+=1;
  129.                             if ((j>=1)&&(a[i][j-1]!=-1)){ // Lado -1
  130.                                 a[i][j-1]+=1;
  131.                                 if ((j+1<colunas)&&(a[i][j+1]!=-1)){ // Lado +1
  132.                                     a[i][j+1]+=1;
  133.                                 }
  134.                             }
  135.                         }
  136.                     }
  137.                     /*else if((i+1<linhas)&&(a[i+1][j]!=-1)){ // Posição abaixo
  138.                         a[i+1][j]+=1;
  139.                         System.out.println("AHAHAHA");*/
  140.                 }
  141.                     /*else if ((j>=1)&&(a[i][j-1]!=-1)){ // Lado -1
  142.                         a[i][j-1]+=1;
  143.                         System.out.println("AHAHAHA");
  144.                     }*/
  145.                     /*else if ((j+1<colunas)&&(a[i][j+1]!=-1)){ // Lado +1
  146.                         a[i][j+1]+=1;
  147.                         System.out.println("AHAHAHA");
  148.                     }*/
  149.             }
  150.                 /*else{                     Não incrementa estas posições
  151.                     a[i][j]+=1;
  152.                 } */
  153.         }
  154.        
  155.         return a;
  156.     }
  157.     //Pede uma matriz de tamanho variavel (x,y) e preenche por default todos os valores com 0.
  158.     public static int [][]get_biarray(){
  159.         Scanner scanner = new Scanner(System.in);
  160.         System.out.print("Numero de linhas: ");
  161.         int linhas = scanner.nextInt();
  162.         System.out.print("Numero de colunas: ");
  163.         int colunas = scanner.nextInt();
  164.         int[][] a = new int[linhas][colunas];
  165.         //System.out.println("\n");
  166.         for (int i=0; i<linhas; i++){
  167.             for (int j=0; j<colunas; j++){
  168.                 a[i][j] = 0;  
  169.             }
  170.         }
  171.         return a;
  172.     }
  173.     // Imprimir le matriz .  O -1 das minas como ocupa duas casas tem um comportamento diferente .
  174.     public static void imprime_tabela_bidimensional(int[][] a) {
  175.         int linhas = a.length;
  176.         int colunas = a[0].length;
  177.         System.out.println("______________________________________________"); //Fazer isto de acordo com linhas/colunas
  178.         System.out.println("|********* MINESWEEPER V 0.1 ****************|"); // Optimizado para  Matriz 10*10
  179.         System.out.println("|--------------------------------------------|");
  180.         for (int linha=0; linha<linhas; linha++) {
  181.              System.out.print("|*| ");
  182.            
  183.           for (int coluna=0; coluna<colunas; coluna++) {
  184.             if(a[linha][coluna]==-1){
  185.                 System.out.print(a[linha][coluna]+"| ");
  186.             }
  187.             else{
  188.                 System.out.print(a[linha][coluna]);
  189.                 System.out.print(" | ");
  190.             }
  191.      
  192.           }
  193.           System.out.print("*|");
  194.           System.out.println();
  195.         }
  196.         System.out.println("|--------------------------------------------|");
  197.   }
  198.    
  199. }
Add Comment
Please, Sign In to add comment