diff --git a/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/Element.class b/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/Element.class index 9f2bd76..3ef3bf3 100644 Binary files a/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/Element.class and b/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/Element.class differ diff --git a/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/ElementGraph.class b/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/ElementGraph.class index cc439ef..6cedb9a 100644 Binary files a/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/ElementGraph.class and b/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/ElementGraph.class differ diff --git a/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/ElementLink.class b/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/ElementLink.class index 8daf6c4..cbc81aa 100644 Binary files a/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/ElementLink.class and b/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/ElementLink.class differ diff --git a/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/Game.class b/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/Game.class index fa6a92d..c01d743 100644 Binary files a/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/Game.class and b/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/Game.class differ diff --git a/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/GraphElement.class b/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/GraphElement.class index e1a7f72..4cac44a 100644 Binary files a/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/GraphElement.class and b/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/GraphElement.class differ diff --git a/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/Player.class b/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/Player.class index d7be542..6df87d6 100644 Binary files a/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/Player.class and b/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/Player.class differ diff --git a/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/TamaGolem.class b/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/TamaGolem.class index acce035..7dcef0b 100644 Binary files a/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/TamaGolem.class and b/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/TamaGolem.class differ diff --git a/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/TamaGolemMain.class b/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/TamaGolemMain.class index 0a09830..8bfb5fb 100644 Binary files a/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/TamaGolemMain.class and b/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/TamaGolemMain.class differ diff --git a/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/WorldBuilder.class b/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/WorldBuilder.class index 03fcd42..0c5c0c5 100644 Binary files a/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/WorldBuilder.class and b/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/WorldBuilder.class differ diff --git a/src/Game.java b/src/Game.java index c67b84e..ccb7058 100644 --- a/src/Game.java +++ b/src/Game.java @@ -4,6 +4,7 @@ public class Game { private final Player player1; private final Player player2; private final ElementGraph worldBalance; + private boolean restart = false; public Game(Player player1, Player player2, ElementGraph worldBalance) { this.player1 = player1; @@ -23,27 +24,45 @@ public class Game { return worldBalance; } + public boolean isRestart() { + return restart; + } + + public void setRestart(boolean restart) { + this.restart = restart; + } + public void start() { + // N int numberOfElements = worldBalance.getElements().size(); - int numberOfStones = (int) Math.ceil((numberOfElements + 1) / 3.0); - numberOfStones += 1; + + // P + int numberOfStones = (int) Math.ceil((numberOfElements + 1) / 3.0) + 1; + + // G int numberOfTamaGolems = (int) Math.ceil(((numberOfElements - 1) * (numberOfElements - 2)) / (2.0 * numberOfStones)); - int totalNumberOfStones = (int) Math.ceil((2.0 * numberOfTamaGolems * numberOfStones) / numberOfElements) * numberOfElements; + + // S + int totalNumberOfStones = (int) Math.ceil((2.0 * numberOfTamaGolems * numberOfStones)); + + // Stones for each element int numberOfStonesPerElement = totalNumberOfStones / numberOfElements; // deve essere uguale alla somma della potenza di tutti gli elementi int totalPower = worldBalance.getTotalStrength(); - int lifePoints = totalPower; System.out.println("Game started between " + player1.getName() + " and " + player2.getName()); System.out.println("Number of stones: " + numberOfStones); System.out.println("Number of elements: " + numberOfElements); - System.out.println("Number of TamaGolems: " + numberOfTamaGolems); + System.out.println("Number of TamaGolems for every player: " + numberOfTamaGolems); System.out.println("Total number of stones: " + totalNumberOfStones); System.out.println("Total number of stones for each element: " + numberOfStonesPerElement); System.out.println("Total power: " + totalPower); - System.out.println("Life points: " + lifePoints); + System.out.println("Life points: " + totalPower); + System.out.println("Press R to create a new game"); + } + } diff --git a/src/LinearSystem.java b/src/LinearSystem.java index a510a9e..750e34a 100644 --- a/src/LinearSystem.java +++ b/src/LinearSystem.java @@ -17,6 +17,7 @@ public class LinearSystem { public int[] resolve() { int[][] extendedMatrix = new int[n][m + 1]; + for (int i = 0; i < n; i++) { System.arraycopy(A[i], 0, extendedMatrix[i], 0, m); extendedMatrix[i][m] = b[i]; @@ -48,6 +49,7 @@ public class LinearSystem { for (int xi : x) { if (xi <= 0) return false; } + return true; } @@ -123,6 +125,7 @@ public class LinearSystem { row++; } + return row; } diff --git a/src/Pair.java b/src/Pair.java index 3de127b..a0bc753 100644 --- a/src/Pair.java +++ b/src/Pair.java @@ -3,6 +3,7 @@ package it.arnaldo.unibs.tamagolem; public class Pair { private final Element first; private final Element second; + Pair(Element first, Element second) { this.first = first; this.second = second; diff --git a/src/TamaGolemMain.java b/src/TamaGolemMain.java index cda8342..ae794c6 100644 --- a/src/TamaGolemMain.java +++ b/src/TamaGolemMain.java @@ -4,9 +4,28 @@ import java.util.*; public class TamaGolemMain { public static void main(String[] args) { - System.out.println("TamaGolem"); + Scanner sc = new Scanner(System.in); - Game game = new Game(new Player("Zazz"), new Player("zazz2"), WorldBuilder.buildWorld()); + System.out.println("TamaGolem"); + System.out.println(""" + + Player 1: + Choose your name + + """); + + Player p1 = new Player(sc.nextLine()); + + System.out.println(""" + + Player 2: + Choose your name + + """); + + Player p2 = new Player(sc.nextLine()); + + Game game = new Game(p1, p2, WorldBuilder.buildWorld()); game.start(); } diff --git a/src/WorldBuilder.java b/src/WorldBuilder.java index ed324b7..abb58e0 100644 --- a/src/WorldBuilder.java +++ b/src/WorldBuilder.java @@ -5,11 +5,14 @@ import java.util.*; public class WorldBuilder { public static ElementGraph buildWorld() { + // genero un numero casuale che mi dice quanti elementi prendo Element[] allElements = Element.values(); int numElements = (int)(Math.random() * 8) + 3; List selectedElements = new ArrayList<>(Arrays.asList(allElements)); Collections.shuffle(selectedElements); + + // seleziono la sublist di lunghezza numElements selectedElements = selectedElements.subList(0, numElements); @@ -46,7 +49,7 @@ public class WorldBuilder { // sistema lineare per trovare le soluzioni che verificano l'equilibrio - try{ + try { LinearSystem system = new LinearSystem(numElements, A, b); int[] solution = system.resolve(); @@ -65,7 +68,8 @@ public class WorldBuilder { world.printGraph(); return world; - }catch (Exception e){ + + }catch (Exception e){ buildWorld(); } @@ -133,6 +137,7 @@ public class WorldBuilder { } } while (!valid); + return linkDirections; } }