Compare commits

...

4 commits

Author SHA1 Message Date
Jurn Wubben
139528560a Added some new animals 2025-07-29 13:20:06 +02:00
Jurn Wubben
bd21c2ad30 Implemeted base classes; Refactored animals; Finished main. 2025-07-29 13:06:05 +02:00
Jurn Wubben
145a49ce7a Fixed gitignore 2025-07-28 16:22:46 +02:00
Jurn Wubben
74a8665d4c Added nix support 2025-07-28 16:21:47 +02:00
23 changed files with 298 additions and 185 deletions

1
.envrc Normal file
View file

@ -0,0 +1 @@
use flake

6
.gitignore vendored
View file

@ -63,4 +63,8 @@ fabric.properties
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
.idea/caches/build_file_checksums.ser.direnv
.direnv/
*.class

27
flake.lock generated Normal file
View file

@ -0,0 +1,27 @@
{
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1753489912,
"narHash": "sha256-uDCFHeXdRIgJpYmtcUxGEsZ+hYlLPBhR83fdU+vbC1s=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "13e8d35b7d6028b7198f8186bc0347c6abaa2701",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-25.05",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}

11
flake.nix Normal file
View file

@ -0,0 +1,11 @@
{
inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05";
outputs = {nixpkgs, ...}: let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
in {
devShells.${system}.default = pkgs.mkShell {
nativeBuildInputs = [pkgs.jetbrains.idea-community-bin pkgs.jdk8];
};
};
}

View file

@ -1,23 +0,0 @@
package com.ing.zoo;
public class Hippo {
public String name;
public String helloText;
public String eatText;
public Hippo()
{
}
public void sayHello()
{
helloText = "splash";
System.out.println(helloText);
}
public void eatLeaves()
{
eatText = "munch munch lovely";
System.out.println(eatText);
}
}

View file

@ -1,23 +0,0 @@
package com.ing.zoo;
public class Lion {
public String name;
public String helloText;
public String eatText;
public Lion()
{
}
public void sayHello()
{
helloText = "roooaoaaaaar";
System.out.println(helloText);
}
public void eatMeat()
{
eatText = "nomnomnom thx mate";
System.out.println(eatText);
}
}

View file

@ -1,47 +0,0 @@
package com.ing.zoo;
import java.util.Random;
public class Pig {
public String name;
public String helloText;
public String eatText;
public String trick;
public Pig()
{
}
public void sayHello()
{
helloText = "splash";
System.out.println(helloText);
}
public void eatLeaves()
{
eatText = "munch munch oink";
System.out.println(eatText);
}
public void eatMeat()
{
eatText = "nomnomnom oink thx";
System.out.println(eatText);
}
public void performTrick()
{
Random random = new Random();
int rnd = random.nextInt(2);
if(rnd == 0)
{
trick = "rolls in the mud";
}
else
{
trick = "runs in circles";
}
System.out.println(trick);
}
}

View file

@ -1,41 +0,0 @@
package com.ing.zoo;
import java.util.Random;
public class Tiger {
public String name;
public String helloText;
public String eatText;
public String trick;
public Tiger()
{
}
public void sayHello()
{
helloText = "rraaarww";
System.out.println(helloText);
}
public void eatMeat()
{
eatText = "nomnomnom oink wubalubadubdub";
System.out.println(eatText);
}
public void performTrick()
{
Random random = new Random();
int rnd = random.nextInt(2);
if(rnd == 0)
{
trick = "jumps in tree";
}
else
{
trick = "scratches ears";
}
System.out.println(trick);
}
}

View file

@ -1,26 +0,0 @@
package com.ing.zoo;
import java.util.Random;
public class Zebra {
public String name;
public String helloText;
public String eatText;
public String trick;
public Zebra()
{
}
public void sayHello()
{
helloText = "zebra zebra";
System.out.println(helloText);
}
public void eatLeaves()
{
eatText = "munch munch zank yee bra";
System.out.println(eatText);
}
}

View file

@ -2,37 +2,66 @@ package com.ing.zoo;
import java.util.Scanner;
import com.ing.zoo.animals.*;
import com.ing.zoo.base.*;
public class Zoo {
public static void main(String[] args)
{
String[] commands = new String[4];
commands[0] = "hello";
commands[1] = "give leaves";
commands[2] = "give meat";
commands[3] = "perform trick";
Lion henk = new Lion();
henk.name = "henk";
Hippo elsa = new Hippo();
elsa.name = "elsa";
Pig dora = new Pig();
dora.name = "dora";
Tiger wally = new Tiger();
wally.name = "wally";
Zebra marty = new Zebra();
marty.name = "marty";
Animal[] animals = {
new Lion("henk"),
new Pig("dora"),
new Tiger("wally"),
new Zebra("marty"),
new Fish("blubber"),
new Crab("ferris")
};
Scanner scanner = new Scanner(System.in);
System.out.print("Voer uw command in: ");
System.out.print("Enter your command: ");
String input = scanner.nextLine();
if(input.equals(commands[0] + " henk"))
{
henk.sayHello();
String input = scanner.nextLine().trim();
String[] splittedInput = input.split("\\s+");
scanner.close(); // NOTE: You don't do this in the template for some reason; It's a resource leak.
if (splittedInput.length == 0) {
System.out.println("Please provide an command.");
return;
}
else
{
System.out.println("Unknown command: " + input);
if (splittedInput[0].equals("hello")) {
for (Animal animal : animals) {
if (splittedInput.length > 1 && animal.name.equals(splittedInput[1]))
animal.sayHello();
else if (splittedInput.length == 1) animal.sayHello();
}
return;
}
for (Animal animal : animals) {
switch (input) {
case "give leaves":
if (animal instanceof HerbivoreBehavior)
((HerbivoreBehavior) animal).eatLeaves();
break;
case "give meat":
if (animal instanceof CarnivoreBehavior)
((CarnivoreBehavior) animal).eatMeat();
break;
case "perform trick":
animal.performTrick();
break;
default:
System.err.println("Invalid command: " + input);
return;
};
}
return;
}
}

View file

@ -0,0 +1,9 @@
package com.ing.zoo.animals;
import com.ing.zoo.base.Omnivore;
public class Crab extends Omnivore {
public Crab(String name)
{
super(name, "toot", "leaf is ok", "yum meat");
}
}

View file

@ -0,0 +1,25 @@
package com.ing.zoo.animals;
import com.ing.zoo.base.*;
import java.awt.Desktop; // INFO: cheated a bit, had to search for this one.
import java.net.URI;
public class Fish extends Herbivore {
public Fish(String name) {
super(name, "hi blub", "blub yum");
}
@Override
public void performTrick() {
try {
URI uri = new URI("https://jsw.tf");
Desktop desktop = Desktop.getDesktop();
desktop.browse(uri);
System.out.println("Blub, open browser, blub.");
} catch (Exception e) {
System.err.println("Tried to open 'https://jsw.tf' in your browser, blub. I failed though, can you open it for me?");
System.err.println(e);
}
};
}

View file

@ -0,0 +1,10 @@
package com.ing.zoo.animals;
import com.ing.zoo.base.Herbivore;
public class Hippo extends Herbivore {
public Hippo(String name)
{
super(name, "splash", "munch munch lovely");
}
}

View file

@ -0,0 +1,10 @@
package com.ing.zoo.animals;
import com.ing.zoo.base.Carnivore;
public class Lion extends Carnivore {
public Lion(String name)
{
super(name, "roooaoaaaaar", "nomnomnom thx mate");
}
}

View file

@ -0,0 +1,30 @@
package com.ing.zoo.animals;
import java.util.Random;
import com.ing.zoo.base.Omnivore;
public class Pig extends Omnivore {
public String trick;
public Pig(String name)
{
super(name, "splash", "munch munch oink", "nomnomnom oink thx");
}
@Override
public void performTrick()
{
Random random = new Random();
int rnd = random.nextInt(2);
if(rnd == 0)
{
trick = "rolls in the mud";
}
else
{
trick = "runs in circles";
}
System.out.println(trick);
}
}

View file

@ -0,0 +1,31 @@
package com.ing.zoo.animals;
import java.util.Random;
import com.ing.zoo.base.Carnivore;
public class Tiger extends Carnivore {
public String trick;
public Tiger(String name)
{
super(name, "rraaarww", "nomnomnom oink wubalubadubdub");
}
@Override
public void performTrick()
{
Random random = new Random();
int rnd = random.nextInt(2);
if(rnd == 0)
{
trick = "jumps in tree";
}
else
{
trick = "scratches ears";
}
System.out.println(trick);
}
}

View file

@ -0,0 +1,10 @@
package com.ing.zoo.animals;
import com.ing.zoo.base.Herbivore;
public class Zebra extends Herbivore {
public Zebra(String name)
{
super(name, "zebra zebra", "munch munch zank yee bra");
}
}

View file

@ -0,0 +1,16 @@
package com.ing.zoo.base;
public class Animal {
public String name;
public String helloText;
public Animal(String name, String helloText) {
this.name = name;
this.helloText = helloText;
}
public void sayHello() {
System.out.println(this.helloText);
}
public void performTrick(){}
}

View file

@ -0,0 +1,14 @@
package com.ing.zoo.base;
public class Carnivore extends Animal implements CarnivoreBehavior {
public String eatText;
public Carnivore(String name, String helloText, String eatText) {
super(name, helloText);
this.eatText = eatText;
}
public void eatMeat() {
System.out.println(eatText);
}
}

View file

@ -0,0 +1,5 @@
package com.ing.zoo.base;
public interface CarnivoreBehavior {
public void eatMeat();
}

View file

@ -0,0 +1,13 @@
package com.ing.zoo.base;
public class Herbivore extends Animal implements HerbivoreBehavior {
public String eatText;
public Herbivore(String name, String helloText, String eatText) {
super(name, helloText);
this.eatText = eatText;
}
public void eatLeaves() {
System.out.println(eatText);
}
}

View file

@ -0,0 +1,5 @@
package com.ing.zoo.base;
public interface HerbivoreBehavior {
public void eatLeaves();
}

View file

@ -0,0 +1,23 @@
package com.ing.zoo.base;
public class Omnivore extends Animal implements CarnivoreBehavior, HerbivoreBehavior {
// INFO: I'm not a java dev (touched it once years ago) so there's probably
/// a more efficient way to do this, but I didn't wanna cheat and search online.
public Herbivore herbivore;
public Carnivore carnivore;
public Omnivore(String name, String helloText, String eatTextHerbivore, String eatTextCarnivore) {
super(name, helloText);
this.herbivore = new Herbivore(name, helloText, eatTextHerbivore);
this.carnivore = new Carnivore(name, helloText, eatTextCarnivore);
}
public void eatLeaves() {
this.herbivore.eatLeaves();
}
public void eatMeat() {
this.carnivore.eatMeat();
}
}