Está en la página 1de 7

Trabajo 7:

Elaborar un juego de video del tanque y el avion. El Juego consiste en que hay dos
jugadores los cuales manejan un tanque y un avion respectivamente mediante teclado.
El avion se encuentra en la parte superior de la pantalla, mientras el tanque en la parte
inferior. El objetivo consiste en destruir al vehiculo oponente.
AVIONTANQUE:
package aviontanque;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.KeyEvent;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Region;
import javafx.scene.media.AudioClip;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Line;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import javax.sound.midi.InvalidMidiDataException;
import javax.sound.midi.MidiUnavailableException;
public class AvionTanque extends Application {
AudioClip disparoAVION = new
AudioClip(AvionTanque.class.getResource("LASER.WAV").toString());
AudioClip disparoTanque = new
AudioClip(AvionTanque.class.getResource("DISPARO.WAV").toString());
AudioClip musica = new
AudioClip(AvionTanque.class.getResource("musica.mp3").toString());
Image image = new Image(getClass().getResourceAsStream("avion.jpg"));
Image image1 = new Image(getClass().getResourceAsStream("tanke.jpg"));
private ImageView avion = new ImageView();
private ImageView tanque = new ImageView();
private AvionTanque.LettersPane lettersPane;
static final int ancho = 500;

static final int alto = 400;


int puntosAvion = 500;
int puntosTanque = 500;
Group root;
Scene scene;
Circle[] balaAvion;
int[] ubicacionBalaAvion = new int[5];
boolean[] estadosBalasAvion = new boolean[5];
Circle[] balaTanque;
int[] ubicacionBalaTanque = new int[5];
boolean[] estadosBalasTanque = new boolean[5];
Rectangle fondo;
Rectangle FINAL;
Line arriba;
Line izquierda;
Line abajo;
Line abajo1;
Line derecha;
Text[] estrellas;
Text mensage;
Text score;
boolean swt = false, swa = false;
AvionTanque.Mover mover;
String vencedor;
class Mover extends Thread {
private boolean continuar = true;
public void detenElHilo() {
continuar = false;
disparoAVION = null;
disparoTanque = null;
avion.setVisible(false);
for (int i = 0; i < balaAvion.length; i++) {
balaAvion[i].setVisible(false);
balaTanque[i].setVisible(false);
}
tanque.setVisible(false);
FINAL.setVisible(true);
mensage.setVisible(true);
mensage.setLayoutX(0);
mensage.setLayoutY(alto / 2);
mensage.setText("JUEGO TERMINADO \n GANADOR : " + vencedor);
}
public int colorBala() {
return (int) (255 * Math.random());
}

@Override
public void run() {
int ca = 0;
int ct = alto;
while (continuar) {
lettersPane.requestFocus();
try {
score.setText("Tanque : " + (500 - puntosAvion) + " \n Avion:" + (500 puntosTanque));
if (puntosAvion <= 0) {
vencedor = "Tanque";
detenElHilo();
}
if (puntosTanque <= 0) {
vencedor = "Avion";
detenElHilo();
}
for (int i = 0; i < estrellas.length; i++) {
estrellas[i].setLayoutX(ancho * Math.random());
estrellas[i].setLayoutY(alto * Math.random());
}
Thread.currentThread().sleep(10);
for (int i = 0; i < balaAvion.length; i++) {
balaAvion[i].setVisible(estadosBalasAvion[i]);
balaAvion[i].setLayoutY(ubicacionBalaAvion[i]+25);
balaTanque[i].setVisible(estadosBalasTanque[i]);
balaTanque[i].setLayoutY(ubicacionBalaTanque[i]);
if (balaAvion[i].getLayoutY() >= alto) {
estadosBalasAvion[i] = false;
}
if (balaTanque[i].getLayoutY() <= 0) {
estadosBalasTanque[i] = false;
}
if (Math.abs(ubicacionBalaAvion[i] - tanque.getLayoutY()) < 25
&& Math.abs(balaAvion[i].getLayoutX() + 10 tanque.getLayoutX()) < 25) {
puntosTanque--;
estadosBalasAvion[i] = false;
}
if (Math.abs(ubicacionBalaTanque[i] - avion.getLayoutY()) < 25
&& Math.abs(balaTanque[i].getLayoutX() - avion.getLayoutX())
< 25) {
puntosAvion--;
estadosBalasTanque[i] = false;
}

if (estadosBalasAvion[i] == false) {
ubicacionBalaAvion[i] = (int) avion.getLayoutY();
balaAvion[i].setLayoutX((int) avion.getLayoutX());
}
if (estadosBalasTanque[i] == false) {
ubicacionBalaTanque[i] = (int) tanque.getLayoutY();
balaTanque[i].setLayoutX((int) tanque.getLayoutX());
}
if (estadosBalasAvion[i] == true) {
ubicacionBalaAvion[i] += 10;
}
if (estadosBalasTanque[i] == true) {
ubicacionBalaTanque[i] -= 10;
}
}
} catch (InterruptedException ex) {
Logger.getLogger(AvionTanque.class.getName()).log(Level.SEVERE,
null, ex);
}
}
}
}
private void init(Stage primaryStage) throws InvalidMidiDataException,
IOException, MidiUnavailableException {
root = new Group();
lettersPane = new AvionTanque.LettersPane();
scene = new Scene(root, ancho, 500);
mover = new AvionTanque.Mover();
avion.setImage(image);
tanque.setImage(image1);
balaAvion = new Circle[5];
for (int i = 0; i < balaAvion.length; i++) {
balaAvion[i] = new Circle(10, -10, 4, Color.GREEN);
balaAvion[i].setVisible(false);
ubicacionBalaAvion[i] = 0;
}
balaTanque = new Circle[5];
for (int i = 0; i < balaTanque.length; i++) {
balaTanque[i] = new Circle(10, -10, 4, Color.WHITE);
balaTanque[i].setVisible(false);
ubicacionBalaTanque[i] = alto;
}

fondo = new Rectangle(ancho - 1, alto - 2, Color.BLACK);


FINAL = new Rectangle(ancho - 1, alto - 2, Color.BLACK);
FINAL.setVisible(false);
estrellas = new Text[2];
score = new Text("");
score.setFont(new Font("ARIAL", 15));
score.setLayoutY(alto + 50);
score.setLayoutX(50);
mensage = new Text("");
mensage.setFont(new Font("ARIAL", 50));
mensage.fillProperty().set(Color.WHITE);
for (int i = 0; i < estrellas.length; i++) {
estrellas[i] = new Text("*");
estrellas[i].fillProperty().set(Color.WHITE);
}
abajo = new Line(0, 500, ancho, 500);
arriba = new Line(0, 1, ancho, 1);
izquierda = new Line(1, 0, 1, 500);
derecha = new Line(ancho - 1, 0, ancho - 1, 500);
abajo1 = new Line(0, alto, ancho, alto);
avion.setLayoutX(ancho / 2);
avion.setLayoutY(0);
tanque.setLayoutX(ancho / 2);
tanque.setLayoutY(alto - 25);
root.getChildren().add(lettersPane);
root.getChildren().add(fondo);
for (int i = 0; i < balaAvion.length; i++) {
root.getChildren().add(balaAvion[i]);
root.getChildren().add(balaTanque[i]);
}
root.getChildren().add(avion);
root.getChildren().add(tanque);
root.getChildren().add(arriba);
root.getChildren().add(abajo);
root.getChildren().add(derecha);
root.getChildren().add(izquierda);
root.getChildren().add(abajo1);
musica.play();
for (int i = 0; i < estrellas.length; i++) {
root.getChildren().add(estrellas[i]);
}
root.getChildren().add(FINAL);
root.getChildren().add(mensage);
root.getChildren().add(score);
mover.start();
//File midi = new File(getClass().getResource("music.mid").toString());
primaryStage.setResizable(false);

primaryStage.setScene(scene);
primaryStage.setTitle("Hello World");
primaryStage.show();
}
public void play() {
Platform.runLater(new Runnable() {
@Override
public void run() {
lettersPane.requestFocus();
}
});
}
int aaa = -1;
int ttt = -1;
public class LettersPane extends Region {
public LettersPane() {
setId("LettersPane");
setPrefSize(ancho, alto);
setFocusTraversable(true);
setOnMousePressed(new EventHandler<MouseEvent>() {
public void handle(MouseEvent me) {
requestFocus();
}
});
this.setOnKeyPressed(new EventHandler<KeyEvent>() {
public void handle(KeyEvent k) {
lettersPane.requestFocus();
String cadena = k.getCode().toString();
if (cadena == "NUMPAD0") {
aaa++;
estadosBalasAvion[aaa] = true;
if (aaa == 4) {
aaa = -1;
}
if (disparoAVION != null) {
disparoAVION.play();
}
} else if (cadena == "SPACE") {
ttt++;
estadosBalasTanque[ttt] = true;
if (ttt == 4) {
ttt = -1;
}

if (disparoTanque != null) {
disparoTanque.play();
}
} else if (cadena == "A" && tanque.getLayoutX() > 0) {
movimientos(tanque, 0);
} else if (cadena == "D" && tanque.getLayoutX() < (ancho - 50)) {
movimientos(tanque, 2);
} else if (cadena == "S" && tanque.getLayoutY() < alto - 25) {
movimientos(tanque, 3);
} else if (cadena == "LEFT" && avion.getLayoutX() > 0) {
movimientos(avion, 0);
} else if (cadena == "UP" && avion.getLayoutY() > 0) {
movimientos(avion, 1);
} else if (cadena == "RIGHT" && avion.getLayoutX() < (ancho - 50)) {
movimientos(avion, 2);
} else if (cadena == "DOWN" && avion.getLayoutY() < alto - 150) {
movimientos(avion, 3);
}
}
});
}
void movimientos(ImageView x, int c) {
switch (c) {
case 0:
x.setLayoutX(x.getLayoutX() - 10);
break;
case 1:
x.setLayoutY(x.getLayoutY() - 10);
break;
case 2:
x.setLayoutX(x.getLayoutX() + 10);
break;
case 3:
x.setLayoutY(x.getLayoutY() + 10);
break;
}
}
}
@Override
public void start(Stage primaryStage) throws Exception {
init(primaryStage);
primaryStage.show();
play();
}
public static void main(String[] args) {
launch(args);
}
}

También podría gustarte