Juego Batalla Naval (Básico)
El código siguiente muestra una demostración de array multidimensionales, la clase Juego es la que tiene toda la lógica del programa, tiene un atributo llamado tablero de tipo array de texto con 10 filas y 10 columnas, el método Init inicializa cada una de las filas del array mientras que el método getView muestra como recorrer un array multidimensional por medio de sentencias for anidadas.
El programa crea un pequeño tablero del juego batalla naval, por ser un demo y para ver la funcionalidad se muestran en pantalla los "Barcos" del enemigo como H (En un juego real los barcos enemigos no deberían mostrarse) y los impactos como X
El programa crea un pequeño tablero del juego batalla naval, por ser un demo y para ver la funcionalidad se muestran en pantalla los "Barcos" del enemigo como H (En un juego real los barcos enemigos no deberían mostrarse) y los impactos como X
1 package bi; 2 3 import java.util.Arrays; 4 5 /** 6 * 7 * @author Wilson Lancheros Lopez 8 */ 9 class Juego { 10 11 private final String[][] tablero = new String[10][10]; 12 private final int[] JugadaActual = {-1, -1}; 13 private final int Level = 0; 14 private String msg; 15 private short disparos = 3; 16 private int inpactos = 0; 17 private int aux_inpactos = 0; 18 19 public Juego() { 20 Init(); 21 } 22 23 private void Init() { 24 for (int i = 0; i < tablero.length; i++) { 25 Arrays.fill(tablero[i], "."); 26 } 27 Levels(); 28 } 29 30 private void Levels() { 31 switch (Level) { 32 case 0: 33 tablero[1][3] = "H"; 34 tablero[2][3] = "H"; 35 tablero[3][3] = "H"; 36 37 tablero[6][4] = "H"; 38 tablero[7][3] = "H"; 39 tablero[8][2] = "H"; 40 tablero[9][1] = "H"; 41 42 tablero[8][7] = "H"; 43 tablero[8][8] = "H"; 44 inpactos = 9; 45 break; 46 case 1: 47 break; 48 default: 49 } 50 } 51 52 public boolean GameOver() { 53 if(aux_inpactos == inpactos ){ 54 //Level(); 55 Init(); 56 aux_inpactos = 0; 57 } 58 boolean rt = (disparos > 0); 59 if (!rt) { 60 msg = "Fin del Juego"; 61 } 62 return rt; 63 } 64 65 public String getView() { 66 String sTablero = "--"; 67 for (int r = 0; r < tablero.length; r++) { 68 sTablero += r + "-"; 69 } 70 for (int s = 0; s < tablero.length; s++) { 71 sTablero += "\n" + s + "|"; 72 for (String arg : tablero[s]) { 73 sTablero += arg + " "; 74 } 75 } 76 return sTablero; 77 } 78 79 String getMensaje() { 80 return msg; 81 } 82 83 public String Fuego(String jugada) { 84 if (ValidaJugada(jugada)) { 85 int x = JugadaActual[0]; 86 int y = JugadaActual[1]; 87 if (tablero[x][y].equals("H")) { 88 tablero[x][y] = "X"; 89 aux_inpactos++; 90 } else { 91 tablero[x][y] = "O"; 92 disparos--; 93 } 94 } 95 return "Disparos " + disparos + "\n" + msg; 96 } 97 98 private boolean ValidaJugada(String jugada) { 99 try { 100 msg = ""; 101 if (jugada.length() >= 3) { 102 JugadaActual[0] = -1; 103 JugadaActual[1] = -1; 104 String[] arrayJugada = jugada.split(","); 105 if (arrayJugada.length == 2) { 106 JugadaActual[0] = Integer.parseInt(arrayJugada[0]); 107 JugadaActual[1] = Integer.parseInt(arrayJugada[1]); 108 if (JugadaActual[0] < tablero.length && JugadaActual[1] < tablero[0].length) { 109 disparos++; 110 return true; 111 } 112 } 113 } 114 msg = "Jugada Invalida"; 115 disparos--; 116 return false; 117 } catch (Exception e) { 118 msg = "Jugada Invalida"; 119 disparos--; 120 return false; 121 } 122 } 123 } 124
1 package bi; 2 3 import java.util.Scanner; 4 5 /** 6 * 7 * @author Wilson Lancheros Lopez 8 */ 9 public class Bi { 10 11 public static void main(String[] args) { 12 Juego j = new Juego(); 13 14 Scanner sc = new Scanner(System.in); 15 String jugada = ""; 16 String mensaje; 17 18 while (j.GameOver()) { 19 Paint(j.getView()); 20 jugada = sc.next(); 21 mensaje = j.Fuego(jugada); 22 Paint(mensaje); 23 } 24 Paint(j.getMensaje()); 25 } 26 27 private static void Paint(String view) { 28 System.out.println(view); 29 } 30 } 31