You are on page 1of 6

/** * Copyright (c) 2008, 2011 Oracle and/or its affiliates. All rights reserved.

* Use is subject to license terms. */ package aviontanque; import import import import import import import import import import import import import import import import import import import import import import import import import java.io.File; java.io.FileInputStream; java.io.IOException; java.util.logging.Level; java.util.logging.Logger; javafx.application.Application; javafx.application.Platform; javafx.event.EventHandler; javafx.scene.Group; javafx.scene.Scene; javafx.scene.image.Image; javafx.scene.image.ImageView; javafx.scene.input.KeyEvent; javafx.scene.input.MouseEvent; javafx.scene.layout.Region; javafx.scene.media.AudioClip; javafx.scene.paint.Color; javafx.scene.shape.Circle; javafx.scene.shape.Line; javafx.scene.shape.Rectangle; javafx.scene.text.Font; javafx.scene.text.Text; javafx.stage.Stage; javax.sound.midi.InvalidMidiDataException; 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("DISPA RO.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 - tan que.getLayoutX()) < 25) { puntosTanque--; estadosBalasAvion[i] = false; } if (Math.abs(ubicacionBalaTanque[i] - avion.getLayoutY() ) < 25 && Math.abs(balaTanque[i].getLayoutX() - avion.g etLayoutX()) < 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.SEVE RE, null, ex); } } } } private void init(Stage primaryStage) throws InvalidMidiDataException, IOExc eption, 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 - 5 0)) { 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 - 1 50) { movimientos(avion, 3); } } }); } void movimientos(ImageView x, int c) { switch (c) { case 0: x.setLayoutX(x.getLayoutX() break; case 1: x.setLayoutY(x.getLayoutY() break; case 2: x.setLayoutX(x.getLayoutX() break; case 3: x.setLayoutY(x.getLayoutY() break; } } } @Override public void start(Stage primaryStage) throws Exception { init(primaryStage); primaryStage.show(); play(); } public static void main(String[] args) { launch(args); } }

- 10); - 10); + 10); + 10);

You might also like