commit ff5f37927e48b793958d2c235fcb0c744e30e136 Author: Celeste Madeline Samuel Nokto Dur Grossiord Date: Sun Oct 11 15:42:51 2026 +0200 0.0.1.0 diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..c7638ec --- /dev/null +++ b/.classpath @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..4e5fb55 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + game_of_life + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..99f26c0 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..3124684 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=25 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=25 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=25 diff --git a/Libs/OTTK.jar b/Libs/OTTK.jar new file mode 100644 index 0000000..f20288e Binary files /dev/null and b/Libs/OTTK.jar differ diff --git a/bin/module-info.class b/bin/module-info.class new file mode 100644 index 0000000..4da1396 Binary files /dev/null and b/bin/module-info.class differ diff --git a/bin/org/kotama/game_of_life/GameTools.class b/bin/org/kotama/game_of_life/GameTools.class new file mode 100644 index 0000000..4aa8aff Binary files /dev/null and b/bin/org/kotama/game_of_life/GameTools.class differ diff --git a/bin/org/kotama/game_of_life/Main.class b/bin/org/kotama/game_of_life/Main.class new file mode 100644 index 0000000..59494c8 Binary files /dev/null and b/bin/org/kotama/game_of_life/Main.class differ diff --git a/bin/org/kotama/game_of_life/calculator/StatCalculator.class b/bin/org/kotama/game_of_life/calculator/StatCalculator.class new file mode 100644 index 0000000..74ff3e6 Binary files /dev/null and b/bin/org/kotama/game_of_life/calculator/StatCalculator.class differ diff --git a/bin/org/kotama/game_of_life/cards/LongDistanceRelationShip.class b/bin/org/kotama/game_of_life/cards/LongDistanceRelationShip.class new file mode 100644 index 0000000..f4b557a Binary files /dev/null and b/bin/org/kotama/game_of_life/cards/LongDistanceRelationShip.class differ diff --git a/bin/org/kotama/game_of_life/cards/Plush.class b/bin/org/kotama/game_of_life/cards/Plush.class new file mode 100644 index 0000000..8ccf1a3 Binary files /dev/null and b/bin/org/kotama/game_of_life/cards/Plush.class differ diff --git a/bin/org/kotama/game_of_life/commands/Dice.class b/bin/org/kotama/game_of_life/commands/Dice.class new file mode 100644 index 0000000..1067e18 Binary files /dev/null and b/bin/org/kotama/game_of_life/commands/Dice.class differ diff --git a/bin/org/kotama/game_of_life/commands/Gamble.class b/bin/org/kotama/game_of_life/commands/Gamble.class new file mode 100644 index 0000000..0e796bc Binary files /dev/null and b/bin/org/kotama/game_of_life/commands/Gamble.class differ diff --git a/bin/org/kotama/game_of_life/commands/Hand.class b/bin/org/kotama/game_of_life/commands/Hand.class new file mode 100644 index 0000000..5974613 Binary files /dev/null and b/bin/org/kotama/game_of_life/commands/Hand.class differ diff --git a/bin/org/kotama/game_of_life/commands/PlayerStats.class b/bin/org/kotama/game_of_life/commands/PlayerStats.class new file mode 100644 index 0000000..8a614b6 Binary files /dev/null and b/bin/org/kotama/game_of_life/commands/PlayerStats.class differ diff --git a/bin/org/kotama/game_of_life/games/Dice.class b/bin/org/kotama/game_of_life/games/Dice.class new file mode 100644 index 0000000..3c77472 Binary files /dev/null and b/bin/org/kotama/game_of_life/games/Dice.class differ diff --git a/bin/org/kotama/game_of_life/games/Gamble.class b/bin/org/kotama/game_of_life/games/Gamble.class new file mode 100644 index 0000000..3082280 Binary files /dev/null and b/bin/org/kotama/game_of_life/games/Gamble.class differ diff --git a/bin/org/kotama/game_of_life/libs/Card.class b/bin/org/kotama/game_of_life/libs/Card.class new file mode 100644 index 0000000..7639e4e Binary files /dev/null and b/bin/org/kotama/game_of_life/libs/Card.class differ diff --git a/bin/org/kotama/game_of_life/libs/Command.class b/bin/org/kotama/game_of_life/libs/Command.class new file mode 100644 index 0000000..373b431 Binary files /dev/null and b/bin/org/kotama/game_of_life/libs/Command.class differ diff --git a/bin/org/kotama/game_of_life/libs/GameState.class b/bin/org/kotama/game_of_life/libs/GameState.class new file mode 100644 index 0000000..7eb49e7 Binary files /dev/null and b/bin/org/kotama/game_of_life/libs/GameState.class differ diff --git a/bin/org/kotama/game_of_life/libs/Player.class b/bin/org/kotama/game_of_life/libs/Player.class new file mode 100644 index 0000000..0972960 Binary files /dev/null and b/bin/org/kotama/game_of_life/libs/Player.class differ diff --git a/bin/org/kotama/game_of_life/libs/Stat.class b/bin/org/kotama/game_of_life/libs/Stat.class new file mode 100644 index 0000000..9ae15be Binary files /dev/null and b/bin/org/kotama/game_of_life/libs/Stat.class differ diff --git a/bin/org/kotama/game_of_life/parser/Parser.class b/bin/org/kotama/game_of_life/parser/Parser.class new file mode 100644 index 0000000..03abcaf Binary files /dev/null and b/bin/org/kotama/game_of_life/parser/Parser.class differ diff --git a/src/module-info.java b/src/module-info.java new file mode 100644 index 0000000..7160ae9 --- /dev/null +++ b/src/module-info.java @@ -0,0 +1,9 @@ +/** + * + */ +/** + * + */ +module game_of_life { + requires O.T.T.K; +} \ No newline at end of file diff --git a/src/org/kotama/game_of_life/GameTools.java b/src/org/kotama/game_of_life/GameTools.java new file mode 100644 index 0000000..5018abf --- /dev/null +++ b/src/org/kotama/game_of_life/GameTools.java @@ -0,0 +1,46 @@ +package org.kotama.game_of_life; + +import java.util.ArrayList; +import java.util.List; + +import org.kotama.OTTK.Out; +import org.kotama.game_of_life.commands.*; +import org.kotama.game_of_life.libs.Command; +import org.kotama.game_of_life.libs.GameState; +import org.kotama.game_of_life.libs.Player; +import org.kotama.game_of_life.libs.Stat; +import org.kotama.game_of_life.parser.Parser; + +public class GameTools { + + public static void Intro() + { + Out.WriteMachine("[...] Rebienvenue, ma chere ^^\n", 70); + Out.WriteMachine("[...] Assis toi je t'en pris...\n", 50); + Out.WriteMachine("[...] Tu te rappelle de moi ?\n", 100); + Out.WriteMachine("[...] Tu te rappelle de toi ?\n", 200); + } + public static GameState Init() + { + GameState gameState = new GameState(new Player()); + + for (Stat s : Stat.values()) + { + gameState.Player.stats.put(s, s.begin); + } + return gameState; + } + public static Parser InitCommands() + { + Parser parser = new Parser(); + List Commands = new ArrayList<>(); + Commands.add(new Dice()); + Commands.add(new PlayerStats()); + Commands.add(new Hand()); + Commands.add(new Gamble()); + + parser.addCommands(Commands); + + return parser; + } +} diff --git a/src/org/kotama/game_of_life/Main.java b/src/org/kotama/game_of_life/Main.java new file mode 100644 index 0000000..9279a80 --- /dev/null +++ b/src/org/kotama/game_of_life/Main.java @@ -0,0 +1,26 @@ +package org.kotama.game_of_life; + +import java.util.ArrayList; +import java.util.List; + +import org.kotama.OTTK.*; +import org.kotama.game_of_life.libs.*; +import org.kotama.game_of_life.parser.*; +import org.kotama.game_of_life.commands.*; +import org.kotama.game_of_life.cards.*; + +public class Main { + public static void main(String[] args) + { + Player player = new Player(); + Parser parser = GameTools.InitCommands(); + GameState gameState = GameTools.Init(); + gameState.Player.hand.put(new Plush(), 1); + gameState.Player.hand.put(new LongDistanceRelationShip(), 1); + while(true) + { + Out.Print("> "); + parser.main(In.Readline().split(" "), gameState); + } + } +} diff --git a/src/org/kotama/game_of_life/calculator/StatCalculator.java b/src/org/kotama/game_of_life/calculator/StatCalculator.java new file mode 100644 index 0000000..646bea1 --- /dev/null +++ b/src/org/kotama/game_of_life/calculator/StatCalculator.java @@ -0,0 +1,29 @@ +package org.kotama.game_of_life.calculator; + +import java.util.EnumMap; + +import org.kotama.game_of_life.libs.Card; +import org.kotama.game_of_life.libs.Player; +import org.kotama.game_of_life.libs.Stat; + +public class StatCalculator { + public static EnumMap calculate(Player player) + { + EnumMap trueStats = new EnumMap<>(Stat.class); + + for (Stat s : Stat.values()) + { + int total = player.stats.get(s); + + for (Card card : player.hand.keySet()) + { + total += card.effects().getOrDefault(s, 0) * player.hand.get(card); + } + + total = Math.max(s.min, Math.min(s.max, total)); + trueStats.put(s, total); + } + + return trueStats; + } +} diff --git a/src/org/kotama/game_of_life/cards/LongDistanceRelationShip.java b/src/org/kotama/game_of_life/cards/LongDistanceRelationShip.java new file mode 100644 index 0000000..fe42da3 --- /dev/null +++ b/src/org/kotama/game_of_life/cards/LongDistanceRelationShip.java @@ -0,0 +1,17 @@ +package org.kotama.game_of_life.cards; + +import java.util.Map; + +import org.kotama.game_of_life.libs.Card; +import org.kotama.game_of_life.libs.Stat; + +public record LongDistanceRelationShip() implements Card { + public String name() + { + return "LongDistanceRelationShip"; + } + public Map effects() + { + return Map.of(Stat.AFFECTION, -5); + } +} \ No newline at end of file diff --git a/src/org/kotama/game_of_life/cards/Plush.java b/src/org/kotama/game_of_life/cards/Plush.java new file mode 100644 index 0000000..f79d2fc --- /dev/null +++ b/src/org/kotama/game_of_life/cards/Plush.java @@ -0,0 +1,16 @@ +package org.kotama.game_of_life.cards; + +import java.util.Map; + +import org.kotama.game_of_life.libs.*; + +public record Plush() implements Card { + public String name() + { + return "plush"; + } + public Map effects() + { + return Map.of(Stat.AFFECTION, 10); + } +} diff --git a/src/org/kotama/game_of_life/commands/Dice.java b/src/org/kotama/game_of_life/commands/Dice.java new file mode 100644 index 0000000..ca8cf73 --- /dev/null +++ b/src/org/kotama/game_of_life/commands/Dice.java @@ -0,0 +1,17 @@ +package org.kotama.game_of_life.commands; + +import org.kotama.OTTK.Out; +import org.kotama.game_of_life.games.*; +import org.kotama.game_of_life.libs.Command; +import org.kotama.game_of_life.libs.GameState; + +public class Dice implements Command { + public String name() + { + return "dice"; + } + public void parse(String[] args, GameState gameState) + { + Out.Println(org.kotama.game_of_life.games.Dice.customd(Integer.parseInt(args[1]))); + } +} diff --git a/src/org/kotama/game_of_life/commands/Gamble.java b/src/org/kotama/game_of_life/commands/Gamble.java new file mode 100644 index 0000000..040d535 --- /dev/null +++ b/src/org/kotama/game_of_life/commands/Gamble.java @@ -0,0 +1,30 @@ +package org.kotama.game_of_life.commands; + +import org.kotama.OTTK.Out; +import org.kotama.game_of_life.games.Dice; +import org.kotama.game_of_life.libs.Card; +import org.kotama.game_of_life.libs.Command; +import org.kotama.game_of_life.libs.GameState; +import org.kotama.game_of_life.games.*; + +public class Gamble implements Command { + public String name() + { + return "gamble"; + } + public void parse(String[] args, GameState gameState) + { + Card found = null; + for (Card c : gameState.Player.hand.keySet()) + { + if (c.name().equalsIgnoreCase(args[1])) + { + found = c; + } + } + if (found != null) + { + org.kotama.game_of_life.games.Gamble.card(gameState.Player.hand, found); + } + } +} diff --git a/src/org/kotama/game_of_life/commands/Hand.java b/src/org/kotama/game_of_life/commands/Hand.java new file mode 100644 index 0000000..befd00e --- /dev/null +++ b/src/org/kotama/game_of_life/commands/Hand.java @@ -0,0 +1,22 @@ +package org.kotama.game_of_life.commands; + +import org.kotama.OTTK.Out; +import org.kotama.game_of_life.libs.Card; +import org.kotama.game_of_life.libs.Command; +import org.kotama.game_of_life.libs.GameState; +import org.kotama.game_of_life.libs.Stat; + +public class Hand implements Command { + public String name() + { + return "hand"; + } + public void parse(String[] args, GameState gameState) + { + Out.Println("----Hand----"); + for(Card card : gameState.Player.hand.keySet()) + { + Out.Println("| " + card.name() + ": " + gameState.Player.hand.get(card)); + } + } +} \ No newline at end of file diff --git a/src/org/kotama/game_of_life/commands/PlayerStats.java b/src/org/kotama/game_of_life/commands/PlayerStats.java new file mode 100644 index 0000000..8a41d06 --- /dev/null +++ b/src/org/kotama/game_of_life/commands/PlayerStats.java @@ -0,0 +1,25 @@ +package org.kotama.game_of_life.commands; + +import java.util.EnumMap; + +import org.kotama.OTTK.Out; +import org.kotama.game_of_life.calculator.StatCalculator; +import org.kotama.game_of_life.libs.Command; +import org.kotama.game_of_life.libs.GameState; +import org.kotama.game_of_life.libs.Stat; + +public class PlayerStats implements Command { + public String name() + { + return "stats"; + } + public void parse(String[] args, GameState gameState) + { + EnumMap trueStats = StatCalculator.calculate(gameState.Player); + Out.Println("----Stats----"); + for(Stat stat : trueStats.keySet()) + { + Out.Println("| " + stat + ": " + trueStats.get(stat)); + } + } +} diff --git a/src/org/kotama/game_of_life/games/Dice.java b/src/org/kotama/game_of_life/games/Dice.java new file mode 100644 index 0000000..5d5ead3 --- /dev/null +++ b/src/org/kotama/game_of_life/games/Dice.java @@ -0,0 +1,11 @@ +package org.kotama.game_of_life.games; + +import java.util.Random; + +public class Dice { + public static int customd(int d) + { + Random rnd = new Random(); + return rnd.nextInt(d); + } +} diff --git a/src/org/kotama/game_of_life/games/Gamble.java b/src/org/kotama/game_of_life/games/Gamble.java new file mode 100644 index 0000000..ff90dc3 --- /dev/null +++ b/src/org/kotama/game_of_life/games/Gamble.java @@ -0,0 +1,33 @@ +package org.kotama.game_of_life.games; + +import java.util.Map; +import java.util.Random; + +import org.kotama.OTTK.Out; +import org.kotama.game_of_life.libs.Card; +import org.kotama.game_of_life.libs.Player; + +public class Gamble { + public static void card(Map hand, Card d) + { + if (hand.get(d) != 1) + { + Out.Println("bien essayƩ... mais tu peux gamble qu'une fois !\n"); + return; + } + + Out.WriteMachine("et on lance la piece...\n", 50); + Out.WriteMachine(". . .\n", 500); + + if (Dice.customd(2) == 1) + { + Out.WriteMachine("oh non... vous DOUBLEZ la carte !\n", 50); + hand.put(d, 2); + } + else + { + Out.WriteMachine("oh non... vous PERDEZ la carte !\n", 50); + hand.remove(d); + } + } +} diff --git a/src/org/kotama/game_of_life/libs/Card.java b/src/org/kotama/game_of_life/libs/Card.java new file mode 100644 index 0000000..a8ec78f --- /dev/null +++ b/src/org/kotama/game_of_life/libs/Card.java @@ -0,0 +1,8 @@ +package org.kotama.game_of_life.libs; + +import java.util.Map; + +public interface Card { + String name(); + default Map effects() { return Map.of(); } +} diff --git a/src/org/kotama/game_of_life/libs/Command.java b/src/org/kotama/game_of_life/libs/Command.java new file mode 100644 index 0000000..16df762 --- /dev/null +++ b/src/org/kotama/game_of_life/libs/Command.java @@ -0,0 +1,6 @@ +package org.kotama.game_of_life.libs; + +public interface Command { + String name(); + public void parse(String[] args, GameState gamestate); +} diff --git a/src/org/kotama/game_of_life/libs/GameState.java b/src/org/kotama/game_of_life/libs/GameState.java new file mode 100644 index 0000000..ec948ea --- /dev/null +++ b/src/org/kotama/game_of_life/libs/GameState.java @@ -0,0 +1,10 @@ +package org.kotama.game_of_life.libs; + +public class GameState{ + public Player Player; + + public GameState(Player player) + { + Player = player; + } +} diff --git a/src/org/kotama/game_of_life/libs/Player.java b/src/org/kotama/game_of_life/libs/Player.java new file mode 100644 index 0000000..e3dfa4b --- /dev/null +++ b/src/org/kotama/game_of_life/libs/Player.java @@ -0,0 +1,12 @@ +package org.kotama.game_of_life.libs; + +import java.util.EnumMap; +import java.util.HashMap; +import java.util.Map; + +public class Player { + public String Name; + public EnumMap stats = new EnumMap<>(Stat.class); + public Map hand = new HashMap<>(); + public Map pile = new HashMap<>(); +} diff --git a/src/org/kotama/game_of_life/libs/Stat.java b/src/org/kotama/game_of_life/libs/Stat.java new file mode 100644 index 0000000..2a4e1f9 --- /dev/null +++ b/src/org/kotama/game_of_life/libs/Stat.java @@ -0,0 +1,19 @@ +package org.kotama.game_of_life.libs; + +public enum Stat { + MENTAL(0, 100, 50), + ALCOOL(0, 100, 0), + STRESS(0, 100, 50), + AFFECTION(0,100,50); + + + public final int min; + public final int max; + public final int begin; + + Stat(int min, int max, int begin) { + this.min = min; + this.max = max; + this.begin = begin; + } +} diff --git a/src/org/kotama/game_of_life/parser/Parser.java b/src/org/kotama/game_of_life/parser/Parser.java new file mode 100644 index 0000000..732abaa --- /dev/null +++ b/src/org/kotama/game_of_life/parser/Parser.java @@ -0,0 +1,33 @@ +package org.kotama.game_of_life.parser; + +import java.util.ArrayList; +import java.util.List; + +import org.kotama.game_of_life.libs.Command; +import org.kotama.game_of_life.libs.GameState; + +public class Parser { + List Commands = new ArrayList<>(); + + public void addCommands(List commands) + { + Commands = commands; + } + + public void main(String[] args, GameState gameState) + { + try { + for (Command command : Commands) + { + if (args[0].equals(command.name())) + { + command.parse(args, gameState); + } + } + } catch(Exception e) + { + System.out.println("bro... WTF is it ???"); + } + + } +}