Advertisement
Guest User

Untitled

a guest
May 24th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.07 KB | None | 0 0
  1. package uniandes.cupi2.criaturasMagicas.interfaz;
  2.  
  3. import java.awt.BorderLayout;
  4. import java.awt.Color;
  5. import java.awt.Image;
  6. import java.io.File;
  7. import java.io.IOException;
  8.  
  9. import javax.swing.Icon;
  10. import javax.swing.ImageIcon;
  11. import javax.swing.JFileChooser;
  12. import javax.swing.JFrame;
  13. import javax.swing.JOptionPane;
  14. import javax.swing.JPanel;
  15. import javax.swing.UIManager;
  16.  
  17. import uniandes.cupi2.criaturasMagicas.mundo.Casilla.Contenido;
  18. import uniandes.cupi2.criaturasMagicas.mundo.Casilla.Tipo;
  19. import uniandes.cupi2.criaturasMagicas.mundo.Criatura;
  20. import uniandes.cupi2.criaturasMagicas.mundo.CriaturasMagicas;
  21.  
  22. public class InterfazCriaturasMagicas extends JFrame
  23. {
  24. /**
  25. *
  26. */
  27. private static final long serialVersionUID = 1L;
  28.  
  29. private CriaturasMagicas mundo;
  30. private PanelInformacionDelJuego panelInfo;
  31. private PanelMapa panelMapa;
  32. private PanelEnciclopedia panelEnciclopedia;
  33. private PanelOpciones panelOpciones;
  34. private PanelConsultas panelConsultas;
  35.  
  36. public InterfazCriaturasMagicas()
  37. {
  38. setSize(780, 750);
  39. setTitle("Criaturas Magicas");
  40. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  41. getContentPane().setBackground(new Color(48, 41, 84));
  42. setLayout(new BorderLayout());
  43. setResizable(false);
  44.  
  45. panelInfo = new PanelInformacionDelJuego(this);
  46. add(panelInfo, BorderLayout.NORTH);
  47.  
  48. JPanel panelCentro = new JPanel();
  49. panelCentro.setLayout(new BorderLayout());
  50. panelCentro.setOpaque(false);
  51. add(panelCentro, BorderLayout.CENTER);
  52.  
  53. panelMapa = new PanelMapa(this);
  54. panelCentro.add(panelMapa, BorderLayout.CENTER);
  55.  
  56. panelEnciclopedia = new PanelEnciclopedia(this);
  57. panelCentro.add(panelEnciclopedia, BorderLayout.EAST);
  58.  
  59. JPanel panelInferior = new JPanel();
  60. panelInferior.setLayout(new BorderLayout());
  61. add(panelInferior, BorderLayout.SOUTH);
  62.  
  63. panelConsultas = new PanelConsultas(this);
  64. panelInferior.add(panelConsultas, BorderLayout.NORTH);
  65.  
  66. panelOpciones = new PanelOpciones(this);
  67. panelInferior.add(panelOpciones, BorderLayout.SOUTH);
  68.  
  69. try
  70. {
  71. mundo = new CriaturasMagicas();
  72. panelEnciclopedia.inicializar();
  73.  
  74. }catch (Exception e)
  75. {
  76. JOptionPane.showMessageDialog(this, e.getMessage(), "No se puede cargar el mundo",
  77. JOptionPane.ERROR_MESSAGE);
  78. }
  79. }
  80.  
  81. public static void main(String[] args)
  82. {
  83. try
  84. {
  85. // Unifica la interfaz para Mac y para Windows.
  86. UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
  87. InterfazCriaturasMagicas interfaz = new InterfazCriaturasMagicas();
  88. interfaz.setVisible(true);
  89. }catch (Exception e)
  90. {
  91. e.printStackTrace();
  92. }
  93. }
  94.  
  95. public void metodo1()
  96. {
  97. String rta = mundo.metodo1();
  98. JOptionPane.showMessageDialog(this, rta, "Opcion1", JOptionPane.INFORMATION_MESSAGE);
  99. }
  100.  
  101. public void metodo2()
  102. {
  103. String rta = mundo.metodo2();
  104. JOptionPane.showMessageDialog(this, rta, "Opcion2", JOptionPane.INFORMATION_MESSAGE);
  105.  
  106. }
  107.  
  108. public CriaturasMagicas darMundo()
  109. {
  110. return mundo;
  111. }
  112.  
  113. public void darAnterior()
  114. {
  115. try
  116. {
  117. mundo.darAnterior();
  118. panelEnciclopedia.actualizar();
  119. }
  120.  
  121. catch (Exception e)
  122. {
  123. JOptionPane.showMessageDialog(null, "Ya esta en la primera criatura");
  124. }
  125. }
  126.  
  127. public void darSiguiente()
  128. {
  129. try
  130. {
  131. mundo.darSiguiente();
  132. panelEnciclopedia.actualizar();
  133. }catch (Exception e)
  134. {
  135. JOptionPane.showMessageDialog(null, " Ya esta la ultima criatura. ");
  136. }
  137. }
  138.  
  139. public void cargarMapaDeLaCriatura()
  140. {
  141. panelMapa.cargar();
  142. panelEnciclopedia.actualizar();
  143. panelConsultas.Activar();
  144. panelInfo.actualizarCargar();
  145. }
  146.  
  147. public void darCriaturasPorFila()
  148. {
  149.  
  150. try
  151.  
  152. {
  153. String mensaje = JOptionPane.showInputDialog(this, "Ingrese la fila:");
  154. int a = mundo.darCantidadCriaturasPorFila(Integer.parseInt(mensaje) - 1);
  155. JOptionPane.showMessageDialog(null, "En la fila indicada hay " + a + " criaturas");
  156. }
  157.  
  158. catch (Exception e)
  159.  
  160. {
  161. if(e.getMessage() != null || e.getMessage() != "")
  162. {
  163. JOptionPane.showMessageDialog(null, "El numero indicado no es valido.");
  164. darCriaturasPorFila();
  165. }
  166. }
  167.  
  168. }
  169.  
  170. public void darCriaturasPorColumna()
  171. {
  172.  
  173. try
  174. {
  175. String mensaje = JOptionPane.showInputDialog(this, "Ingrese la columna:");
  176. int cantidad = mundo.darCantidadCriaturasPorColumna(Integer.parseInt(mensaje) - 1);
  177. JOptionPane.showMessageDialog(null, "En la columna indicada hay " + cantidad + " criaturas.");
  178. }catch (Exception e)
  179. {
  180. JOptionPane.showMessageDialog(null, "El numero de columna indicado no es valido.");
  181. darCriaturasPorColumna();
  182. }
  183. }
  184.  
  185. public void darCriaturaMayorPuntaje()
  186. {
  187. Criatura mayorPuntaje = mundo.darCriaturaMayorPuntaje();
  188. JOptionPane.showMessageDialog(this, "La criatura con mayor puntaje es " + mayorPuntaje.darNombre());
  189. }
  190.  
  191. public void darPuntajePorCuadrante()
  192. {
  193.  
  194. try
  195. {
  196. String mensaje = JOptionPane.showInputDialog(this, "Ingrese el cuadrante:");
  197.  
  198. if(Integer.parseInt(mensaje) < 1 || Integer.parseInt(mensaje) > 4)
  199. {
  200. JOptionPane.showMessageDialog(null, "El numero de cuadrante debe estar entre 1 y 4.");
  201. darPuntajePorCuadrante();
  202. }
  203.  
  204. else
  205. {
  206. int cantidad = mundo.calcularPuntajePorCuadrante(Integer.parseInt(mensaje));
  207. JOptionPane.showMessageDialog(null, "En el cuadrante indicado el puntaje es " + cantidad);
  208. }
  209. }catch (Exception e)
  210. {
  211. JOptionPane.showMessageDialog(null, "El numero de cuadrante indicado no es valido.");
  212.  
  213. }
  214. }
  215.  
  216. public void cargar() throws IOException
  217. {
  218. JFileChooser loader = new JFileChooser("./data");
  219. loader.setDialogTitle("Escoja el archivo del mapa");
  220. int resultado = loader.showOpenDialog(this);
  221. File archivoCriaturasMagicas = null;
  222.  
  223. if(resultado == JFileChooser.APPROVE_OPTION)
  224. {
  225. archivoCriaturasMagicas = loader.getSelectedFile();
  226. try
  227. {
  228. mundo.inicializarMatriz(archivoCriaturasMagicas);
  229. if(panelMapa.estaCargado() == false)
  230. panelMapa.cargar();
  231. actualizar();
  232. actualizarJuego();
  233. panelConsultas.Activar();
  234. }catch (Exception e)
  235. {
  236. JOptionPane.showMessageDialog(this, "Error al cargar el mapa");
  237. }
  238. }
  239.  
  240. }
  241.  
  242. public void actualizar()
  243. {
  244. panelMapa.actualizar(mundo.darMatriz());
  245. }
  246.  
  247. public void actualizarJuego()
  248. {
  249. panelInfo.actualizarCargar();
  250. }
  251.  
  252. public void reiniciar()
  253. {
  254. if(panelMapa.estaCargado() == true)
  255. {
  256. panelMapa.reiniciar();
  257. panelMapa.estaCargado();
  258. panelInfo.reiniciar();
  259. mundo.reiniciar();
  260. panelConsultas.Activar();
  261. for (int i = 0; i < PanelMapa.FIL; i++)
  262. {
  263. for (int j = 0; j < PanelMapa.COL; j++)
  264. {
  265. mundo.darCasilla(i, j).cambiarEstado(Tipo.SIN_VISITAR);
  266. }
  267. }
  268.  
  269. }else
  270. JOptionPane.showMessageDialog(this, "No se puede reiniciar ya que no esta cargado.");
  271. }
  272.  
  273. public void visitarCasilla(int fila, int columna)
  274. {
  275.  
  276. if(mundo.darCasilla(fila, columna).darEstado() == Tipo.VISITADA)
  277. {
  278. JOptionPane.showMessageDialog(this, "La casilla ya fue visitada ", "Cuidado", JOptionPane.ERROR_MESSAGE);
  279. }
  280. if(mundo.darMovimientosRestantes() <= 0)
  281. {
  282. JOptionPane.showMessageDialog(this, "Te has quedado sin movimientos, has perdido.", "Perdio",
  283. JOptionPane.ERROR_MESSAGE);
  284. panelMapa.deshabilitar();
  285. panelConsultas.reiniciar();
  286. }
  287. if(mundo.darPuntaje() >= 5000)
  288. {
  289. JOptionPane.showMessageDialog(this, "Felicitaciones, has ganado!", "Gano", JOptionPane.INFORMATION_MESSAGE);
  290. panelMapa.deshabilitar();
  291. panelConsultas.reiniciar();
  292. }
  293. if(mundo.darPuntaje() <= -3000)
  294. {
  295. JOptionPane.showMessageDialog(this, "El puntaje minimo es -3000, ha perdido.", "Perdio",
  296. JOptionPane.ERROR_MESSAGE);
  297. panelMapa.deshabilitar();
  298. panelConsultas.reiniciar();
  299. }else
  300. {
  301. if(mundo.darCasilla(fila, columna).darContenido() == Contenido.CRIATURA)
  302. {
  303. panelMapa.visitarCriatura(fila, columna, mundo.darCasilla(fila, columna).darImagenCriatura());
  304. mundo.darCasilla(fila, columna).cambiarEstado(Tipo.VISITADA);
  305. try
  306. {
  307. Icon icon = new ImageIcon(
  308. new ImageIcon(mundo.darCasilla(fila, columna).darCriatura().darRutaImagen()).getImage()
  309. .getScaledInstance(150, 150, Image.SCALE_DEFAULT));
  310. mundo.visitarCasillaCriatura(mundo.darCasilla(fila, columna).darCriatura());
  311. JOptionPane.showMessageDialog(this,
  312. "Ha encontrado 1 " + mundo.darCasilla(fila, columna).darCriatura().darNombre(),
  313. "Encontrado", JOptionPane.INFORMATION_MESSAGE, icon);
  314. }catch (Exception e)
  315. {
  316. if(e.getMessage() == "Gano")
  317. {
  318. JOptionPane.showMessageDialog(this, "Has ganado, felicitaciones!", "Gano",
  319. JOptionPane.INFORMATION_MESSAGE);
  320. panelMapa.deshabilitar();
  321. panelConsultas.reiniciar();
  322. }else
  323. {
  324. JOptionPane.showMessageDialog(this, "Has perdido", "Perdio", JOptionPane.INFORMATION_MESSAGE);
  325. panelMapa.deshabilitar();
  326. panelConsultas.reiniciar();
  327. }
  328. }
  329. actualizarJuego();
  330. }
  331.  
  332. else
  333. {
  334. panelMapa.visitar(fila, columna);
  335. mundo.darCasilla(fila, columna).cambiarEstado(Tipo.VISITADA);
  336. try
  337. {
  338. mundo.visitarCasillaVacia();
  339. }catch (Exception e)
  340. {
  341. JOptionPane.showMessageDialog(this, "Te has quedado sin movimientos, has perdido.", "Perdio",
  342. JOptionPane.ERROR_MESSAGE);
  343. panelMapa.deshabilitar();
  344. panelConsultas.reiniciar();
  345.  
  346. }
  347. actualizarJuego();
  348. }
  349.  
  350. int criaturasLuz = 0;
  351.  
  352. for(int i = -1; i < 2; i++)
  353. {
  354. for(int j = -1; j < 2; j++)
  355. {
  356. if(fila + i < 0 || fila + i > mundo.darMatriz().length || columna + j < 0 || columna + j > mundo.darMatriz()[0].length)
  357. continue;
  358.  
  359. if(i != 0 || j != 0)
  360. {
  361. if(mundo.darCasilla(fila+i, columna+j).darContenido() == Contenido.CRIATURA)
  362. {
  363. if(mundo.darCasilla(fila+i, columna+j).darCriatura().esSerDeLuz())
  364. {
  365. criaturasLuz++;
  366. }
  367. }
  368. }
  369. }
  370. }
  371.  
  372. JOptionPane.showMessageDialog(this, "There are " + criaturasLuz + " creatures of light around the current square (" + fila + ", " + columna + ").", "Creatures around", JOptionPane.INFORMATION_MESSAGE);
  373. }
  374. }
  375. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement