diff --git a/Attempt/bin/Attacker.class b/Attempt/bin/Attacker.class new file mode 100644 index 0000000..4086ecd Binary files /dev/null and b/Attempt/bin/Attacker.class differ diff --git a/Attempt/bin/EnemyControl.class b/Attempt/bin/EnemyControl.class new file mode 100644 index 0000000..cfb3bb0 Binary files /dev/null and b/Attempt/bin/EnemyControl.class differ diff --git a/Attempt/bin/GameMenuDemo$1.class b/Attempt/bin/GameMenuDemo$1.class new file mode 100644 index 0000000..15f4ff1 Binary files /dev/null and b/Attempt/bin/GameMenuDemo$1.class differ diff --git a/Attempt/bin/GameMenuDemo$2.class b/Attempt/bin/GameMenuDemo$2.class new file mode 100644 index 0000000..1353f99 Binary files /dev/null and b/Attempt/bin/GameMenuDemo$2.class differ diff --git a/Attempt/bin/GameMenuDemo$3.class b/Attempt/bin/GameMenuDemo$3.class new file mode 100644 index 0000000..59b572f Binary files /dev/null and b/Attempt/bin/GameMenuDemo$3.class differ diff --git a/Attempt/bin/GameMenuDemo$MenuBox.class b/Attempt/bin/GameMenuDemo$MenuBox.class new file mode 100644 index 0000000..9205c97 Binary files /dev/null and b/Attempt/bin/GameMenuDemo$MenuBox.class differ diff --git a/Attempt/bin/GameMenuDemo$MenuItem.class b/Attempt/bin/GameMenuDemo$MenuItem.class new file mode 100644 index 0000000..bbb265a Binary files /dev/null and b/Attempt/bin/GameMenuDemo$MenuItem.class differ diff --git a/Attempt/bin/GameMenuDemo.class b/Attempt/bin/GameMenuDemo.class new file mode 100644 index 0000000..382330f Binary files /dev/null and b/Attempt/bin/GameMenuDemo.class differ diff --git a/Attempt/bin/One.class b/Attempt/bin/One.class new file mode 100644 index 0000000..35b816f Binary files /dev/null and b/Attempt/bin/One.class differ diff --git a/Attempt/bin/TroopControl.class b/Attempt/bin/TroopControl.class new file mode 100644 index 0000000..99c18fd Binary files /dev/null and b/Attempt/bin/TroopControl.class differ diff --git a/Attempt/bin/Zero.class b/Attempt/bin/Zero.class new file mode 100644 index 0000000..cd9fa08 Binary files /dev/null and b/Attempt/bin/Zero.class differ diff --git a/Attempt/bin/soundtrack.mp3 b/Attempt/bin/soundtrack.mp3 new file mode 100644 index 0000000..cb00dbc Binary files /dev/null and b/Attempt/bin/soundtrack.mp3 differ diff --git a/Attempt/res/imgs/1.png b/Attempt/res/imgs/1.png new file mode 100644 index 0000000..d497a68 Binary files /dev/null and b/Attempt/res/imgs/1.png differ diff --git a/Attempt/res/imgs/Background Main.jpg b/Attempt/res/imgs/Background Main.jpg new file mode 100644 index 0000000..3830db8 Binary files /dev/null and b/Attempt/res/imgs/Background Main.jpg differ diff --git a/Attempt/res/imgs/BackgroundMain.png b/Attempt/res/imgs/BackgroundMain.png new file mode 100644 index 0000000..4bf4ca1 Binary files /dev/null and b/Attempt/res/imgs/BackgroundMain.png differ diff --git a/Attempt/res/imgs/Code_of_Honor.jpg b/Attempt/res/imgs/Code_of_Honor.jpg new file mode 100644 index 0000000..faa42f9 Binary files /dev/null and b/Attempt/res/imgs/Code_of_Honor.jpg differ diff --git a/Attempt/res/imgs/Evolution1.png b/Attempt/res/imgs/Evolution1.png new file mode 100644 index 0000000..9ffd422 Binary files /dev/null and b/Attempt/res/imgs/Evolution1.png differ diff --git a/Attempt/res/imgs/Evolution1E.png b/Attempt/res/imgs/Evolution1E.png new file mode 100644 index 0000000..a3a0212 Binary files /dev/null and b/Attempt/res/imgs/Evolution1E.png differ diff --git a/Attempt/res/imgs/Evolution2.png b/Attempt/res/imgs/Evolution2.png new file mode 100644 index 0000000..5efa1a5 Binary files /dev/null and b/Attempt/res/imgs/Evolution2.png differ diff --git a/Attempt/res/imgs/Evolution2E.png b/Attempt/res/imgs/Evolution2E.png new file mode 100644 index 0000000..6dbffd3 Binary files /dev/null and b/Attempt/res/imgs/Evolution2E.png differ diff --git a/Attempt/res/imgs/Evolution3.png b/Attempt/res/imgs/Evolution3.png new file mode 100644 index 0000000..c7b32c7 Binary files /dev/null and b/Attempt/res/imgs/Evolution3.png differ diff --git a/Attempt/res/imgs/Evolution3E.png b/Attempt/res/imgs/Evolution3E.png new file mode 100644 index 0000000..e39386a Binary files /dev/null and b/Attempt/res/imgs/Evolution3E.png differ diff --git a/Attempt/res/imgs/MusicOff.png b/Attempt/res/imgs/MusicOff.png new file mode 100644 index 0000000..ced9c00 Binary files /dev/null and b/Attempt/res/imgs/MusicOff.png differ diff --git a/Attempt/res/imgs/Thumbs.db b/Attempt/res/imgs/Thumbs.db new file mode 100644 index 0000000..7b5e216 Binary files /dev/null and b/Attempt/res/imgs/Thumbs.db differ diff --git a/Attempt/res/imgs/background.png b/Attempt/res/imgs/background.png new file mode 100644 index 0000000..1d985b6 Binary files /dev/null and b/Attempt/res/imgs/background.png differ diff --git a/Attempt/res/imgs/cashbag.png b/Attempt/res/imgs/cashbag.png new file mode 100644 index 0000000..10269c3 Binary files /dev/null and b/Attempt/res/imgs/cashbag.png differ diff --git a/Attempt/res/imgs/evolve.png b/Attempt/res/imgs/evolve.png new file mode 100644 index 0000000..1400ecb Binary files /dev/null and b/Attempt/res/imgs/evolve.png differ diff --git a/Attempt/res/imgs/music.png b/Attempt/res/imgs/music.png new file mode 100644 index 0000000..e8149c0 Binary files /dev/null and b/Attempt/res/imgs/music.png differ diff --git a/Attempt/res/imgs/one.png b/Attempt/res/imgs/one.png new file mode 100644 index 0000000..c421d1f Binary files /dev/null and b/Attempt/res/imgs/one.png differ diff --git a/Attempt/res/imgs/star.png b/Attempt/res/imgs/star.png new file mode 100644 index 0000000..589d974 Binary files /dev/null and b/Attempt/res/imgs/star.png differ diff --git a/Attempt/res/imgs/troop.png b/Attempt/res/imgs/troop.png new file mode 100644 index 0000000..e9265d8 Binary files /dev/null and b/Attempt/res/imgs/troop.png differ diff --git a/Attempt/res/imgs/turret.png b/Attempt/res/imgs/turret.png new file mode 100644 index 0000000..6e2fa33 Binary files /dev/null and b/Attempt/res/imgs/turret.png differ diff --git a/Attempt/res/imgs/zero.png b/Attempt/res/imgs/zero.png new file mode 100644 index 0000000..15bcbdb Binary files /dev/null and b/Attempt/res/imgs/zero.png differ diff --git a/Attempt/src/Attacker.java b/Attempt/src/Attacker.java new file mode 100644 index 0000000..6b62901 --- /dev/null +++ b/Attempt/src/Attacker.java @@ -0,0 +1,18 @@ +import java.io.FileNotFoundException; + +import javafx.scene.control.Button; +import javafx.scene.image.ImageView; + + + +public abstract class Attacker extends TroopControl +{ + public abstract void decreaseHealth(int d); + public abstract int getHealth(); + public abstract int getDamage(); + public abstract void move(); + public abstract void setImg(ImageView i); + public abstract void setImgE(ImageView i); + //public abstract void setClosest(Button x); + public abstract ImageView getImg(); +} diff --git a/Attempt/src/EnemyControl.java b/Attempt/src/EnemyControl.java new file mode 100644 index 0000000..e00ba83 --- /dev/null +++ b/Attempt/src/EnemyControl.java @@ -0,0 +1,65 @@ +import javafx.animation.KeyFrame; +import javafx.animation.Timeline; +import javafx.animation.TranslateTransition; +import javafx.scene.image.ImageView; +import javafx.scene.layout.Pane; +import javafx.stage.Stage; +import javafx.util.Duration; + +public class EnemyControl extends TroopControl +{ + private Pane root; + private ImageView img; + public void setRoot(Pane root) + { + this.root = root; + + logic(); + } + + public void logic() + { + + /*System.out.println("Hey"); + Timer t = new TranslateTransition(); + t.setDuration(Duration.millis(50000)); + t.setByX(10); + t.setOnFinished(e -> { + + System.out.println("Hey2"); + try + { + img = createTroop(new One(false), false); + } catch (Exception e1) + { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + root.getChildren().add(img); + + + + }); + t.play();*/ + + Timeline timeline = new Timeline(new KeyFrame( + Duration.millis((int)(Math.random() * 3000) + 2000), + ae -> produceOne())); + timeline.play(); + } + + public void produceOne() + { + try + { + img = createTroop(new One(false), false); + } catch (Exception e1) + { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + root.getChildren().add(img); + if(stop) + logic(); + } +} diff --git a/Attempt/src/GameMenuDemo.java b/Attempt/src/GameMenuDemo.java new file mode 100644 index 0000000..3cf7dd0 --- /dev/null +++ b/Attempt/src/GameMenuDemo.java @@ -0,0 +1,590 @@ +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.nio.file.Files; +import java.nio.file.Paths; + +import javafx.animation.AnimationTimer; +import javafx.animation.KeyFrame; +import javafx.animation.Timeline; +import javafx.application.Application; +import javafx.beans.binding.DoubleBinding; +import javafx.beans.property.DoubleProperty; +import javafx.beans.property.SimpleDoubleProperty; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.stage.Screen; +import javafx.stage.Stage; +import javafx.util.Duration; +import javafx.event.EventHandler; +import javafx.geometry.Pos; +import javafx.scene.*; +import javafx.scene.control.Button; +import javafx.scene.control.Hyperlink; +import javafx.scene.control.Label; +import javafx.scene.image.*; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.*; +import javafx.scene.media.AudioClip; +import javafx.scene.media.Media; +import javafx.scene.media.MediaPlayer; +import javafx.scene.paint.*; +import javafx.scene.shape.*; +import javafx.scene.text.*; + +public class GameMenuDemo extends Application +{ + + static Stage window; + Scene main; + Scene play; + Scene instructions; + Scene credits; + boolean val = true; + private AnimationTimer timer; + private Timeline timeline; + static Integer money = 175; + static Integer xp = 0; + static Integer enemyHealth = 500; + protected static boolean stop = true; + + private Parent createContent() + { + Pane root = new Pane(); + root.resize(790, 590); + + try (InputStream is = Files.newInputStream(Paths.get("res/imgs/Code_of_Honor.jpg"))) + { + ImageView img = new ImageView(new Image(is)); + img.setFitWidth(800); + img.setFitHeight(600); + + root.getChildren().add(img); + } catch (IOException e) + { + System.out.println("Couldn't load image"); + } + + MenuItem itemExit = new MenuItem("EXIT"); + itemExit.setOnMouseClicked(event -> System.exit(0)); + + MenuItem playMenu = new MenuItem("PLAY"); + playMenu.setOnMouseClicked(event -> { + playAudio(val, null, null, null); + + + + try + { + play = new Scene(createPlay()); + } catch (FileNotFoundException e) + { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + window.setScene(play); + }); + + MenuItem instructionMenu = new MenuItem("INSTRUCTIONS"); + instructionMenu.setOnMouseClicked(event -> window.setScene(instructions)); + + MenuItem creditsMenu = new MenuItem("CREDITS"); + creditsMenu.setOnMouseClicked(event -> window.setScene(credits)); + + MenuBox menu = new MenuBox(playMenu, instructionMenu, creditsMenu, itemExit); + menu.setTranslateX(290); + menu.setTranslateY(225); + + root.getChildren().addAll(menu); + return root; + } + + private Parent createInstructions() + { + Pane root = new Pane(); + root.setPrefSize(800, 600); + + try (InputStream is = Files.newInputStream(Paths.get("res/imgs/Code_of_Honor.jpg"))) + { + ImageView img = new ImageView(new Image(is)); + img.setFitWidth(800); + img.setFitHeight(600); + root.getChildren().add(img); + } catch (IOException e) + { + System.out.println("Couldn't load image"); + } + + MenuItem back = new MenuItem("BACK"); + back.setOnMouseClicked(event -> { + + try + { + start(window); + } catch (Exception e) + { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + + }); + + MenuBox menu = new MenuBox(back); + menu.setTranslateX(290); + menu.setTranslateY(500); + + root.getChildren().addAll(menu); + return root; + } + + private Parent createCredits() + { + Pane root = new Pane(); + root.setPrefSize(800, 600); + + try (InputStream is = Files.newInputStream(Paths.get("res/imgs/Code_of_Honor.jpg"))) + { + ImageView img = new ImageView(new Image(is)); + img.setFitWidth(800); + img.setFitHeight(600); + root.getChildren().add(img); + } catch (IOException e) + { + System.out.println("Couldn't load image"); + } + + MenuItem back = new MenuItem("BACK"); + back.setOnMouseClicked(event -> window.setScene(main)); + + MenuBox menu = new MenuBox(back); + menu.setTranslateX(290); + menu.setTranslateY(500); + + root.getChildren().addAll(menu); + return root; + } + + private Parent createPlay() throws FileNotFoundException + { + Pane root = new Pane(); + StackPane moneyContainer = new StackPane(); + window.setWidth(Screen.getPrimary().getVisualBounds().getWidth() * .75); + window.setHeight(Screen.getPrimary().getVisualBounds().getWidth() * .75 / 2); + window.setX(Screen.getPrimary().getVisualBounds().getWidth() * .125); + window.setY(Screen.getPrimary().getVisualBounds().getHeight() * .125); + //Background Image + try (InputStream is = Files.newInputStream(Paths.get("res/imgs/Background Main.jpg"))) + { + ImageView img = new ImageView(new Image(is)); + + img.setFitWidth(window.getWidth()); + img.setFitHeight(window.getHeight()); + + root.getChildren().add(img); + } catch (IOException e) + { + System.out.println("Couldn't load image"); + } + + + //Evolution Base 1 + FileInputStream inputstream0 = new FileInputStream("res/imgs/Evolution1.png"); + Image imageBase1 = new Image(inputstream0, window.getHeight() * .31, window.getHeight() * .26, false, false); + ImageView base1 = new ImageView(imageBase1); + base1.setTranslateX(0 - window.getWidth() * .022); + base1.setTranslateY(window.getHeight() * .7062308); + + FileInputStream inputstream00 = new FileInputStream("res/imgs/Evolution1E.png"); + Image imageEBase1 = new Image(inputstream00, window.getHeight() * .31, window.getHeight() * .26, false, false); + ImageView eBase1 = new ImageView(imageEBase1); + eBase1.setScaleX(-1); + eBase1.setTranslateX(window.getWidth() * .869); + eBase1.setTranslateY(window.getHeight() * .7062308); + + //Train Button + FileInputStream inputstream1 = new FileInputStream("res/imgs/troop.png"); + Image imageTrain = new Image(inputstream1, window.getHeight() * .065, window.getHeight() * .065, false, false); + Button trainTroops = new Button(); + trainTroops.setGraphic(new ImageView(imageTrain)); + trainTroops.setTranslateX(window.getWidth() * .81770833); + trainTroops.setTranslateY(window.getHeight() * .07692308); + TroopControl troopControl = new TroopControl(); + troopControl.setRoot(root); + + + + + //Turret Button + FileInputStream inputstream2 = new FileInputStream("res/imgs/turret.png"); + Image imageTurret = new Image(inputstream2, window.getHeight() * .065, window.getHeight() * .065, false, false); + Button buildTurret = new Button(); + buildTurret.setGraphic(new ImageView(imageTurret)); + buildTurret.setTranslateX(window.getWidth() * .765625); + buildTurret.setTranslateY(window.getHeight() * .07692308); + + //Evolve Button + FileInputStream inputstream4 = new FileInputStream("res/imgs/evolve.png"); + Image imageEvolve = new Image(inputstream4, window.getHeight() * .065, window.getHeight() * .065, false, false); + Button evolve = new Button(); + evolve.setGraphic(new ImageView(imageEvolve)); + evolve.setTranslateX(window.getWidth() * .71354167); + evolve.setTranslateY(window.getHeight() * .07692308); + + //Special Ability Button + FileInputStream inputstream5 = new FileInputStream("res/imgs/star.png"); + Image imageSpecial = new Image(inputstream5, window.getHeight() * .065, window.getHeight() * .065, false, false); + Button special = new Button(); + special.setGraphic(new ImageView(imageSpecial)); + special.setTranslateX(window.getWidth() * .66145833); + special.setTranslateY(window.getHeight() * .07692308); + + //Audio Button + FileInputStream inputstream6 = new FileInputStream("res/imgs/music.png"); + Image imageAudio = new Image(inputstream6, window.getHeight() * .065, window.getHeight() * .065, false, false); + FileInputStream inputstream7 = new FileInputStream("res/imgs/MusicOff.png"); + Image imageAudioOff = new Image(inputstream7, window.getHeight() * .065, window.getHeight() * .065, false, false); + Button audio = new Button(); + audio.setGraphic(new ImageView(imageAudio)); + audio.setTranslateX(window.getWidth() * .86979167); + audio.setTranslateY(window.getHeight() * .07692308); + audio.setOnAction(e -> { + val = !val; + playAudio(val, audio, imageAudio, imageAudioOff); + }); + + //Cashbag Icon next to Money + FileInputStream inputstream3 = new FileInputStream("res/imgs/cashbag.png"); + Image imageDollar = new Image(inputstream3, window.getHeight() * .0725, window.getHeight() * .0725, false, false); + + ImageView money = new ImageView(imageDollar); + + //Right Menu Container(train, turrets, etc.) + Rectangle rectangle = new Rectangle(window.getWidth() * .6484375, window.getHeight() * .02403846, window.getWidth() * .2734375, window.getHeight() * .14423077); + rectangle.setFill(Color.rgb(235, 213, 179)); + rectangle.setStroke(Color.BLACK); + + + //Left Menu Container(money, exp) + Rectangle square = new Rectangle(window.getWidth() * .02604167, window.getHeight() * .02403846, window.getWidth() * .15416667, window.getHeight() * .19230769); + square.setFill(Color.rgb(235, 213, 179)); + square.setStroke(Color.BLACK); + + //Menu Text + Label label1 = new Label("Menu"); + label1.setFont(Font.font("Verdana", FontWeight.BOLD, window.getHeight() * .04)); + label1.setTranslateX(window.getWidth() * .7578125); + label1.setTranslateY(window.getHeight() * .02425); + + //Money text + Label label2 = new Label(":"); + label2.setFont(Font.font("Verdana", FontWeight.BOLD, window.getHeight() * .05)); + + //XP Text + Label label3 = new Label("XP:"); + label3.setFont(Font.font("Verdana", FontWeight.BOLD, window.getHeight() * .05)); + + //Quit Button + Hyperlink back = new Hyperlink("QUIT"); + back.setOnMouseClicked(event -> { + window.setWidth(800); + window.setHeight(600); + window.setX(window.getWidth() * .29166667); + window.setY(window.getHeight() * .21153846); + window.setScene(main); + troopControl.reset(); + playAudio(false, audio, imageAudio, imageAudioOff); + }); + back.setTextFill(Color.BLACK); + back.setFont((Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, window.getHeight() * .02470588))); + back.setTranslateX(window.getWidth() * .92791667); + back.setTranslateY(window.getHeight() * .02403846); + + //StackFrame for Right Menu + moneyContainer.getChildren().addAll(square, label2, label3, money, xp(), money()); + moneyContainer.setTranslateX(window.getWidth() * .02604167); + moneyContainer.setTranslateY(window.getHeight() * .02403846); + label2.setTranslateY(0 - window.getWidth() * .02777); + label2.setTranslateX(0 - window.getWidth() * .0264125); + label3.setTranslateX(0 - window.getWidth() * .04604167); + label3.setTranslateY(window.getHeight() * .0404167); + money.setTranslateX(0 - window.getWidth() * .053666667); + money.setTranslateY(0 - window.getHeight() * .04768231); + + //HP Text + int hp = 500; + Text text1 = new Text("HP: " + hp); + text1.setX(window.getWidth() * .01041667); + text1.setY(window.getHeight() * .6075385); + text1.setFont(Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, window.getWidth() * .01302083)); + text1.setFill(Color.RED); + + + //Enemy + EnemyControl enemyControl = new EnemyControl(); + enemyControl.setRoot(root); + + + + + + + //root.getChildren().addAll(rectangle); + root.getChildren().addAll(rectangle, text1, enemyHealth(), trainTroops, buildTurret, evolve, label1, special, audio, back, base1, eBase1); + //root.getChildren().addAll(label1); + root.getChildren().addAll(moneyContainer); + + trainTroops.setOnMouseClicked(e -> { + root.getChildren().removeAll(trainTroops, buildTurret, evolve, label1, special, audio); + + + FileInputStream inputstream8 = null; + try + { + inputstream8 = new FileInputStream("res/imgs/troop.png"); + } catch (FileNotFoundException e1) + { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + Image imageTroopClone = new Image(inputstream8, window.getHeight() * .065, window.getHeight() * .065, false, false); + Button troopClone = new Button(); + troopClone.setGraphic(new ImageView(imageTrain)); + troopControl.setTroop(troopClone); + try + { + + troopControl.setMenu(); + } catch (FileNotFoundException e1) + { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + + + troopClone.setOnMouseClicked(f ->{ + root.getChildren().addAll(trainTroops, buildTurret, evolve, label1, special, audio); + troopControl.removeTroops(); + }); + }); + + stop = true; + + + return root; + } + + + + private void playAudio(boolean val, Button b, Image on, Image off) + { + AudioClip music = new AudioClip(this.getClass().getResource("soundtrack.mp3").toString()); + music.setVolume(0.7); + if(val) + { + if(b != null) + b.setGraphic(new ImageView(on)); + music.play(); + music.setCycleCount(AudioClip.INDEFINITE); + } + else if(b != null) + { + b.setGraphic(new ImageView(off)); + music.stop(); + } + } + + @Override + public void start(Stage primaryStage) throws Exception + { + window = primaryStage; + window.setWidth(800); + window.setHeight(600); + main = new Scene(createContent()); + instructions = new Scene(createInstructions()); + credits = new Scene(createCredits()); + + primaryStage.setTitle("Code of Honor"); + primaryStage.setScene(main); + primaryStage.setResizable(false); + primaryStage.show(); + + } + + /* + * private static class Title extends StackPane { public Title(String name) { + * Rectangle bg = new Rectangle(250, 60); bg.setStroke(Color.WHITE); + * bg.setStrokeWidth(2); bg.setFill(null); + * + * Text text = new Text(name); text.setFill(Color.WHITE); + * text.setFont(Font.font("Tw Cen MT Condensed", FontWeight.SEMI_BOLD, 50)); + * + * setAlignment(Pos.CENTER); getChildren().addAll(bg, text); } } + */ + private static class MenuBox extends VBox + { + public MenuBox(MenuItem... items) + { + getChildren().add(createSeparator()); + + for (MenuItem item : items) + { + getChildren().addAll(item, createSeparator()); + } + } + + private Line createSeparator() + { + Line sep = new Line(); + sep.setEndX(200); + sep.setStroke(Color.WHITE); + return sep; + } + } + + private static class MenuItem extends StackPane + { + public MenuItem(String name) + { + LinearGradient gradient = new LinearGradient(0, 0, 1, 0, true, CycleMethod.NO_CYCLE, + new Stop[] { new Stop(0, Color.ORANGE), new Stop(0.1, Color.BLACK), new Stop(0.9, Color.BLACK), + new Stop(1, Color.ORANGE) }); + + Rectangle bg = new Rectangle(200, 40); + bg.setOpacity(0.4); + + Text text = new Text(name); + text.setFill(Color.WHITE); + text.setFont(Font.font("Tw Cen MT Condensed", FontWeight.SEMI_BOLD, 22)); + + setAlignment(Pos.CENTER); + getChildren().addAll(bg, text); + + setOnMouseEntered(event -> { + bg.setFill(gradient); + text.setFill(Color.WHITE); + }); + + setOnMouseExited(event -> { + bg.setFill(Color.BLACK); + text.setFill(Color.WHITE); + }); + + setOnMousePressed(event -> { + bg.setFill(Color.ORANGE); + }); + + setOnMouseReleased(event -> { + bg.setFill(gradient); + }); + } + } + + public Node xp() + { + final Text text = new Text(xp.toString()); + text.setFont(Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, window.getHeight() * .05)); + timeline = new Timeline(); + timeline.setCycleCount(Timeline.INDEFINITE); + timeline.setAutoReverse(true); + timer = new AnimationTimer() + { + @Override + public void handle(long l) + { + text.setText(xp.toString()); + } + + }; + + Duration duration = Duration.hours(10); + KeyFrame keyFrame = new KeyFrame(duration); + timeline.getKeyFrames().add(keyFrame); + + timeline.play(); + timer.start(); + + text.setTranslateX(window.getWidth() * 0.021547); + text.setTranslateY(window.getHeight() * .0404167); + + + return text; + } + + public Node money() + { + final Text text = new Text(money.toString()); + text.setFont(Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, window.getHeight() * .05)); + timeline = new Timeline(); + timeline.setCycleCount(Timeline.INDEFINITE); + timeline.setAutoReverse(true); + timer = new AnimationTimer() + { + @Override + public void handle(long l) + { + text.setText(money.toString()); + } + + }; + + Duration duration = Duration.hours(10); + KeyFrame keyFrame = new KeyFrame(duration); + timeline.getKeyFrames().add(keyFrame); + + timeline.play(); + timer.start(); + + text.setTranslateY(0 - window.getWidth() * .02777); + text.setTranslateX(window.getWidth() * 0.021547); + + + + return text; + } + + public Node enemyHealth() + { + final Text text = new Text("HP: " + enemyHealth.toString()); + text.setFont(Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, window.getWidth() * .01302083)); + text.setTranslateX(window.getWidth() * .92229167); + text.setTranslateY(window.getHeight() * .6075385); + timeline = new Timeline(); + timeline.setCycleCount(Timeline.INDEFINITE); + timeline.setAutoReverse(true); + timer = new AnimationTimer() + { + @Override + public void handle(long l) + { + + text.setText("HP: " + enemyHealth.toString()); + if(enemyHealth == 0) + System.exit(0); + } + + }; + + Duration duration = Duration.hours(10); + KeyFrame keyFrame = new KeyFrame(duration); + timeline.getKeyFrames().add(keyFrame); + + timeline.play(); + timer.start(); + + + text.setFill(Color.RED); + + return text; + } + + public static void main(String[] args) + { + launch(args); + } + + +} \ No newline at end of file diff --git a/Attempt/src/One.java b/Attempt/src/One.java new file mode 100644 index 0000000..2f7d62d --- /dev/null +++ b/Attempt/src/One.java @@ -0,0 +1,289 @@ +import java.io.FileInputStream; +import java.util.ArrayList; +import java.util.concurrent.TimeUnit; + +import javafx.animation.Animation; +import javafx.animation.KeyFrame; +import javafx.animation.RotateTransition; +import javafx.animation.Timeline; +import javafx.animation.Transition; +import javafx.animation.TranslateTransition; + +import javafx.concurrent.Task; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.scene.Group; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.layout.StackPane; +import javafx.scene.transform.Rotate; +import javafx.scene.transform.Translate; +import javafx.stage.Stage; +import javafx.util.Duration; +import javafx.scene.*; + +public class One extends Attacker +{ + private int damage; + private int health; + private ImageView img; + private ImageView imgEnemy; + private int logicUnique; + private boolean friendly; + private boolean permaStop; + public One(boolean friendly) + { + permaStop = true; + damage = 20; + health = 120; + this.friendly = friendly; + + if(!stop) + { + logic = 0; + logicE = 0; + logicUnique = 0; + } + } + + + public void decreaseHealth(int d) + { + health -= d; + } + + + + public int getDamage() + { + return damage; + } + + public int getHealth() + { + return health; + } + + public void setImg(ImageView i) + { + img = i; + logicUnique = logic; + closestFriend.add(i); + logic++; + System.out.println(logicUnique); + move(); + } + + public ImageView getImg() + { + return img; + } + + public void setImgE(ImageView i) + { + imgEnemy = i; + closestEnemy.add(i); + logicUnique = logicE; + logicE++; + + move(); + } + + + + public void move() + { + //System.out.println(img.getTranslateX()); + double closest; + + if(!stop) + { + closestEnemy.clear(); + System.out.println("Hey"); + permaStop = false; + } + + + if(friendly) + closest = window.getWidth() * .88125; + else + closest = window.getWidth() * .0775; + + if(friendly && logicUnique >= 1 && stop) + { + + closest = closestFriend.get(logicUnique-1).getTranslateX(); + } + else if(logicUnique >= 1 && stop) + { + + closest = closestEnemy.get(logicUnique-1).getTranslateX(); + } + + System.out.println(closestEnemy.size()); + if(friendly && closestEnemy.size() > enemyKilled && logicUnique == friendlyKilled && closestFriend.size() > 0) + { + + closest = closestEnemy.get(enemyKilled).getTranslateX(); + }else if(!friendly && closestFriend.size() > friendlyKilled && logicUnique == enemyKilled && closestFriend.size() > 0) + closest = closestFriend.get(friendlyKilled).getTranslateX(); + + if(permaStop) + { + if(friendly) + { + + if(img.getTranslateX() < closest - window.getWidth() * .03208333) //img.getTranslateX() < enemy.getTranslateX() - 100) + { + + TranslateTransition t = new TranslateTransition(); + t.setDuration(Duration.millis(1)); + t.setNode(img); + t.setToX(img.getTranslateX() + window.getWidth() * .00042083); + t.setOnFinished(e -> { + move(); + + }); + t.play(); + } + else if(img.getTranslateX() < window.getWidth() * .86125 - window.getWidth() * .05208333) + { + + TranslateTransition t = new TranslateTransition(); + t.setDuration(Duration.millis(1)); + t.setNode(img); + t.setOnFinished(e -> { + move(); + + }); + t.play(); + }else + { + + RotateTransition rot = new RotateTransition(); + rot.setDuration(Duration.millis(200)); + rot.setNode(img); + rot.setFromAngle(0); + rot.setToAngle(90); + rot.setOnFinished(e -> { + + enemyHealth -= damage; + RotateTransition rota = new RotateTransition(); + rota.setDuration(Duration.millis(500)); + rota.setNode(img); + rota.setFromAngle(90); + rota.setToAngle(0); + rota.setOnFinished(f -> { + + RotateTransition rotat = new RotateTransition(); + rotat.setDuration(Duration.millis(300)); + rotat.setNode(img); + + rotat.setOnFinished(g -> { + move(); + + }); + rotat.play(); + }); + rota.play(); + }); + rot.play(); + } + }else + { + + if(imgEnemy.getTranslateX() > closest + window.getWidth() * .03208333) //img.getTranslateX() < enemy.getTranslateX() - 100) + { + TranslateTransition t = new TranslateTransition(); + t.setDuration(Duration.millis(1)); + t.setNode(imgEnemy); + t.setToX(imgEnemy.getTranslateX() - window.getWidth() * .00042083); + t.setOnFinished(e -> { + move(); + + }); + t.play(); + } + else if(imgEnemy.getTranslateX() > window.getWidth() * .0775 + window.getWidth() * .03208333) + { + + TranslateTransition t = new TranslateTransition(); + t.setDuration(Duration.millis(1)); + t.setNode(imgEnemy); + t.setOnFinished(e -> { + move(); + + }); + t.play(); + }else + { + + RotateTransition rot = new RotateTransition(); + rot.setDuration(Duration.millis(200)); + rot.setNode(imgEnemy); + rot.setFromAngle(0); + rot.setToAngle(-90); + rot.setOnFinished(e -> { + + //enemyHealth -= damage; + RotateTransition rota = new RotateTransition(); + rota.setDuration(Duration.millis(500)); + rota.setNode(imgEnemy); + rota.setFromAngle(-90); + rota.setToAngle(0); + rota.setOnFinished(f -> { + + RotateTransition rotat = new RotateTransition(); + rotat.setDuration(Duration.millis(300)); + rotat.setNode(imgEnemy); + + rotat.setOnFinished(g -> { + move(); + + }); + rotat.play(); + }); + rota.play(); + }); + rot.play(); + } + + } + }else + { + + if(friendly) + { + System.out.println("Activated"); + img.setTranslateX(0); + + } + else + imgEnemy.setTranslateX(1000000); + } + + + + + + } + /*public void moveEnemy() + { + TranslateTransition t = new TranslateTransition(); + + t.setDuration(Duration.millis(1)); + t.setNode(imgEnemy); + t.setToX(imgEnemy.getTranslateX() - 5); + if(imgEnemy.getTranslateX() > 0 && imgEnemy.getTranslateX() > enemy.getTranslateX() + 100) + t.setOnFinished(e -> { + + moveEnemy(); + + + }); + t.play(); + }*/ +} + diff --git a/Attempt/src/TroopControl.java b/Attempt/src/TroopControl.java new file mode 100644 index 0000000..2f6a9de --- /dev/null +++ b/Attempt/src/TroopControl.java @@ -0,0 +1,229 @@ +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.util.ArrayList; + +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.layout.Pane; +import javafx.scene.text.Font; +import javafx.scene.text.FontWeight; +import javafx.scene.text.Text; +import javafx.stage.Screen; +import javafx.stage.Stage; + +public class TroopControl extends GameMenuDemo +{ + private Button troop; + private Pane root; + private Button one; + private Button zero; + private Label label1; + protected static ArrayList closestFriend = new ArrayList(); + protected static ArrayList closestEnemy = new ArrayList(); + protected static int logicE; + protected static int logic; + protected static int friendlyKilled; + protected static int enemyKilled; + public TroopControl() + { + root = null; + + } + + public void setRoot(Pane root) + { + this.root = root; + } + + + + + public void setMenu() throws FileNotFoundException + { + troop.setTranslateX(window.getWidth() * .86979167); + troop.setTranslateY(window.getHeight() * .07692308); + root.getChildren().add(troop); + FileInputStream inputstream2 = new FileInputStream("res/imgs/one.png"); + Image imageOne = new Image(inputstream2, window.getHeight() * .065, window.getHeight() * .065, false, false); + one = new Button(); + one.setGraphic(new ImageView(imageOne)); + one.setTranslateX(window.getWidth() * .66145833); + one.setTranslateY(window.getHeight() * .07692308); + FileInputStream inputstream3 = new FileInputStream("res/imgs/zero.png"); + Image imageZero = new Image(inputstream3, window.getHeight() * .065, window.getHeight() * .065, false, false); + zero = new Button(); + zero.setGraphic(new ImageView(imageZero)); + zero.setTranslateX(window.getWidth() * .71145833); + zero.setTranslateY(window.getHeight() * .07692308); + label1 = new Label("Troop"); + label1.setFont(Font.font("Verdana", FontWeight.BOLD, window.getHeight() * .04)); + label1.setTranslateX(window.getWidth() * .7578125); + label1.setTranslateY(window.getHeight() * .02425); + root.getChildren().addAll(one, zero, label1); + listenOne(); + listenZero(); + } + + public void setTroop(Button troop) + { + this.troop = troop; + } + + public void removeTroops() + { + root.getChildren().removeAll(one, troop, label1); + } + + + + public void listenOne() + { + one.setOnMouseClicked(e -> { + + if (money > 15) + { + money-=15; + One o = new One(true); + try + { + ImageView img = createTroop(o, true); + root.getChildren().add(img); + } catch (Exception e1) + { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + } + }); + } + + + public void listenZero() + { + zero.setOnMouseClicked(e -> { + if(money > 25) + { + money -= 25; + Zero o = new Zero(true); + try + { + ImageView img = createTroop(o, true); + root.getChildren().add(img); + } catch (Exception e1) + { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + } + }); + } + + public ImageView createTroop(Attacker a, boolean friendly) throws Exception + { + ImageView img = new ImageView(); + + if(friendly) + { + + if(a instanceof One) + { + + Image m = new Image(new FileInputStream("res/imgs/one.png"), window.getHeight() * .105, window.getHeight() * .105, false, false); + img = new ImageView(m); + img.setTranslateX(window.getWidth() * .117333); + img.setTranslateY(window.getHeight() * .814269231); + a.setImg(img); + } + if(a instanceof Zero) + { + Image m = new Image(new FileInputStream("res/imgs/zero.png"), window.getHeight() * .105, window.getHeight() * .105, false, false); + img = new ImageView(m); + img.setTranslateX(window.getWidth() * .117333); + img.setTranslateY(window.getHeight() * .814269231); + a.setImg(img); + } + } + else if(!friendly) + { + if(a instanceof One) + { + + FileInputStream inputstream2 = new FileInputStream("res/imgs/one.png"); + Image m = new Image(inputstream2, window.getHeight() * .105, window.getHeight() * .105, false, false); + img = new ImageView(m); + img.setTranslateX(window.getWidth() * .827333); + img.setTranslateY(window.getHeight() * .814269231); + img.setScaleX(-1); + a.setImgE(img); + } + if(a instanceof Zero) + { + Image m = new Image(new FileInputStream("res/imgs/zero.png"), window.getHeight() * .105, window.getHeight() * .105, false, false); + img = new ImageView(m); + img.setTranslateX(window.getWidth() * .087333); + img.setTranslateY(window.getHeight() * .814269231); + img.setScaleX(-1); + a.setImgE(img); + } + } + + + return img; + } + + + public void reset() + { + stop = false; + logic = 0; + logicE = 0; + closestFriend.clear(); + closestEnemy.clear(); + friendlyKilled = 0; + enemyKilled = 0; + } + + public void incrementLogic() + { + logic++; + } + + public void incrementLogicE() + { + logicE++; + } + + public int getLogic() + { + return logic; + } + + public int getLogicE() + { + return logicE; + } + + public void incrementFriendly(ImageView i) + { + closestFriend.add(i); + } + + public ArrayList getFriendly() + { + return closestFriend; + } + + public void incrementEnemy(ImageView i) + { + closestEnemy.add(i); + } + + public ArrayList getEnemy() + { + return closestEnemy; + } + + +} diff --git a/Attempt/src/Zero.java b/Attempt/src/Zero.java new file mode 100644 index 0000000..42eaed8 --- /dev/null +++ b/Attempt/src/Zero.java @@ -0,0 +1,186 @@ +import java.io.FileInputStream; +import java.util.ArrayList; +import java.util.concurrent.TimeUnit; + +import javafx.animation.Animation; +import javafx.animation.KeyFrame; +import javafx.animation.RotateTransition; +import javafx.animation.Timeline; +import javafx.animation.Transition; +import javafx.animation.TranslateTransition; + +import javafx.concurrent.Task; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.scene.Group; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.layout.StackPane; +import javafx.scene.transform.Rotate; +import javafx.scene.transform.Translate; +import javafx.stage.Stage; +import javafx.util.Duration; +import javafx.scene.*; + +public class Zero extends Attacker +{ + private int damage; + private int health; + private ImageView img; + private ImageView imgEnemy; + private Image closest; + private ImageView enemy; + private boolean canGo; + private static ArrayList closestEnemy = new ArrayList(); + private int logicUnique; + private static int logicE; + public Zero(boolean friendly) + { + damage = 15; + health = 100; + canGo = true; + img = new ImageView(); + + if(friendly) + incrementLogic(); + else + logicE++; + logicUnique = getLogic(); + } + + public void decreaseHealth(int d) + { + health -= d; + } + + + + public int getDamage() + { + return damage; + } + + public int getHealth() + { + return health; + } + + public void setImg(ImageView i) + { + img = i; + incrementFriendly(i); + move(); + } + + public ImageView getImg() + { + return img; + } + + public void setImgE(ImageView i) + { + imgEnemy = i; + } + + public void setEnemy(ImageView i) + { + enemy = i; + } + + + + public void move() + { + //System.out.println(img.getTranslateX()); + double closest = window.getWidth() * .86125; + if(logicUnique >= 1 && stop) + { + closest = getFriendly().get(logicUnique-1).getTranslateX(); + } + + + + if(stop) + { + + if(img.getTranslateX() < closest - window.getWidth() * .03208333) //img.getTranslateX() < enemy.getTranslateX() - 100) + { + TranslateTransition t = new TranslateTransition(); + t.setDuration(Duration.millis(1)); + t.setNode(img); + t.setToX(img.getTranslateX() + window.getWidth() * .00042083); + t.setOnFinished(e -> { + move(); + + }); + t.play(); + } + else if(img.getTranslateX() < window.getWidth() * .86125 - window.getWidth() * .05208333) + { + + TranslateTransition t = new TranslateTransition(); + t.setDuration(Duration.millis(1)); + t.setNode(img); + t.setOnFinished(e -> { + move(); + + }); + t.play(); + }else + { + + RotateTransition rot = new RotateTransition(); + rot.setDuration(Duration.millis(200)); + rot.setNode(img); + rot.setFromAngle(0); + rot.setToAngle(90); + rot.setOnFinished(e -> { + enemyHealth -= damage; + RotateTransition rota = new RotateTransition(); + rota.setDuration(Duration.millis(500)); + rota.setNode(img); + rota.setFromAngle(90); + rota.setToAngle(0); + rota.setOnFinished(f -> { + + RotateTransition rotat = new RotateTransition(); + rotat.setDuration(Duration.millis(300)); + rotat.setNode(img); + + rotat.setOnFinished(g -> { + move(); + + }); + rotat.play(); + }); + rota.play(); + }); + rot.play(); + } + } + + + + + + } + + /*public void moveEnemy() + { + TranslateTransition t = new TranslateTransition(); + + t.setDuration(Duration.millis(1)); + t.setNode(imgEnemy); + t.setToX(imgEnemy.getTranslateX() - 5); + if(imgEnemy.getTranslateX() > 0 && imgEnemy.getTranslateX() > enemy.getTranslateX() + 100) + t.setOnFinished(e -> { + + moveEnemy(); + + + }); + t.play(); + }*/ +} \ No newline at end of file diff --git a/Attempt/src/soundtrack.mp3 b/Attempt/src/soundtrack.mp3 new file mode 100644 index 0000000..cb00dbc Binary files /dev/null and b/Attempt/src/soundtrack.mp3 differ