From 23c155d0b1df84e88d85ac9a14aafadddb90ccb5 Mon Sep 17 00:00:00 2001 From: GabrieleRadice <265572328+GabrieleRadice@users.noreply.github.com> Date: Sun, 26 Apr 2026 17:15:47 +0200 Subject: [PATCH 1/2] temp --- .../it/polimi/ingsw/gc14/View/TUI/TUI.java | 186 +++++++++--------- .../polimi/ingsw/gc14/Model/PlayerTest.java | 10 + 2 files changed, 103 insertions(+), 93 deletions(-) diff --git a/src/main/java/it/polimi/ingsw/gc14/View/TUI/TUI.java b/src/main/java/it/polimi/ingsw/gc14/View/TUI/TUI.java index 1880c51..8d25fa3 100644 --- a/src/main/java/it/polimi/ingsw/gc14/View/TUI/TUI.java +++ b/src/main/java/it/polimi/ingsw/gc14/View/TUI/TUI.java @@ -1,93 +1,93 @@ -package it.polimi.ingsw.gc14.View.TUI; -import it.polimi.ingsw.gc14.Model.Game; - -public class TUI { - - // ── dati di stato ─────────────────────────────────────────── - private BorderStyle style = BorderStyle.UNICODE; - private Game model; - // ── punto di ingresso ─────────────────────────────────────── - public String render() { - var sb = new StringBuilder(); - sb.append(renderHeader()); - sb.append(renderTurnOrder()); - sb.append(renderOfferTrack()); - sb.append(renderCardRows()); - sb.append(renderTableaux()); - sb.append(renderFooter()); - return sb.toString(); - } - - // ── sezioni ───────────────────────────────────────────────── - private String renderTurnOrder() { - var table = new AsciiTable(style, 4, 10); // 4 colonne, largh 10 - table.addRow(model.getPlayers().stream() - .map(p -> + ". " + p.getUserName()) - .toList()); - table.addRow(state.getPlayers().stream() - .map(p -> p.getTotemPosition() != null - ? "totem: " + p.getTotemPosition() - : "(da piaz)") - .toList()); - return " TURN ORDER\n" + table.build() + "\n"; - } - - private String renderOfferTrack() { - var table = new AsciiTable(style, 5, 14); - table.addRow(state.getOfferTiles().stream() - .map(t -> t.getId() + ": " + t.getLabel()).toList()); - table.addRow(state.getOfferTiles().stream() - .map(OfferTile::getRowsLabel).toList()); - table.addRow(state.getOfferTiles().stream() - .map(t -> state.getTotemOnTile(t.getId())).toList()); - return " OFFER TRACK\n" + table.build() + "\n"; - } - - private String renderCardRows() { - int cols = state.getTopRow().size(); - var table = new AsciiTable(style, cols, 13); - table.addRow(state.getTopRow().stream() - .map(c -> "[" + c.getTypeLabel() + "]").toList()); - table.addRow(state.getTopRow().stream() - .map(Card::getName).toList()); - table.addSeparator(); - table.addRow(state.getBotRow().stream() - .map(c -> "[" + c.getTypeLabel() + "]").toList()); - table.addRow(state.getBotRow().stream() - .map(Card::getName).toList()); - return " CARTE IN GIOCO\n" + prefix("TOP ", "BOT ", table.build()) + "\n"; - } - - private String renderTableaux() { - var sb = new StringBuilder(" TABLEAU GIOCATORI\n\n"); - for (Player p : state.getPlayers()) { - String marker = p.isActive() ? ">>>" : " "; - sb.append(String.format(" %s %s%s Food:%d PP:%d%n", - marker, p.getName(), - p.isActive() ? " [TUO TURNO]" : "", - p.getFood(), p.getPP())); - sb.append(renderPlayerTableau(p)); - sb.append("\n"); - } - return sb.toString(); - } - - private String renderPlayerTableau(Player p) { - var table = new AsciiTable(style, 3, 14); - table.addHeader("PERSONAGGI", "EDIFICI", "RISORSE"); - int rows = Math.max(p.getChars().size(), - Math.max(p.getBuildings().size(), 3)); - for (int i = 0; i < rows; i++) { - String ch = i < p.getChars().size() ? p.getChars().get(i) : ""; - String bd = i < p.getBuildings().size() ? p.getBuildings().get(i) : ""; - String rs = switch (i) { - case 0 -> "Food: " + "O".repeat(p.getFood()); - case 1 -> "PP: " + p.getPP(); - case 2 -> "Chars:" + p.getChars().size() + " Edif:" + p.getBuildings().size(); - default -> ""; - }; - table.addRow(ch, bd, rs); - } - return " " + table.build().replace("\n", "\n "); - } -} +//package it.polimi.ingsw.gc14.View.TUI; +//import it.polimi.ingsw.gc14.Model.Game; +// +//public class TUI { +// +// // ── dati di stato ─────────────────────────────────────────── +// private BorderStyle style = BorderStyle.UNICODE; +// private Game model; +// // ── punto di ingresso ─────────────────────────────────────── +// public String render() { +// var sb = new StringBuilder(); +// sb.append(renderHeader()); +// sb.append(renderTurnOrder()); +// sb.append(renderOfferTrack()); +// sb.append(renderCardRows()); +// sb.append(renderTableaux()); +// sb.append(renderFooter()); +// return sb.toString(); +// } +// +// // ── sezioni ───────────────────────────────────────────────── +// private String renderTurnOrder() { +// var table = new AsciiTable(style, 4, 10); // 4 colonne, largh 10 +// table.addRow(model.getPlayers().stream() +// .map(p -> + ". " + p.getUserName()) +// .toList()); +// table.addRow(state.getPlayers().stream() +// .map(p -> p.getTotemPosition() != null +// ? "totem: " + p.getTotemPosition() +// : "(da piaz)") +// .toList()); +// return " TURN ORDER\n" + table.build() + "\n"; +// } +// +// private String renderOfferTrack() { +// var table = new AsciiTable(style, 5, 14); +// table.addRow(state.getOfferTiles().stream() +// .map(t -> t.getId() + ": " + t.getLabel()).toList()); +// table.addRow(state.getOfferTiles().stream() +// .map(OfferTile::getRowsLabel).toList()); +// table.addRow(state.getOfferTiles().stream() +// .map(t -> state.getTotemOnTile(t.getId())).toList()); +// return " OFFER TRACK\n" + table.build() + "\n"; +// } +// +// private String renderCardRows() { +// int cols = state.getTopRow().size(); +// var table = new AsciiTable(style, cols, 13); +// table.addRow(state.getTopRow().stream() +// .map(c -> "[" + c.getTypeLabel() + "]").toList()); +// table.addRow(state.getTopRow().stream() +// .map(Card::getName).toList()); +// table.addSeparator(); +// table.addRow(state.getBotRow().stream() +// .map(c -> "[" + c.getTypeLabel() + "]").toList()); +// table.addRow(state.getBotRow().stream() +// .map(Card::getName).toList()); +// return " CARTE IN GIOCO\n" + prefix("TOP ", "BOT ", table.build()) + "\n"; +// } +// +// private String renderTableaux() { +// var sb = new StringBuilder(" TABLEAU GIOCATORI\n\n"); +// for (Player p : state.getPlayers()) { +// String marker = p.isActive() ? ">>>" : " "; +// sb.append(String.format(" %s %s%s Food:%d PP:%d%n", +// marker, p.getName(), +// p.isActive() ? " [TUO TURNO]" : "", +// p.getFood(), p.getPP())); +// sb.append(renderPlayerTableau(p)); +// sb.append("\n"); +// } +// return sb.toString(); +// } +// +// private String renderPlayerTableau(Player p) { +// var table = new AsciiTable(style, 3, 14); +// table.addHeader("PERSONAGGI", "EDIFICI", "RISORSE"); +// int rows = Math.max(p.getChars().size(), +// Math.max(p.getBuildings().size(), 3)); +// for (int i = 0; i < rows; i++) { +// String ch = i < p.getChars().size() ? p.getChars().get(i) : ""; +// String bd = i < p.getBuildings().size() ? p.getBuildings().get(i) : ""; +// String rs = switch (i) { +// case 0 -> "Food: " + "O".repeat(p.getFood()); +// case 1 -> "PP: " + p.getPP(); +// case 2 -> "Chars:" + p.getChars().size() + " Edif:" + p.getBuildings().size(); +// default -> ""; +// }; +// table.addRow(ch, bd, rs); +// } +// return " " + table.build().replace("\n", "\n "); +// } +//} diff --git a/src/test/java/it/polimi/ingsw/gc14/Model/PlayerTest.java b/src/test/java/it/polimi/ingsw/gc14/Model/PlayerTest.java index 9696ec7..d0544df 100644 --- a/src/test/java/it/polimi/ingsw/gc14/Model/PlayerTest.java +++ b/src/test/java/it/polimi/ingsw/gc14/Model/PlayerTest.java @@ -1,5 +1,6 @@ package it.polimi.ingsw.gc14.Model; +import it.polimi.ingsw.gc14.Model.Cards.Building.Effects.Building1; import it.polimi.ingsw.gc14.Model.Cards.BuildingCard; import it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType; import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters.*; @@ -206,8 +207,17 @@ class PlayerTest { p.artists.add(new Artist(1)); p.artists.add(new Artist(1)); p.artists.add(new Artist(2)); + p.builders.add(new Builder(2, 5, 1)); + p.gatherers.add(new Gatherer(1, 3)); + p.shamans.add(new Shaman(2, 3, 3)); + p.shamans.add(new Shaman(2, 3, 4)); + p.inventors.add(new Inventor(3, 1)); + p.hunters.add(new Hunter(3, true)); + p.hunters.add(new Hunter(2, false)); + p.buildingCards.add(new BuildingCard(2, 1,2, 5)); p.buildingCards.add(new BuildingCard(2, 2,3, 6)); + p.buildingCards.add(new Building1(2, 5, 5, CharacterType.INVENTOR)); System.out.println(p.toString()); } } \ No newline at end of file From 87d7cf6a5f4bb3c4868a632afb3dc8411ff0b43e Mon Sep 17 00:00:00 2001 From: GabrieleRadice <265572328+GabrieleRadice@users.noreply.github.com> Date: Wed, 29 Apr 2026 16:39:26 +0200 Subject: [PATCH 2/2] Fix: Fixed Various "toString" Method Issues + Relative Tests. --- .../Cards/Building/Effects/Building1.java | 2 +- .../Cards/Building/Effects/Building11.java | 2 +- .../ingsw/gc14/Model/Cards/BuildingCard.java | 2 +- .../Cards/TribeCards/Characters/Builder.java | 2 +- .../Cards/TribeCards/Characters/Hunter.java | 2 +- .../Cards/TribeCards/Characters/Shaman.java | 2 +- .../polimi/ingsw/gc14/Model/PlayableCard.java | 2 +- .../ingsw/gc14/View/TUI/AsciiTable.java | 2 +- .../polimi/ingsw/gc14/Model/PlayerTest.java | 25 +++++++++++++++++-- 9 files changed, 31 insertions(+), 10 deletions(-) diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building1.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building1.java index 6bb3579..e0b064c 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building1.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building1.java @@ -46,6 +46,6 @@ public class Building1 extends BuildingCard { @Override public String toString() { - return super.toString() + " Icon: " + this.icon.toString(); + return super.toString() + " Icon: " + this.icon.toString().charAt(0); } } diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building11.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building11.java index 59f86c0..543adcf 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building11.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building11.java @@ -70,6 +70,6 @@ public class Building11 extends BuildingCard { @Override public String toString() { - return super.toString() + " Icon: " + this.icon.toString(); + return super.toString() + " Icon: " + this.icon.toString().charAt(0) + " MP: " + this.PrestigeMul; } } \ No newline at end of file diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/BuildingCard.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/BuildingCard.java index 2167441..24e41a1 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/BuildingCard.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/BuildingCard.java @@ -182,6 +182,6 @@ public class BuildingCard extends PlayableCard implements Cloneable , BuildingEf */ @Override public String toString() { - return "Era:"+String.valueOf(getEra())+" P:"+String.valueOf(getPrice())+" PR:"+String.valueOf(getPrestigeValue()); + return "⎕:" + " ID:" + String.valueOf(getEffectId())+ " $:"+String.valueOf(getPrice())+" PV:"+String.valueOf(getPrestigeValue()); } } diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Builder.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Builder.java index 0bbacc0..efdc01d 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Builder.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Builder.java @@ -87,7 +87,7 @@ public class Builder extends Character */ @Override public String toString() { - return super.toString() + " RV: " + String.valueOf(reductionValue) + " PV: " + String.valueOf(prestigeValue); + return super.toString() + " RV:" + String.valueOf(reductionValue) + " PV:" + String.valueOf(prestigeValue); } /** diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Hunter.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Hunter.java index 18977a0..15aa9fe 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Hunter.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Hunter.java @@ -49,7 +49,7 @@ public class Hunter extends Character { public String toString() { String toPrint = super.toString(); if(this.icon){ - toPrint += " 🏹"; + toPrint += " I"; } return toPrint; } diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Shaman.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Shaman.java index f70dc94..158a1de 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Shaman.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Characters/Shaman.java @@ -49,7 +49,7 @@ public class Shaman extends Character { */ @Override public String toString() { - return super.toString() + " ★: " + String.valueOf(icon); + return super.toString() + " *:" + String.valueOf(icon); } /** diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/PlayableCard.java b/src/main/java/it/polimi/ingsw/gc14/Model/PlayableCard.java index 0382754..09439cb 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/PlayableCard.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/PlayableCard.java @@ -43,6 +43,6 @@ public abstract class PlayableCard implements Serializable { */ @Override public String toString() { - return "⌛:"+String.valueOf(Era); + return "⎕:"; } } diff --git a/src/main/java/it/polimi/ingsw/gc14/View/TUI/AsciiTable.java b/src/main/java/it/polimi/ingsw/gc14/View/TUI/AsciiTable.java index f3258a2..e26018c 100644 --- a/src/main/java/it/polimi/ingsw/gc14/View/TUI/AsciiTable.java +++ b/src/main/java/it/polimi/ingsw/gc14/View/TUI/AsciiTable.java @@ -45,6 +45,6 @@ public class AsciiTable { private String rpad(String s, int w) { if (s.length() >= w) return s.substring(0, w); - return s + " ".repeat(w - s.length()) + "\t"; + return s + " ".repeat(w - s.length()); } } \ No newline at end of file diff --git a/src/test/java/it/polimi/ingsw/gc14/Model/PlayerTest.java b/src/test/java/it/polimi/ingsw/gc14/Model/PlayerTest.java index d0544df..31cd1b0 100644 --- a/src/test/java/it/polimi/ingsw/gc14/Model/PlayerTest.java +++ b/src/test/java/it/polimi/ingsw/gc14/Model/PlayerTest.java @@ -1,6 +1,6 @@ package it.polimi.ingsw.gc14.Model; -import it.polimi.ingsw.gc14.Model.Cards.Building.Effects.Building1; +import it.polimi.ingsw.gc14.Model.Cards.Building.Effects.*; import it.polimi.ingsw.gc14.Model.Cards.BuildingCard; import it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType; import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters.*; @@ -218,6 +218,27 @@ class PlayerTest { p.buildingCards.add(new BuildingCard(2, 1,2, 5)); p.buildingCards.add(new BuildingCard(2, 2,3, 6)); p.buildingCards.add(new Building1(2, 5, 5, CharacterType.INVENTOR)); - System.out.println(p.toString()); + p.buildingCards.add(new Building1(2, 5, 5, CharacterType.SHAMAN)); + p.buildingCards.add(new Building11(1, 5, 7, CharacterType.ARTIST , 3)); + //System.out.println(p.toString()); + assertEquals(""+ + "╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗\n" + + "║ test_usr ║\n" + + "├═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════┤\n" + + "║ RESOURCES: ║\n" + + "║ Food: 7 ║\n" + + "║ Prestige: 15 ║\n" + + "├═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════┤\n" + + "║ CHARACTERS: ║\n" + + "║ Artists: [⎕:, ⎕:, ⎕:, ⎕:, ⎕:, ⎕:, ⎕:] ║\n" + + "║ Builders: [⎕: RV:5 PV:1] ║\n" + + "║ Gatherers: [⎕:] ║\n" + + "║ Shamans: [⎕: *:3, ⎕: *:3] ║\n" + + "║ Inventors: [⎕: I_ID:1] ║\n" + + "║ Hunters: [⎕: I, ⎕:] ║\n" + + "├═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════┤\n" + + "║ BUILDING CARDS: ║\n" + + "║ Buildings: [⎕: ID:2 $:2 PV:5, ⎕: ID:2 $:3 PV:6, ⎕: ID:1 $:5 PV:5 Icon: I, ⎕: ID:1 $:5 PV:5 Icon: S, ⎕: ID:11 $:5 PV:7 Icon: A MP: 3]║\n" + + "╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝", p.toString()); } } \ No newline at end of file