From 494d13bba3a146c1578a05c06937d64761242236 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Christian=20Gr=C3=BCnhage?= Date: Wed, 11 Feb 2015 12:26:23 +0100 Subject: [PATCH] Added Seeds The added Seed Class is containing the information needed for building a tree. With this it is possible to have nice I/O when running the application without arguments but adding the possibility to run the application with arguments for nearly no I/O, without having much code twice --- src/Main.java | 96 +++++++++++++++++++++++++++++++------ src/PythagorasTreeSeed.java | 22 +++++++++ 2 files changed, 103 insertions(+), 15 deletions(-) create mode 100644 src/PythagorasTreeSeed.java diff --git a/src/Main.java b/src/Main.java index e7f294b..0477eba 100644 --- a/src/Main.java +++ b/src/Main.java @@ -42,26 +42,68 @@ public class Main { } public static void newPythagorasTree(String input) { - PythagorasTree.PythagorasTreeVariant variant; - - Scanner scanner = new Scanner(System.in); - - if (input != null) variant = variantFromString(input); - else variant = variantInput(scanner); - - double size = squareSizeInput(scanner); - int loopSize = loopSizeInput(scanner); - int depth = depthInput(scanner); - double angle = 45; - - if (variant == PythagorasTree.PythagorasTreeVariant.AsymetricPythagorasTree) angle = angleInput(scanner); + PythagorasTreeSeed seed; + if (input != null) { + seed = getSeedFromArg(input); + } else { + seed = getSeedFromInput(); + } + double size = seed.size; + int loopSize = seed.loopSize; + int depth = seed.depth; + double angle = seed.angle; + PythagorasTree.PythagorasTreeVariant variant = seed.variant; for (int i = 0; i < loopSize; i++) { new PythagorasTreeQueue(variant, new PythagorasTriangleList(variant, depth, angle), newTurtle(), size, 0, depth); } } - public static PythagorasTree.PythagorasTreeVariant variantFromString(String input) { + private static PythagorasTreeSeed getSeedFromInput() { + PythagorasTree.PythagorasTreeVariant variant; + Scanner scanner = new Scanner(System.in); + variant = variantInput(scanner); + double size = squareSizeInput(scanner); + int loopSize = loopSizeInput(scanner); + int depth = depthInput(scanner); + double angle; + + switch (variant) { + case AsymetricPythagorasTree: + angle = angleInput(scanner); + break; + default: + angle = 45; + break; + } + + PythagorasTreeSeed seed = new PythagorasTreeSeed(size, loopSize, depth, angle, variant); + return seed; + } + + public static PythagorasTreeSeed getSeedFromArg(String input) { + String[] splitInput = input.split("_"); + PythagorasTree.PythagorasTreeVariant variant; + variant = variantFromArg(splitInput[0]); + double size = Double.parseDouble(splitInput[1]); + int loopSize = Integer.parseInt(splitInput[2]); + int depth = Integer.parseInt(splitInput[3]); + double angle; + + switch (variant) { + case AsymetricPythagorasTree: + angle = Double.parseDouble(splitInput[4]); + break; + default: + angle = 45; + break; + } + + PythagorasTreeSeed seed = new PythagorasTreeSeed(size, loopSize, depth, angle, variant); + return seed; + } + + public static PythagorasTree.PythagorasTreeVariant variantFromInput(String input) { PythagorasTree.PythagorasTreeVariant variant; if (input.equalsIgnoreCase("SymetricPythagorasTree")) { @@ -84,6 +126,29 @@ public class Main { return variant; } + public static PythagorasTree.PythagorasTreeVariant variantFromArg(String input) { + PythagorasTree.PythagorasTreeVariant variant; + + if (input.equalsIgnoreCase("1")) { + variant = PythagorasTree.PythagorasTreeVariant.SymetricPythagorasTree; + } else if (input.equalsIgnoreCase("2")) { + variant = PythagorasTree.PythagorasTreeVariant.AsymetricPythagorasTree; + } else if (input.equalsIgnoreCase("3")) { + variant = PythagorasTree.PythagorasTreeVariant.RegularRandomPythagorasTree; + } else if (input.equalsIgnoreCase("41")) { + variant = PythagorasTree.PythagorasTreeVariant.PisanoPythagorasTreeOne; + } else if (input.equalsIgnoreCase("42")) { + variant = PythagorasTree.PythagorasTreeVariant.PisanoPythagorasTreeTwo; + } else if (input.equalsIgnoreCase("43")) { + variant = PythagorasTree.PythagorasTreeVariant.PisanoPythagorasTreeThree; + } else if (input.equalsIgnoreCase("44")) { + variant = PythagorasTree.PythagorasTreeVariant.PisanoPythagorasTreeFour; + } else if (input.equalsIgnoreCase("45")) { + variant = PythagorasTree.PythagorasTreeVariant.PisanoPythagorasTreeFive; + } else variant = PythagorasTree.PythagorasTreeVariant.unselected; + return variant; + } + public static void playgroundSettings() { Scanner scanner = new Scanner(System.in); Options.setFrameTitle("PythagorasTree"); @@ -125,11 +190,12 @@ public class Main { System.out.println("No variant selected! Type in variant (To get the variants, type in 'help'):"); String variantString = scanner.nextLine(); if (variantString.equals("help")) variantHelp(); - variant = variantFromString(variantString); + variant = variantFromInput(variantString); } System.out.println(variant); return variant; } + public static void variantHelp() { System.out.println("SymetricPythagorasTree:"); System.out.println(""); diff --git a/src/PythagorasTreeSeed.java b/src/PythagorasTreeSeed.java new file mode 100644 index 0000000..7f98577 --- /dev/null +++ b/src/PythagorasTreeSeed.java @@ -0,0 +1,22 @@ +/** + * Created by Christian on 11.02.2015. + */ +public class PythagorasTreeSeed { + public double size; + public int loopSize; + public int depth; + public double angle; + public PythagorasTree.PythagorasTreeVariant variant; + + public PythagorasTreeSeed() { + + } + + public PythagorasTreeSeed(double size, int loopSize, int depth, double angle, PythagorasTree.PythagorasTreeVariant variant) { + this.size = size; + this.loopSize = loopSize; + this.depth = depth; + this.angle = angle; + this.variant = variant; + } +}