/TP1_2048/src/UI/ventanaJuego.java

https://gitlab.com/vitalimatias/prog3_tp1_2048 · Java · 306 lines · 253 code · 44 blank · 9 comment · 6 complexity · 0fdb9706bda841468e97faa8af936fdb MD5 · raw file

  1. package UI;
  2. import java.awt.EventQueue;
  3. import javax.swing.JFrame;
  4. import javax.swing.JOptionPane;
  5. import javax.swing.JTextPane;
  6. import java.awt.Font;
  7. import javax.swing.JButton;
  8. import javax.swing.JDialog;
  9. import java.awt.Color;
  10. import javax.swing.UIManager;
  11. import Clases.ManejoMatriz;
  12. import Clases.MatrizCuadricula;
  13. import java.awt.SystemColor;
  14. import java.awt.event.MouseAdapter;
  15. import java.awt.event.MouseEvent;
  16. import java.security.Key;
  17. import javax.swing.JTextField;
  18. import java.awt.event.KeyAdapter;
  19. import java.awt.event.KeyEvent;
  20. import java.awt.event.KeyListener;
  21. public class ventanaJuego {
  22. private JFrame frame;
  23. private JTextPane[][] matrizTextPane;
  24. private ManejoMatriz matrizCuadriculas;
  25. private JTextPane infoJugador;
  26. private JTextPane infoPuntaje;
  27. /**
  28. * Launch the application.
  29. */
  30. public static void main(String[] args) {
  31. EventQueue.invokeLater(new Runnable() {
  32. public void run() {
  33. try {
  34. ventanaJuego window = new ventanaJuego();
  35. window.frame.setVisible(true);
  36. } catch (Exception e) {
  37. e.printStackTrace();
  38. }
  39. }
  40. });
  41. }
  42. /**
  43. * Create the application.
  44. */
  45. public ventanaJuego() {
  46. initialize();
  47. }
  48. /**
  49. * Initialize the contents of the frame.
  50. */
  51. private void initialize() {
  52. frame = new JFrame();
  53. frame.getContentPane().addKeyListener(new KeyAdapter() {
  54. @Override
  55. public void keyPressed(KeyEvent key) {
  56. if (key.getKeyCode() == key.VK_8) {
  57. matrizCuadriculas.moverArriba();
  58. refrescarVentana();
  59. }
  60. }
  61. });
  62. frame.getContentPane().setBackground(new Color(0, 255, 153));
  63. frame.setBounds(100, 100, 450, 300);
  64. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  65. frame.getContentPane().setLayout(null);
  66. JTextPane textPane = new JTextPane();
  67. textPane.setBackground(UIManager.getColor("Button.light"));
  68. textPane.setFont(new Font("Impact", Font.PLAIN, 22));
  69. textPane.setEditable(false);
  70. textPane.setText("2048");
  71. textPane.setBounds(187, 11, 57, 34);
  72. frame.getContentPane().add(textPane);
  73. JTextPane cuadricula00 = new JTextPane();
  74. cuadricula00.setFont(new Font("Impact", Font.PLAIN, 28));
  75. cuadricula00.setEditable(false);
  76. cuadricula00.setBounds(27, 55, 40, 40);
  77. frame.getContentPane().add(cuadricula00);
  78. JTextPane cuadricula01 = new JTextPane();
  79. cuadricula01.setFont(new Font("Impact", Font.PLAIN, 28));
  80. cuadricula01.setEditable(false);
  81. cuadricula01.setBounds(77, 55, 40, 40);
  82. frame.getContentPane().add(cuadricula01);
  83. JTextPane cuadricula02 = new JTextPane();
  84. cuadricula02.setFont(new Font("Impact", Font.PLAIN, 28));
  85. cuadricula02.setEditable(false);
  86. cuadricula02.setBounds(127, 55, 40, 40);
  87. frame.getContentPane().add(cuadricula02);
  88. JTextPane cuadricula03 = new JTextPane();
  89. cuadricula03.setFont(new Font("Impact", Font.PLAIN, 28));
  90. cuadricula03.setEditable(false);
  91. cuadricula03.setBounds(177, 56, 40, 40);
  92. frame.getContentPane().add(cuadricula03);
  93. JTextPane cuadricula10 = new JTextPane();
  94. cuadricula10.setFont(new Font("Impact", Font.PLAIN, 28));
  95. cuadricula10.setEditable(false);
  96. cuadricula10.setBounds(27, 106, 40, 40);
  97. frame.getContentPane().add(cuadricula10);
  98. JTextPane cuadricula11 = new JTextPane();
  99. cuadricula11.setFont(new Font("Impact", Font.PLAIN, 28));
  100. cuadricula11.setEditable(false);
  101. cuadricula11.setBounds(77, 106, 40, 40);
  102. frame.getContentPane().add(cuadricula11);
  103. JTextPane cuadricula12 = new JTextPane();
  104. cuadricula12.setFont(new Font("Impact", Font.PLAIN, 28));
  105. cuadricula12.setEditable(false);
  106. cuadricula12.setBounds(127, 106, 40, 40);
  107. frame.getContentPane().add(cuadricula12);
  108. JTextPane cuadricula13 = new JTextPane();
  109. cuadricula13.setFont(new Font("Impact", Font.PLAIN, 28));
  110. cuadricula13.setEditable(false);
  111. cuadricula13.setBounds(177, 107, 40, 40);
  112. frame.getContentPane().add(cuadricula13);
  113. JTextPane cuadricula20 = new JTextPane();
  114. cuadricula20.setFont(new Font("Impact", Font.PLAIN, 28));
  115. cuadricula20.setEditable(false);
  116. cuadricula20.setBounds(27, 157, 40, 40);
  117. frame.getContentPane().add(cuadricula20);
  118. JTextPane cuadricula21 = new JTextPane();
  119. cuadricula21.setFont(new Font("Impact", Font.PLAIN, 28));
  120. cuadricula21.setEditable(false);
  121. cuadricula21.setBounds(77, 157, 40, 40);
  122. frame.getContentPane().add(cuadricula21);
  123. JTextPane cuadricula22 = new JTextPane();
  124. cuadricula22.setFont(new Font("Impact", Font.PLAIN, 28));
  125. cuadricula22.setEditable(false);
  126. cuadricula22.setBounds(127, 157, 40, 40);
  127. frame.getContentPane().add(cuadricula22);
  128. JTextPane cuadricula23 = new JTextPane();
  129. cuadricula23.setFont(new Font("Impact", Font.PLAIN, 28));
  130. cuadricula23.setEditable(false);
  131. cuadricula23.setBounds(177, 158, 40, 40);
  132. frame.getContentPane().add(cuadricula23);
  133. JTextPane cuadricula30 = new JTextPane();
  134. cuadricula30.setFont(new Font("Impact", Font.PLAIN, 28));
  135. cuadricula30.setEditable(false);
  136. cuadricula30.setBounds(27, 208, 40, 40);
  137. frame.getContentPane().add(cuadricula30);
  138. JTextPane cuadricula31 = new JTextPane();
  139. cuadricula31.setFont(new Font("Impact", Font.PLAIN, 28));
  140. cuadricula31.setEditable(false);
  141. cuadricula31.setBounds(77, 208, 40, 40);
  142. frame.getContentPane().add(cuadricula31);
  143. JTextPane cuadricula32 = new JTextPane();
  144. cuadricula32.setFont(new Font("Impact", Font.PLAIN, 28));
  145. cuadricula32.setEditable(false);
  146. cuadricula32.setBounds(127, 208, 40, 40);
  147. frame.getContentPane().add(cuadricula32);
  148. JTextPane cuadricula33 = new JTextPane();
  149. cuadricula33.setFont(new Font("Impact", Font.PLAIN, 28));
  150. cuadricula33.setEditable(false);
  151. cuadricula33.setBounds(177, 209, 40, 40);
  152. frame.getContentPane().add(cuadricula33);
  153. matrizTextPane = new JTextPane[4][4];
  154. matrizTextPane[0][0] = cuadricula00;
  155. matrizTextPane[0][1] = cuadricula01;
  156. matrizTextPane[0][2] = cuadricula02;
  157. matrizTextPane[0][3] = cuadricula03;
  158. matrizTextPane[1][0] = cuadricula10;
  159. matrizTextPane[1][1] = cuadricula11;
  160. matrizTextPane[1][2] = cuadricula12;
  161. matrizTextPane[1][3] = cuadricula13;
  162. matrizTextPane[2][0] = cuadricula20;
  163. matrizTextPane[2][1] = cuadricula21;
  164. matrizTextPane[2][2] = cuadricula22;
  165. matrizTextPane[2][3] = cuadricula23;
  166. matrizTextPane[3][0] = cuadricula30;
  167. matrizTextPane[3][1] = cuadricula31;
  168. matrizTextPane[3][2] = cuadricula32;
  169. matrizTextPane[3][3] = cuadricula33;
  170. matrizCuadriculas = new ManejoMatriz(4, 4);
  171. matrizCuadriculas.agregarCuadriculaRandom();
  172. matrizCuadriculas.agregarCuadriculaRandom();
  173. JTextPane txtpnJugador = new JTextPane();
  174. txtpnJugador.setFont(new Font("Tahoma", Font.BOLD, 14));
  175. txtpnJugador.setBackground(new Color(0, 255, 153));
  176. txtpnJugador.setEditable(false);
  177. txtpnJugador.setText("Jugador");
  178. txtpnJugador.setBounds(325, 55, 70, 20);
  179. frame.getContentPane().add(txtpnJugador);
  180. JTextPane txtpnPuntaje = new JTextPane();
  181. txtpnPuntaje.setFont(new Font("Tahoma", Font.BOLD, 14));
  182. txtpnPuntaje.setBackground(new Color(0, 255, 153));
  183. txtpnPuntaje.setEditable(false);
  184. txtpnPuntaje.setText("Puntaje");
  185. txtpnPuntaje.setBounds(325, 106, 70, 20);
  186. frame.getContentPane().add(txtpnPuntaje);
  187. infoJugador = new JTextPane();
  188. infoJugador.setFont(new Font("Tahoma", Font.BOLD, 14));
  189. infoJugador.setEditable(false);
  190. infoJugador.setBounds(293, 76, 130, 23);
  191. frame.getContentPane().add(infoJugador);
  192. infoPuntaje = new JTextPane();
  193. infoPuntaje.setFont(new Font("Impact", Font.PLAIN, 28));
  194. infoPuntaje.setEditable(false);
  195. infoPuntaje.setBounds(293, 126, 130, 40);
  196. frame.getContentPane().add(infoPuntaje);
  197. JButton btnArriba = new JButton("\u2191");
  198. btnArriba.setFont(new Font("Tahoma", Font.BOLD, 14));
  199. btnArriba.addMouseListener(new MouseAdapter() {
  200. @Override
  201. public void mouseClicked(MouseEvent arg0) {
  202. matrizCuadriculas.moverArriba();
  203. matrizCuadriculas.agregarCuadriculaRandom();
  204. refrescarVentana();
  205. }
  206. });
  207. btnArriba.setBackground(UIManager.getColor("Button.darkShadow"));
  208. btnArriba.setBounds(307, 191, 53, 23);
  209. frame.getContentPane().add(btnArriba);
  210. JButton btnAbajo = new JButton("\u2193");
  211. btnAbajo.addMouseListener(new MouseAdapter() {
  212. @Override
  213. public void mouseClicked(MouseEvent arg0) {
  214. matrizCuadriculas.moverAbajo();
  215. matrizCuadriculas.agregarCuadriculaRandom();
  216. refrescarVentana();
  217. }
  218. });
  219. btnAbajo.setBackground(UIManager.getColor("Button.darkShadow"));
  220. btnAbajo.setBounds(307, 225, 53, 23);
  221. frame.getContentPane().add(btnAbajo);
  222. JButton btnIzquieda = new JButton("\u2190");
  223. btnIzquieda.addMouseListener(new MouseAdapter() {
  224. @Override
  225. public void mouseClicked(MouseEvent e) {
  226. matrizCuadriculas.moverIzquierda();
  227. matrizCuadriculas.agregarCuadriculaRandom();
  228. refrescarVentana();
  229. }
  230. });
  231. btnIzquieda.setBackground(UIManager.getColor("Button.darkShadow"));
  232. btnIzquieda.setBounds(244, 225, 53, 23);
  233. frame.getContentPane().add(btnIzquieda);
  234. JButton btnDerecha = new JButton("\u2192");
  235. btnDerecha.addMouseListener(new MouseAdapter() {
  236. @Override
  237. public void mouseClicked(MouseEvent e) {
  238. matrizCuadriculas.moverDerecha();
  239. matrizCuadriculas.agregarCuadriculaRandom();
  240. refrescarVentana();
  241. }
  242. });
  243. btnDerecha.setBackground(UIManager.getColor("Button.darkShadow"));
  244. btnDerecha.setBounds(371, 225, 53, 23);
  245. frame.getContentPane().add(btnDerecha);
  246. refrescarVentana();
  247. }
  248. private void refrescarVentana() {
  249. String aux = "";
  250. for (int f = 0; f < 4; f++) {
  251. for (int c = 0; c < 4; c++) {
  252. if (matrizCuadriculas.getInfoCuadricula(f, c) == 0)
  253. aux = "";
  254. else
  255. aux = String.valueOf(matrizCuadriculas.getInfoCuadricula(f, c));
  256. matrizTextPane[f][c].setText(aux);
  257. }
  258. }
  259. aux = String.valueOf(matrizCuadriculas.sumarValoresCuadriculas());
  260. infoPuntaje.setText(aux);
  261. }
  262. }