aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/example/Main.java75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/main/java/org/example/Main.java b/src/main/java/org/example/Main.java
new file mode 100644
index 0000000..f5a9fb7
--- /dev/null
+++ b/src/main/java/org/example/Main.java
@@ -0,0 +1,75 @@
+package org.example;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+
+public class Main {
+
+ static Random RNG = new Random();
+
+ public static final String ANSI_RESET = "\u001B[0m";
+ public static final String ANSI_BLACK = "\u001B[30m";
+ public static final String ANSI_RED = "\u001B[31m";
+ public static final String ANSI_GREEN = "\u001B[32m";
+ public static final String ANSI_YELLOW = "\u001B[33m";
+ public static final String ANSI_BLUE = "\u001B[34m";
+ public static final String ANSI_PURPLE = "\u001B[35m";
+ public static final String ANSI_CYAN = "\u001B[36m";
+ public static final String ANSI_WHITE = "\u001B[37m";
+ public static final String ANSI_ORANGE = "\033[38:5:208m";
+ public static final String ANSI_BROWN = "\033[38:5:52m";
+
+ public static void main(String[] args) {
+ tree(25);
+ }
+
+ public static Map.Entry<Character, String> ornament() {
+ var l = new ArrayList<>(List.of(
+ Map.entry('O', ANSI_RED),
+ Map.entry('^', ANSI_YELLOW),
+ Map.entry('&', ANSI_ORANGE),
+ Map.entry('@', ANSI_BLUE),
+ Map.entry('!', ANSI_WHITE),
+ Map.entry('~', ANSI_PURPLE),
+ Map.entry('$', ANSI_CYAN)
+ ));
+ for (int i = 0; i < 21; i++) {
+ l.add(Map.entry('*', ANSI_GREEN));
+ }
+ return l.get(RNG.nextInt(0, l.size()));
+ }
+
+ public static void tree(int size) {
+ for (int i = 0; i < size; i++) {
+ printSpace(size - i);
+ printOrnament(i * 2 + 1);
+ System.out.println();
+ }
+ for (int i = 0; i < (size/3); i++) {
+ printSpace(size - size/6);
+ printStump(size/3);
+ System.out.println();
+ }
+ }
+
+ public static void printOrnament(int count) {
+ for (int i = 0; i < count; i++) {
+ var o = ornament();
+ System.out.print(o.getValue() + o.getKey() + ANSI_RESET);
+ }
+ }
+
+ public static void printSpace(int count) {
+ for (int i = 0; i < count; i++) {
+ System.out.print(" ");
+ }
+ }
+
+ public static void printStump(int count) {
+ for (int i = 0; i < count; i++) {
+ System.out.print(ANSI_BROWN + '#' + ANSI_RESET);
+ }
+ }
+} \ No newline at end of file