EscuchaTeclasII.java
Categorías: CategoryJava | CategoryProgramacion |
1 /*
2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
4 */
5 package savetheearthsk;
6
7 import java.awt.event.KeyEvent;
8 import java.awt.event.KeyListener;
9 import java.io.IOException;
10 import java.io.PrintStream;
11 import java.net.Socket;
12 import java.net.UnknownHostException;
13 import java.util.ArrayList;
14 import java.util.logging.Level;
15 import java.util.logging.Logger;
16
17 /**
18 *Esta clase permite asignar procesos a la activacion de las teclas en tiempo de ejecucion
19 * @author Luisa Fernanda Ruerda Herrera
20 * @author George Sebastian Parra Macias
21 */
22 public class EscuchaTeclasII implements KeyListener {
23
24 public static final int puerto = 9999;
25 private CanonCliente canoncliente;
26 private Configuracion infoconf;
27 Socket socket;
28 private boolean caminarb = false;
29 private Lienzo lienzo;
30 private static Pared[] paredes;
31 private Pared[] pared;
32 private Puntaje puntaje;
33 private Pared[] paredes1;
34 private Pared[] paredes2;
35 private Pared[] paredes3;
36 private Calaveragg1 calaveragg1;
37 private ArrayList<Calaveragg1> calaveras;
38 private CanonCliente canonCliente;
39 private int dir;
40 /**
41 * Constructor de EscuchaTeclas que recibe los parametros que corresponden a los atributos privados
42 * @param l
43 * @param pared
44 * @param paredes1
45 * @param paredes2
46 * @param paredes3
47 * @param calaveras
48 * @param puntaje
49 * @param canonCliente
50 * @param calaveragg1
51 * @param infoconf
52 */
53 public EscuchaTeclasII(Lienzo l, Pared[] pared, Pared[] paredes1, Pared[] paredes2, Pared[] paredes3, ArrayList<Calaveragg1> calaveras, Puntaje puntaje, CanonCliente canonCliente, Calaveragg1 calaveragg1, Configuracion infoconf) {
54 this.canoncliente = canonCliente;
55 this.infoconf = infoconf;
56 this.lienzo = l;
57 this.puntaje = puntaje;
58 this.pared = pared;
59 this.paredes1 = paredes1;
60 this.paredes2 = paredes2;
61 this.paredes3 = paredes3;
62 this.calaveras = calaveras;
63 this.calaveragg1 = calaveragg1;
64
65 /**
66 *excepcion para asignar un valor al Socket si este existe
67 */
68 try {
69 socket = new Socket(infoconf.direccionIP, puerto);
70 } catch (UnknownHostException ex) {
71 System.err.println("Error al abrir el socker cliente");
72 Logger.getLogger(EscuchaTeclasII.class.getName()).log(Level.SEVERE, null, ex);
73 } catch (IOException ex) {
74 System.err.println("Error IO al abrir el socker cliente");
75 Logger.getLogger(EscuchaTeclasII.class.getName()).log(Level.SEVERE, null, ex);
76 }
77
78
79
80
81 }
82
83 public void keyTyped(KeyEvent e) {
84 throw new UnsupportedOperationException("Not supported yet.");
85 }
86 /**
87 * funciona para volver entero el codigo ingresado
88 * es el metodo para recivir las teclas de cada objeto
89 * @param e recibe un MouseEvent
90 */
91 public void keyPressed(KeyEvent e) {
92 int tecla = e.getKeyCode();
93 switch (tecla) {
94
95 case KeyEvent.VK_RIGHT:
96 canonCliente.incX(10);
97
98 if (caminarb == false && calaveragg1 != null) {
99 calaveragg1.incX(10);
100 }
101 for (int i = 0; i < paredes3.length; i++) {
102 if (canonCliente.colisiona(paredes3[i])) {
103 canonCliente.decX(10);
104 }
105 }
106 lienzo.repaint();
107 break;
108 case KeyEvent.VK_LEFT:
109 canonCliente.decX(10);
110
111
112 //calaveragg1.decX(10);
113 if (calaveragg1 != null && caminarb == false) {
114 calaveragg1.decX(10);
115 }
116 for (int i = 0; i < paredes2.length; i++) {
117 if (canonCliente.colisiona(paredes2[i])) {
118 canonCliente.incX(10);
119 }
120 }
121 lienzo.repaint();
122 break;
123 case KeyEvent.VK_DOWN:
124 canonCliente.incY(10);
125 for (int i = 0; i < paredes1.length; i++) {
126 if (canonCliente.colisiona(paredes1[i])) {
127 canonCliente.decY(10);
128 }
129 }
130 lienzo.repaint();
131 break;
132 case KeyEvent.VK_UP:
133 switch (canonCliente.getDireccion()) {
134 case 1:
135 this.calaveragg1 = new Calaveragg1(canonCliente.x + 12, canonCliente.y - 65, 70, 70, Constantes.colores[(int) (Math.random() * 3)], paredes, paredes1, paredes2, paredes3, lienzo, calaveras, puntaje, infoconf);
136 calaveragg1.irCentro();
137 break;
138 case 0:
139 this.calaveragg1 = new Calaveragg1(canonCliente.x - 50, canonCliente.y - 30, 70, 70, Constantes.colores[(int) (Math.random() * 3)], paredes, paredes1, paredes2, paredes3, lienzo, calaveras, puntaje, infoconf);
140 calaveragg1.irIzquierda();
141 break;
142 case 2:
143 this.calaveragg1 = new Calaveragg1(canonCliente.x + 90, canonCliente.y - 20, 70, 70, Constantes.colores[(int) (Math.random() * 3)], paredes, paredes1, paredes2, paredes3, lienzo, calaveras, puntaje, infoconf);
144 calaveragg1.irDerecha();
145 break;
146 }
147 calaveras.add(calaveragg1);
148 lienzo.add(calaveragg1);
149 lienzo.repaint();
150 break;
151 case ' ':
152
153 Thread hiloCalaveragg1 = new Thread(calaveragg1);
154 if (calaveragg1 == null) {
155 } else {
156 hiloCalaveragg1.start();
157
158 }
159
160 lienzo.repaint();
161 caminarb = false;
162 break;
163
164 case 'A':
165 case 'a':
166 canonCliente.irIzquierda();
167 lienzo.repaint();
168 break;
169 case 'S':
170 case 's':
171 canonCliente.irCentro();
172 lienzo.repaint();
173 break;
174 case 'D':
175 case 'd':
176 canonCliente.irDerecha();
177
178 lienzo.repaint();
179 break;
180
181
182 }
183 }
184
185 public void keyReleased(KeyEvent e) {
186 throw new UnsupportedOperationException("Not supported yet.");
187 }
188 }
