From 5aeefa72bb5f589d21b6b0e1b39517c21e5fd8d3 Mon Sep 17 00:00:00 2001 From: rubenpirreram Date: Sun, 26 Apr 2026 16:34:31 +0200 Subject: [PATCH] Add: Order To String --- .../ingsw/gc14/Model/Orders/Order2.java | 34 +++++++++++++++++ .../ingsw/gc14/Model/Orders/Order3.java | 22 +++++++---- .../ingsw/gc14/Model/Orders/Order4.java | 36 ++++++++++++++++++ .../ingsw/gc14/Model/Orders/Order5.java | 37 +++++++++++++++++++ .../ingsw/gc14/Model/Orders/OrderPlayer.java | 21 +++++++++++ .../ingsw/gc14/Model/Orders/Order2Test.java | 19 ++++++++-- .../ingsw/gc14/Model/Orders/Order3Test.java | 32 ++++++++++++++-- .../ingsw/gc14/Model/Orders/Order4Test.java | 31 ++++++---------- .../ingsw/gc14/Model/Orders/Order5Test.java | 18 +++++++++ 9 files changed, 218 insertions(+), 32 deletions(-) create mode 100644 src/main/java/it/polimi/ingsw/gc14/Model/Orders/OrderPlayer.java diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Orders/Order2.java b/src/main/java/it/polimi/ingsw/gc14/Model/Orders/Order2.java index 387eb1a..1a97e98 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Orders/Order2.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Orders/Order2.java @@ -2,8 +2,11 @@ package it.polimi.ingsw.gc14.Model.Orders; import it.polimi.ingsw.gc14.Model.OrderLogicCard; import it.polimi.ingsw.gc14.Model.Player; +import it.polimi.ingsw.gc14.View.TUI.AsciiTable; +import it.polimi.ingsw.gc14.View.TUI.BorderStyle; import java.util.*; +import java.util.stream.IntStream; public class Order2 extends OrderLogicCard { @@ -49,4 +52,35 @@ public class Order2 extends OrderLogicCard { } } } + @Override + public String toString() + { + + var table = new AsciiTable(BorderStyle.UNICODE, 2); + List stringUp=new ArrayList<>(); + List stringDown=new ArrayList<>(); + for(int i=0;i<2;i++) + { + try { + playerList.get(i); + stringUp.add(i+". "+playerList.get(i).player.getUserName()); + if(playerList.get(i).played) + stringDown.add(" Placed"); + else + stringDown.add(" Not Placed"); + } + catch (IndexOutOfBoundsException e) { + stringUp.add(""); + stringDown.add(""); + } + } + table.addRow(stringUp); + table.addRow(stringDown); + + List stringList=new ArrayList<>(); + stringList.add("+1 Food"); + stringList.add("-1 Food / -2 Prestige"); + table.addRow(stringList); + return "TURN ORDER\n" + table.build() + "\n"; + } } diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Orders/Order3.java b/src/main/java/it/polimi/ingsw/gc14/Model/Orders/Order3.java index 3eb13b9..de7797e 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Orders/Order3.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Orders/Order3.java @@ -57,21 +57,29 @@ public class Order3 extends OrderLogicCard { { var table = new AsciiTable(BorderStyle.UNICODE, 3); - List tempPlayer=new ArrayList<>(players); - List stringList=new ArrayList<>(); + List stringUp=new ArrayList<>(); + List stringDown=new ArrayList<>(); for(int i=0;i<3;i++) { try { - tempPlayer.get(i); - stringList.add(i+". "+tempPlayer.get(i).getUserName()); + playerList.get(i); + stringUp.add(i+". "+playerList.get(i).player.getUserName()); + if(playerList.get(i).played) + stringDown.add(" Placed"); + else + stringDown.add(" Not Placed"); } catch (IndexOutOfBoundsException e) { - stringList.add(i+". "); + stringUp.add(""); + stringDown.add(""); } } - table.addRow(stringList); - stringList=new ArrayList<>(); + table.addRow(stringUp); + table.addRow(stringDown); + + List stringList=new ArrayList<>(); + stringList.add("+2 Food"); stringList.add(" --"); stringList.add("-1 Food / -2 Prestige"); diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Orders/Order4.java b/src/main/java/it/polimi/ingsw/gc14/Model/Orders/Order4.java index 06bb44a..7b22706 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Orders/Order4.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Orders/Order4.java @@ -2,8 +2,11 @@ package it.polimi.ingsw.gc14.Model.Orders; import it.polimi.ingsw.gc14.Model.OrderLogicCard; import it.polimi.ingsw.gc14.Model.Player; +import it.polimi.ingsw.gc14.View.TUI.AsciiTable; +import it.polimi.ingsw.gc14.View.TUI.BorderStyle; import java.util.ArrayList; +import java.util.List; import java.util.NoSuchElementException; public class Order4 extends OrderLogicCard { @@ -57,4 +60,37 @@ public class Order4 extends OrderLogicCard { } } } + @Override + public String toString() + { + + var table = new AsciiTable(BorderStyle.UNICODE, 4); + List stringUp=new ArrayList<>(); + List stringDown=new ArrayList<>(); + for(int i=0;i<4;i++) + { + try { + playerList.get(i); + stringUp.add(i+". "+playerList.get(i).player.getUserName()); + if(playerList.get(i).played) + stringDown.add(" Placed"); + else + stringDown.add(" Not Placed"); + } + catch (IndexOutOfBoundsException e) { + stringUp.add(""); + stringDown.add(""); + } + } + table.addRow(stringUp); + table.addRow(stringDown); + + List stringList=new ArrayList<>(); + stringList.add("+2 Food"); + stringList.add("+1 Food"); + stringList.add(" --"); + stringList.add("-1 Food / -2 Prestige"); + table.addRow(stringList); + return "TURN ORDER\n" + table.build() + "\n"; + } } \ No newline at end of file diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Orders/Order5.java b/src/main/java/it/polimi/ingsw/gc14/Model/Orders/Order5.java index 41b7228..d69e0dd 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Orders/Order5.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Orders/Order5.java @@ -2,8 +2,11 @@ package it.polimi.ingsw.gc14.Model.Orders; import it.polimi.ingsw.gc14.Model.OrderLogicCard; import it.polimi.ingsw.gc14.Model.Player; +import it.polimi.ingsw.gc14.View.TUI.AsciiTable; +import it.polimi.ingsw.gc14.View.TUI.BorderStyle; import java.util.ArrayList; +import java.util.List; import java.util.NoSuchElementException; public class Order5 extends OrderLogicCard { @@ -58,4 +61,38 @@ public class Order5 extends OrderLogicCard { } } } + @Override + public String toString() + { + + var table = new AsciiTable(BorderStyle.UNICODE, 5); + List stringUp=new ArrayList<>(); + List stringDown=new ArrayList<>(); + for(int i=0;i<5;i++) + { + try { + playerList.get(i); + stringUp.add(i+". "+playerList.get(i).player.getUserName()); + if(playerList.get(i).played) + stringDown.add(" Placed"); + else + stringDown.add(" Not Placed"); + } + catch (IndexOutOfBoundsException e) { + stringUp.add(""); + stringDown.add(""); + } + } + table.addRow(stringUp); + table.addRow(stringDown); + + List stringList=new ArrayList<>(); + stringList.add("+3 Food"); + stringList.add("+1 Food"); + stringList.add(" --"); + stringList.add(" --"); + stringList.add("-1 Food / -2 Prestige"); + table.addRow(stringList); + return "TURN ORDER\n" + table.build() + "\n"; + } } diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Orders/OrderPlayer.java b/src/main/java/it/polimi/ingsw/gc14/Model/Orders/OrderPlayer.java new file mode 100644 index 0000000..360bebc --- /dev/null +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Orders/OrderPlayer.java @@ -0,0 +1,21 @@ +package it.polimi.ingsw.gc14.Model.Orders; + +import it.polimi.ingsw.gc14.Model.Player; + +/** + * Abstract base class for all order logic cards. + * An OrderLogicCard manages a queue of players and defines the effects + * applied when players are pushed back into the queue. + */ +public class OrderPlayer{ + public Player player; + public boolean played; + public OrderPlayer(Player player,boolean played){ + this.player=player; + this.played=played; + } + @Override + public String toString() { + return player.getUserName()+" "+played; + } +} diff --git a/src/test/java/it/polimi/ingsw/gc14/Model/Orders/Order2Test.java b/src/test/java/it/polimi/ingsw/gc14/Model/Orders/Order2Test.java index f089711..22347b3 100644 --- a/src/test/java/it/polimi/ingsw/gc14/Model/Orders/Order2Test.java +++ b/src/test/java/it/polimi/ingsw/gc14/Model/Orders/Order2Test.java @@ -4,9 +4,10 @@ import it.polimi.ingsw.gc14.Model.Cards.BuildingCard; import it.polimi.ingsw.gc14.Model.Player; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.NoSuchElementException; + +import java.lang.reflect.Field; +import java.util.*; + import static org.junit.jupiter.api.Assertions.*; class Order2Test { @@ -154,4 +155,16 @@ class Order2Test { assertEquals(p1, order.getFirst()); assertEquals(p1, order.getFirst()); } + @Test + void toStringTest() throws NoSuchFieldException, IllegalAccessException { + Player p1 = new Player("wPIshEUhiOpRRnIBFfM89s2$@q$9FGbz"); + Player p2 = new Player("L*Ncw1rjjrF2xn%H@4P1iC@&NNIooQQk"); + Order2 order = new Order2(new ArrayList<>(Arrays.asList(p1, p2))); + order.pull(); + order.pull(); + order.push(p2); + order.push(p1); + order.pull().getUserName(); + System.out.println(order); + } } \ No newline at end of file diff --git a/src/test/java/it/polimi/ingsw/gc14/Model/Orders/Order3Test.java b/src/test/java/it/polimi/ingsw/gc14/Model/Orders/Order3Test.java index d5cb5d4..34c2e3e 100644 --- a/src/test/java/it/polimi/ingsw/gc14/Model/Orders/Order3Test.java +++ b/src/test/java/it/polimi/ingsw/gc14/Model/Orders/Order3Test.java @@ -4,9 +4,10 @@ import it.polimi.ingsw.gc14.Model.Cards.BuildingCard; import it.polimi.ingsw.gc14.Model.Player; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.NoSuchElementException; + +import java.lang.reflect.Field; +import java.util.*; + import static org.junit.jupiter.api.Assertions.*; class Order3Test { @@ -206,5 +207,30 @@ class Order3Test { assertEquals(p1, order.getFirst()); assertEquals(p1, order.getFirst()); } + @Test + void toStringTest() throws NoSuchFieldException, IllegalAccessException { + Player p1 = new Player("wPIshEUhiOpRRnIBFfM89s2$@q$9FGbz"); + Player p2 = new Player("L*Ncw1rjjrF2xn%H@4P1iC@&NNIooQQk"); + Player p3 = new Player("L*Ncw1ryyrF2xn%H@4P1iC@&NNIooQQk"); + Order3 order = new Order3(new ArrayList<>(Arrays.asList(p1, p2,p3))); + Field field = Order3.class.getSuperclass().getDeclaredField("playerList"); + field.setAccessible(true); + List values =(ArrayList)field.get(order); + + String userPulled=order.pull().getUserName(); + userPulled=order.pull().getUserName(); + userPulled=order.pull().getUserName(); + + System.out.println(values); + order.push(p1); + order.push(p2); + values =(ArrayList)field.get(order); + System.out.println(order); +// assertEquals("TURN ORDER\n" + +// "╔════════════════════════════════════╦════════════════════════════════════╦════════════════════════════════════╗\n" + +// "║ 0. ║ 1. "+values.get(1).getUserName() +"║ 2. "+values.get(2).getUserName()+"║\n" + +// "║ +2 Food ║ -- ║ -1 Food / -2 Prestige ║\n"+ +// "╚════════════════════════════════════╩════════════════════════════════════╩════════════════════════════════════╝\n", order.toString()); + } } diff --git a/src/test/java/it/polimi/ingsw/gc14/Model/Orders/Order4Test.java b/src/test/java/it/polimi/ingsw/gc14/Model/Orders/Order4Test.java index 3ae1ac2..c562f60 100644 --- a/src/test/java/it/polimi/ingsw/gc14/Model/Orders/Order4Test.java +++ b/src/test/java/it/polimi/ingsw/gc14/Model/Orders/Order4Test.java @@ -4,9 +4,10 @@ import it.polimi.ingsw.gc14.Model.Cards.BuildingCard; import it.polimi.ingsw.gc14.Model.Player; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.NoSuchElementException; + +import java.lang.reflect.Field; +import java.util.*; + import static org.junit.jupiter.api.Assertions.*; class Order4Test { @@ -272,22 +273,14 @@ class Order4Test { } @Test - void getFirst() { - Player p1 = new Player("p1"); - Player p2 = new Player("p2"); - Player p3 = new Player("p3"); - Player p4 = new Player("p4"); - Order4 order = new Order4(new ArrayList<>(Arrays.asList(p1, p2, p3, p4))); + void toStringTest() throws NoSuchFieldException, IllegalAccessException { + Player p1 = new Player("wPIshNQhiOpRRnIBFfM89s2$@q$9FGbz"); + Player p2 = new Player("L*Ncw1rjjrF2xn%H@4P1iC@&NNIooQQk"); + Player p3 = new Player("wPIshEUhiOpRRnIBFfM89s2$@q$9FGbz"); + Player p4 = new Player("wPIshOThiOpRRnIBFfM89s2$@q$9FGbz"); + Order4 order = new Order4(new ArrayList<>(Arrays.asList(p1, p2,p3,p4))); + String userPulled=order.pull().getUserName(); + System.out.println(order); - order.pull(); - order.pull(); - order.pull(); - order.pull(); - assertNull(order.getFirst()); - - order.push(p1); - - assertEquals(p1, order.getFirst()); - assertEquals(p1, order.getFirst()); } } \ No newline at end of file diff --git a/src/test/java/it/polimi/ingsw/gc14/Model/Orders/Order5Test.java b/src/test/java/it/polimi/ingsw/gc14/Model/Orders/Order5Test.java index 929bc6a..0dceb69 100644 --- a/src/test/java/it/polimi/ingsw/gc14/Model/Orders/Order5Test.java +++ b/src/test/java/it/polimi/ingsw/gc14/Model/Orders/Order5Test.java @@ -5,6 +5,7 @@ import it.polimi.ingsw.gc14.Model.Player; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import java.lang.reflect.Field; import java.util.*; import static org.junit.jupiter.api.Assertions.*; @@ -364,6 +365,23 @@ class Order5Test { assertEquals(p1, order.getFirst()); assertEquals(p1, order.getFirst()); } + @Test + void toStringTest() throws NoSuchFieldException, IllegalAccessException { + Player p1 = new Player("wPIshUEhiOpRRnIBFfM89s2$@q$9FGbz"); + Player p2 = new Player("L*Ncw1rjjrF2xn%H@4P1iC@&NNIooQQk"); + Player p3 = new Player("wPIshOUhiOpRRnIBFfM89s2$@q$9FGbz"); + Player p4 = new Player("wPIshNUhiOpRRnIBFfM89s2$@q$9FGbz"); + Player p5 = new Player("wPIshKUhiOpRRnIBFfM89s2$@q$9FGbz"); + Order5 order = new Order5(new ArrayList<>(Arrays.asList(p1, p2,p3,p4,p5))); + order.pull(); + order.pull(); + order.pull(); + order.pull(); + order.pull(); + order.push(p1); + System.out.println(order); + + } }