Guest User

Untitled

a guest
Jul 18th, 2018
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.66 KB | None | 0 0
  1. package uniandes.cupi2.asaltoBanco.mundo;
  2.  
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.util.Properties;
  6.  
  7. /**
  8. * Clase que representa la Boveda del Banco
  9. * @author Juan
  10. */
  11. public class BovedaBanco
  12. {
  13. // ---------------------------------------------------
  14. // Constantes
  15. // ---------------------------------------------------
  16.  
  17. /**
  18. * Constante que representa el alto del tablero
  19. */
  20. public final static int ALTO = 12;
  21.  
  22. /**
  23. * Constante que representa el ancho del tablero
  24. */
  25. public final static int ANCHO = 12;
  26.  
  27. /**
  28. * Constante para mover al noroeste
  29. */
  30. public final static String NOROESTE = "Noroeste";
  31.  
  32. /**
  33. * Constante para mover al norte
  34. */
  35. public final static String NORTE = "Norte";
  36.  
  37. /**
  38. * Constante para mover al noreste
  39. */
  40. public final static String NORESTE = "Noreste";
  41.  
  42. /**
  43. * Constante para mover al oeste
  44. */
  45. public final static String OESTE = "Oeste";
  46.  
  47. /**
  48. * Constante para mover al este
  49. */
  50. public final static String ESTE = "Este";
  51.  
  52. /**
  53. * Constante para mover al suroeste
  54. */
  55. public final static String SUROESTE = "Suroeste";
  56.  
  57. /**
  58. * Constante para mover al sur
  59. */
  60. public final static String SUR = "Sur";
  61.  
  62. /**
  63. * Constante para mover al sureste
  64. */
  65. public final static String SURESTE = "Sureste";
  66.  
  67. // ---------------------------------------------------
  68. // Atributos
  69. // ---------------------------------------------------
  70.  
  71. /**
  72. * Fila inicial de la posición del ladrón
  73. */
  74. private int filaInicial;
  75.  
  76. /**
  77. * Columna inicial de la posición del ladrón
  78. */
  79. private int colInicial;
  80.  
  81. /**
  82. * Fila de la posición del Ladrón
  83. */
  84. private int filaLadron;
  85.  
  86. /**
  87. * Columna de la posición del Ladrón
  88. */
  89. private int colLadron;
  90.  
  91. /**
  92. * Vidas del ladrón
  93. */
  94. private int vidas;
  95.  
  96. /**
  97. * Tablero de juego
  98. */
  99. private Casilla[][] casillas;
  100.  
  101. // ---------------------------------------------------
  102. // Constructores
  103. // ---------------------------------------------------
  104.  
  105. /**
  106. * Crea una nueva boveda
  107. * @param f Archivo que contiene la localización en el tablero de los elementos del juego
  108. * @throws Exception <li>Si hay problemas cargando el archivo
  109. */
  110. public BovedaBanco( File f ) throws Exception
  111. {
  112. // Inicializa el tablero con todas las casillas vacias
  113. casillas = new Casilla[ALTO][ANCHO];
  114. for( int i = 0; i < ALTO; i++ )
  115. {
  116. for( int j = 0; j < ANCHO; j++ )
  117. {
  118. casillas[ i ][ j ] = new Casilla( );
  119. }
  120. }
  121. try
  122. {
  123. // Inicializa el juego con los datos del archivo
  124. Properties p = cargar( f );
  125. inicializarTablero( p );
  126. vidas = 3;
  127. }
  128. catch( Exception e )
  129. {
  130. throw new Exception( "Error al cargar el archivo" );
  131. }
  132. }
  133.  
  134. /**
  135. * Carga la información del juego con sus alarmas y demás
  136. * @param f Archivo que contiene la descripción del juego
  137. * @return Objeto de la clase Properties con la información del archivo
  138. * @throws Exception <li>Si el formato es inválido
  139. */
  140. private Properties cargar( File f ) throws Exception
  141. {
  142. Properties p = new Properties( );
  143. FileInputStream fs = new FileInputStream( f );
  144. try
  145. {
  146. p.load( fs );
  147. fs.close( );
  148. }
  149. catch( Exception e )
  150. {
  151. throw new Exception( "Formato inválido" );
  152. }
  153. return p;
  154.  
  155. }
  156.  
  157. /**
  158. * Inicializa el tablero con sus elementos
  159. * @param p Contiene la información cargada del archivo
  160. */
  161. private void inicializarTablero( Properties p )
  162. {
  163. // Inicializa la entrada del juego
  164. String strFilaEntrada = p.getProperty( "tablero.entrada.fila" );
  165. String strColEntrada = p.getProperty( "tablero.entrada.col" );
  166. int filaEntrada = Integer.parseInt( strFilaEntrada );
  167. int colEntrada = Integer.parseInt( strColEntrada );
  168. casillas[ filaEntrada ][ colEntrada ].cambiarTipo( Casilla.ENTRADA );
  169.  
  170. // Inicializa la posición del ladrón con respecto a la entrada
  171. filaLadron = filaEntrada;
  172. colLadron = colEntrada;
  173. filaInicial = filaEntrada;
  174. colInicial = colEntrada;
  175.  
  176. // Inicializa la salida del juego
  177. String strFilaSalida = p.getProperty( "tablero.salida.fila" );
  178. String strColSalida = p.getProperty( "tablero.salida.col" );
  179. int filaSalida = Integer.parseInt( strFilaSalida );
  180. int colSalida = Integer.parseInt( strColSalida );
  181. casillas[ filaSalida ][ colSalida ].cambiarTipo( Casilla.SALIDA );
  182.  
  183. // Inicializa las alarmas del juego
  184. String strAlarmas = p.getProperty( "tablero.alarmas" );
  185. int numAlarmas = Integer.parseInt( strAlarmas );
  186. for( int i = 0; i < numAlarmas; i++ )
  187. {
  188. String strFila = p.getProperty( "tablero.alarma" + i + ".fila" );
  189. String strCol = p.getProperty( "tablero.alarma" + i + ".col" );
  190. int fila = Integer.parseInt( strFila );
  191. int col = Integer.parseInt( strCol );
  192. casillas[ fila ][ col ].cambiarTipo( Casilla.ALARMA );
  193. }
  194. }
  195.  
  196. // ---------------------------------------------------
  197. // Métodos
  198. // ---------------------------------------------------
  199.  
  200. /**
  201. * Retorna la fila de la posición del ladrón<br>
  202. * @return La fila de la posición del ladrón
  203. */
  204. public int darFila( )
  205. {
  206. return filaLadron;
  207. }
  208.  
  209. /**
  210. * Retorna la columna de la posición del ladrón
  211. * @return La columna de la posición del ladrón
  212. */
  213. public int darColumna( )
  214. {
  215. return colLadron;
  216. }
  217.  
  218. /**
  219. * Retorna la fila inicial de la posición del ladrón
  220. * @return La fila inicial de la posición del ladrón
  221. */
  222. public int darFilaInicial( )
  223. {
  224. return filaInicial;
  225. }
  226.  
  227. /**
  228. * Retorna la columna inicial de la posición del ladrón
  229. * @return La columna inicial de la posición del ladrón
  230. */
  231. public int darColumnaInicial( )
  232. {
  233. return colInicial;
  234. }
  235. /**
  236. * Retorna las vidas restantes del ladrón
  237. * @return Las vidas restantes del ladrón
  238. */
  239. public int darVidas( )
  240. {
  241. return vidas;
  242. }
  243.  
  244. /**
  245. * Retorna el tablero de juego
  246. * @return El tablero de juego
  247. */
  248. public Casilla[][] darTablero( )
  249. {
  250. return casillas;
  251. }
  252.  
  253. /**
  254. * Retorna el número de alarmas que rodean al ladrón
  255. * @return El número de alarmas que rodean al ladrón
  256. */
  257. public int darAlarmasVecinas( )
  258. {
  259. int contador = 0;
  260.  
  261. for( int i = filaLadron - 1; i <= ( filaLadron + 1 ); i++ )
  262. {
  263. if( i < 0 )
  264. {
  265. break;
  266. }
  267. for( int j = colLadron - 1; j <= ( colLadron + 1 ); j++ )
  268. {
  269. if( j < 0 )
  270. {
  271. break;
  272. }
  273. else if( casillas[ i ][ j ].darTipo( ) == Casilla.ALARMA )
  274. {
  275. contador++;
  276. }
  277. }
  278. }
  279. return contador;
  280. }
  281.  
  282. /**
  283. * Reinicia la posición del ladrón a su posición inicial<br>
  284. * <b>post:</b> La posición del ladrón ha sido reiniciada
  285. */
  286. public void reiniciarPosicion( )
  287. {
  288. filaLadron = filaInicial;
  289. colLadron = colInicial;
  290. }
  291.  
  292. /**
  293. * Método que indica si el ladrón puede moverse en la dirección que se da como parametro<br>
  294. * <b>pre:</b> Se ha designado una de las direcciones posibles ya establecidas para mover al ladrón<br>
  295. * <b>post:</b> Se sabe si el movimiento del ladrón en la dirección dada es posible o no
  296. * @param dir Dirección la que se quiere que se mueva el ladrón
  297. * @return <li><b>true</b> si el ladrón puede moverse en la dirección dada cómo parametro <li><b>false</b> si el ladrón no puede moverse en la dirección dada cómo
  298. * parametro
  299. */
  300. public boolean podriaMoverse( String dir )
  301. {
  302. boolean resp = true;
  303.  
  304. if( dir == NOROESTE )
  305. {
  306. if( colLadron-- < 0 || filaLadron-- < 0 )
  307. {
  308. resp = false;
  309. }
  310. }
  311. else if( dir == NORTE )
  312. {
  313. if( filaLadron-- < 0 )
  314. {
  315. resp = false;
  316. }
  317. }
  318. else if( dir == NORESTE )
  319. {
  320. if( colLadron++ > 12 || filaLadron-- < 0 )
  321. {
  322. resp = false;
  323. }
  324. }
  325. else if( dir == ESTE )
  326. {
  327. if( colLadron < 0 )
  328. {
  329. resp = false;
  330. }
  331. }
  332. else if( dir == OESTE )
  333. {
  334. if( colLadron++ > 12 )
  335. {
  336. resp = false;
  337. }
  338. }
  339. else if( dir == SUROESTE )
  340. {
  341. if( colLadron-- < 0 || filaLadron++ > 12 )
  342. {
  343. resp = false;
  344. }
  345. }
  346. else if( dir == SUR )
  347. {
  348. if( filaLadron++ > 12 )
  349. {
  350. resp = false;
  351. }
  352. }
  353. else if( dir == SURESTE )
  354. {
  355. if( colLadron++ > 12 || filaLadron++ > 12 )
  356. {
  357. resp = false;
  358. }
  359. }
  360.  
  361. return resp;
  362. }
  363.  
  364. /**
  365. * Método que mueve al ladrón en la dirección dada cómo parametro<br>
  366. * <b>pre:</b> El ladrón se encuentra en algún lugar de la matriz<br>
  367. * <b>post:</b> El ladrón se ha movido
  368. * @param dir Dirección en la que se quiere mover al ladrón
  369. * @throws Exception <li>Si el ladrón no se puede mover en la dirección especificada
  370. */
  371. public void moverLadron( String dir ) throws Exception
  372. {
  373. boolean movPosible = podriaMoverse( dir );
  374.  
  375. if( movPosible == false )
  376. {
  377. throw new Exception( "El ladrón no puede moverse en esa dirección debido al tamaño del campo de juego" );
  378. }
  379. else
  380. {
  381. System.out.println("col:"+ colLadron +", fila:" +filaLadron);
  382. if( dir.equals( NOROESTE ) )
  383. {
  384. colLadron = colLadron--;
  385. filaLadron = filaLadron--;
  386. }
  387. else if( dir.equals( NORTE ) )
  388. {
  389. filaLadron = filaLadron--;
  390. }
  391. else if( dir.equals( NORESTE ) )
  392. {
  393. colLadron = colLadron++;
  394. filaLadron = filaLadron--;
  395. }
  396. else if( dir.equals( OESTE ) )
  397. {
  398. System.out.println( colLadron );
  399. colLadron = colLadron - 1;
  400. System.out.println( colLadron );
  401. }
  402. else if( dir.equals( ESTE ) )
  403. {
  404. colLadron = colLadron + 1;
  405. }
  406. else if( dir.equals( SUROESTE ) )
  407. {
  408. colLadron = colLadron--;
  409. filaLadron = filaLadron++;
  410. }
  411. else if( dir.equals( SUR ) )
  412. {
  413. filaLadron = filaLadron--;
  414. }
  415. else if( dir.equals( SURESTE ) )
  416. {
  417. colLadron = colLadron++;
  418. filaLadron = filaLadron++;
  419. }
  420. }
  421. System.out.println("col:"+ colLadron +", fila:" +filaLadron);
  422. }
  423.  
  424. /**
  425. * Método que resta una vida al ladrón cuando este es atrapado<br>
  426. * <b>post:</b> Una vida ha sido restada
  427. * @throws Exception <li>Si el ladrón no tiene más vidas
  428. */
  429. public void restarVidas( ) throws Exception
  430. {
  431. vidas--;
  432.  
  433. if( vidas == 0 )
  434. {
  435. throw new Exception( "¡Usted no tiene más vidas! \n" + "¡USTED HA PERDIDO!" );
  436. }
  437. }
  438. // ---------------------------------------------------
  439. // Puntos de extensión
  440. // ---------------------------------------------------
  441.  
  442. /**
  443. * Método de extensión 1
  444. * @return Respuesta 1
  445. */
  446. public String metodo1( )
  447. {
  448. return "Respuesta 1";
  449. }
  450.  
  451. /**
  452. * Método de extensión 2
  453. * @return Respuesta 2
  454. */
  455. public String metodo2( )
  456. {
  457. return "Respuesta 2";
  458. }
  459. }
Add Comment
Please, Sign In to add comment