Depredador.java.java
Categorías: CategoryJava | CategoryProgramacion |
1 /**
2 * Depredador.java
3 *
4 * @author Luis Alejandro Bernal Romero
5 *
6 * Un pequeño juego en el que el jugador maneja con el teclado un circulo verde, que es
7 * la presa; el un cuadrado rojo, el depredador, lo persigue hasta darle caza. El archivo
8 * debe estar en la raíz del directorio de trabajo. Esta versión no parpadea porque usa
9 * la versión con doble buffer del motor.
10 */
11 package depredador3;
12
13 import motorJuegos3.*;
14 import java.awt.*;
15 import java.awt.event.*;
16
17 class Presa extends ObjetoMovil{
18
19 public Presa(int x, int y) {
20 super(x, y);
21 }
22
23 public void paint(Graphics g){
24 g.setColor(Color.green);
25 g.fillOval(obtX(), obtY(), 50, 50);
26 }
27 }
28
29 class Depredador extends ObjetoMovil implements Runnable{
30 private static final int delta = 5;
31 private ObjetoMovil presa;
32 private MotorJuegos motor;
33
34 public Depredador(int x, int y, ObjetoMovil p, MotorJuegos m) {
35 super(x, y);
36 presa = p;
37 motor = m;
38 }
39
40 public void paint(Graphics g) {
41 g.setColor(Color.red);
42 g.fillRect(obtX(), obtY(), 60, 60);
43 }
44
45 public void run() {
46 boolean atrapado = false;
47 while( ! atrapado){
48 int x = obtX();
49 if(presa.obtX() - x > 0){
50 modX(x + 10);
51 }
52 else{
53 modX(x - 10);
54 }
55 int y = obtY();
56 if(presa.obtY() - y > 0){
57 modY(y + 10);
58 }
59 else{
60 modY(y - 10);
61 }
62 if(obtY() - presa.obtY() < delta && obtX() - presa.obtX() < delta){
63 presa.setVisible(false);
64 atrapado = true;
65 }
66 try{ Thread.sleep(200); } catch (Exception e) {}
67 }
68 motor.finalizar();
69 }
70 }
71
72 class EscuchaTeclasPresa implements KeyListener{
73 ObjetoMovil presa;
74 private Frame marco;
75
76 public EscuchaTeclasPresa(Frame l, ObjetoMovil p) {
77 marco = l;
78 presa = p;
79 }
80
81 public void keyPressed(KeyEvent e) {
82 int tecla = e.getKeyCode();
83 switch (tecla) {
84 case KeyEvent.VK_UP:{
85 int y = presa.obtY();
86 y -= 10;
87 if(y < 0){
88 y = marco.getHeight();
89 }
90 presa.modY(y);
91 }
92 break;
93 case KeyEvent.VK_DOWN:{
94 int y = presa.obtY();
95 y += 10;
96 if(y > marco.getHeight()){
97 y = 0;
98 }
99 presa.modY(y);
100 }
101 break;
102 case KeyEvent.VK_LEFT:{
103 int x = presa.obtX();
104 x -=10;
105 if(x < 0){
106 x = marco.getWidth();
107 }
108 presa.modX(x);
109 }
110 break;
111 case KeyEvent.VK_RIGHT:{
112 int x = presa.obtX();
113 x += 10;
114 if(x > marco.getWidth()){
115 x = 0;
116 }
117 presa.modX(x);
118 }
119 break;
120 }
121 }
122
123 public void keyReleased(KeyEvent e) {}
124
125 public void keyTyped(KeyEvent e) {}
126
127 }
128
129 public class Principal {
130
131 public static void main(String[] args) {
132 MotorJuegos motor = new MotorJuegos("Depredador III", Color.black);
133 Presa presa = new Presa(10, 50);
134 motor.add(presa);
135 Depredador depredador = new Depredador(480, 460, presa, motor);
136 motor.add(depredador);
137 Thread h = new Thread(depredador);
138 h.start();
139 EscuchaTeclasPresa escucha = new EscuchaTeclasPresa(motor, presa);
140 motor.addKeyListener(escucha);
141 motor.setSize(480, 640);
142 motor.setVisible(true);
143
144 motor.iniciar();
145 }
146
147 }
