Merge pull request #61 from rubenpirreram/TUI

Fix: Tui adapted to new input case
This commit is contained in:
rubenpirreram
2026-05-01 17:41:11 +02:00
committed by GitHub
9 changed files with 56 additions and 58 deletions
@@ -9,13 +9,15 @@ import java.util.Scanner;
public class ClientLauncherTUI { public class ClientLauncherTUI {
//TODO Javadoc //TODO Javadoc
TUI view;
public void main() throws InterruptedException { public void main() throws InterruptedException {
TUI view=new TUI(null); view=new TUI(null);
ClientController controller = new ClientController(view); ClientController controller = new ClientController(view);
Scanner scanner = new Scanner(System.in); Scanner scanner = new Scanner(System.in);
System.out.println("Selezionare nome utente: "); System.out.println("Selezionare nome utente: ");
String username = scanner.next(); String username = scanner.next();
view.setUsername(username);
System.out.println("Selezionare numero di giocatori desiderato: "); System.out.println("Selezionare numero di giocatori desiderato: ");
int proposedNumPlayers = scanner.nextInt(); int proposedNumPlayers = scanner.nextInt();
System.out.println("Selezionare RMI[0] o TCP[1]: "); System.out.println("Selezionare RMI[0] o TCP[1]: ");
@@ -70,9 +72,10 @@ public class ClientLauncherTUI {
private void getInput(Scanner scanner, ClientController controller, String username) { private void getInput(Scanner scanner, ClientController controller, String username) {
String action = scanner.next(); String action = scanner.next();
int pos=-1; int pos=-1;
if(!action.equals("8")) { if(!action.equals("8")&&!action.equals("A")&&!action.equals("B")&&!action.equals("C")&&!action.equals("D")) {
try try
{ {
System.out.println("Insert the required position:");
pos = scanner.nextInt(); pos = scanner.nextInt();
} }
catch(Exception e) catch(Exception e)
@@ -89,6 +92,9 @@ public class ClientLauncherTUI {
case "6" -> controller.pickOptionalTribeCard(username, pos); case "6" -> controller.pickOptionalTribeCard(username, pos);
case "7" -> controller.pickOptionalBuildingCard(username, pos); case "7" -> controller.pickOptionalBuildingCard(username, pos);
case "8" -> controller.noOptionalCard(username); case "8" -> controller.noOptionalCard(username);
case "A" -> view.fullRender();
case "B" -> view.renderBoard();
case "C" -> view.renderPlayer();
} }
return; return;
@@ -62,7 +62,7 @@ public abstract class EventCard extends TribeCard {
*/ */
@Override @Override
public String toString() { public String toString() {
return super.toString()+" "+type.toString(); return super.toString()+"(Event)"+type.toString();
} }
/** /**
@@ -77,7 +77,7 @@ public abstract class EventCard extends TribeCard {
*/ */
@Override @Override
public String toStringBoard() { public String toStringBoard() {
return super.toString()+" "+type.toString(); return super.toString()+"(Event)"+type.toString();
} }
/** /**
@@ -793,9 +793,10 @@ public class Game implements Serializable {
List<String> stringUpOffer=new ArrayList<>(); List<String> stringUpOffer=new ArrayList<>();
List<String> stringDownOffer=new ArrayList<>(); List<String> stringDownOffer=new ArrayList<>();
int index=0;
for(Map.Entry<Slot,Player> entry:slotMap.entrySet()) for(Map.Entry<Slot,Player> entry:slotMap.entrySet())
{ {
stringDownOffer.add(entry.getKey().toStringTUI()); stringDownOffer.add((index++)+"."+entry.getKey().toStringTUI());
if(entry.getValue()!=null) if(entry.getValue()!=null)
stringUpOffer.add(entry.getValue().getUserName()); stringUpOffer.add(entry.getValue().getUserName());
else else
@@ -813,11 +814,11 @@ public class Game implements Serializable {
{ {
if(i<getUpperListTribeCards().size()) if(i<getUpperListTribeCards().size())
{ {
stringUpperListTribe.add(getUpperListTribeCards().get(i).toStringBoard()); stringUpperListTribe.add(i+"-"+getUpperListTribeCards().get(i).toStringBoard());
} }
if(i<getLowerListTribeCards().size()) if(i<getLowerListTribeCards().size())
{ {
stringLowerListTribe.add(getLowerListTribeCards().get(i).toStringBoard()); stringLowerListTribe.add(i+"-"+getLowerListTribeCards().get(i).toStringBoard());
} }
} }
var BuildTableUpper = new AsciiTable(BorderStyle.UNICODE,1); var BuildTableUpper = new AsciiTable(BorderStyle.UNICODE,1);
@@ -829,11 +830,11 @@ public class Game implements Serializable {
{ {
if(i<getUpperListBuilding().size()) if(i<getUpperListBuilding().size())
{ {
BuildTableUpper.addRow(getUpperListBuilding().get(i).toString()); BuildTableUpper.addRow(i+"-"+getUpperListBuilding().get(i).toString());
} }
if(i<getLowerListBuilding().size()) if(i<getLowerListBuilding().size())
{ {
BuildTableLower.addRow(getLowerListBuilding().get(i).toString()); BuildTableLower.addRow(i+"-"+getLowerListBuilding().get(i).toString());
} }
} }
stringUpperListTribe.forEach(x->TribeTableUpper.addRow(x)); stringUpperListTribe.forEach(x->TribeTableUpper.addRow(x));
@@ -58,24 +58,19 @@ public class Order2 extends OrderLogicCard {
var table = new AsciiTable(BorderStyle.UNICODE, 2); var table = new AsciiTable(BorderStyle.UNICODE, 2);
List<String> stringUp=new ArrayList<>(); List<String> stringUp=new ArrayList<>();
List<String> stringDown=new ArrayList<>();
for(int i=0;i<2;i++) for(int i=0;i<2;i++)
{ {
try { try {
playerList.get(i);
stringUp.add(i+". "+playerList.get(i).player.getUserName());
if(playerList.get(i).played) if(playerList.get(i).played)
stringDown.add(" Placed"); stringUp.add(" ");
else else
stringDown.add(" Not Placed"); stringUp.add(i+". "+playerList.get(i).player.getUserName());
} }
catch (IndexOutOfBoundsException e) { catch (IndexOutOfBoundsException e) {
stringUp.add(""); stringUp.add("");
stringDown.add("");
} }
} }
table.addRow(stringUp); table.addRow(stringUp);
table.addRow(stringDown);
List<String> stringList=new ArrayList<>(); List<String> stringList=new ArrayList<>();
stringList.add("+1 Food"); stringList.add("+1 Food");
@@ -60,24 +60,19 @@ public class Order3 extends OrderLogicCard {
var table = new AsciiTable(BorderStyle.UNICODE, 3); var table = new AsciiTable(BorderStyle.UNICODE, 3);
List<String> stringUp=new ArrayList<>(); List<String> stringUp=new ArrayList<>();
List<String> stringDown=new ArrayList<>();
for(int i=0;i<3;i++) for(int i=0;i<3;i++)
{ {
try { try {
playerList.get(i);
stringUp.add(i+". "+playerList.get(i).player.getUserName());
if(playerList.get(i).played) if(playerList.get(i).played)
stringDown.add(" Placed"); stringUp.add(" ");
else else
stringDown.add(" Not Placed"); stringUp.add(i+". "+playerList.get(i).player.getUserName());
} }
catch (IndexOutOfBoundsException e) { catch (IndexOutOfBoundsException e) {
stringUp.add(""); stringUp.add("");
stringDown.add("");
} }
} }
table.addRow(stringUp); table.addRow(stringUp);
table.addRow(stringDown);
List<String> stringList=new ArrayList<>(); List<String> stringList=new ArrayList<>();
@@ -66,24 +66,19 @@ public class Order4 extends OrderLogicCard {
var table = new AsciiTable(BorderStyle.UNICODE, 4); var table = new AsciiTable(BorderStyle.UNICODE, 4);
List<String> stringUp=new ArrayList<>(); List<String> stringUp=new ArrayList<>();
List<String> stringDown=new ArrayList<>();
for(int i=0;i<4;i++) for(int i=0;i<4;i++)
{ {
try { try {
playerList.get(i);
stringUp.add(i+". "+playerList.get(i).player.getUserName());
if(playerList.get(i).played) if(playerList.get(i).played)
stringDown.add(" Placed"); stringUp.add(" ");
else else
stringDown.add(" Not Placed"); stringUp.add(i+". "+playerList.get(i).player.getUserName());
} }
catch (IndexOutOfBoundsException e) { catch (IndexOutOfBoundsException e) {
stringUp.add(""); stringUp.add("");
stringDown.add("");
} }
} }
table.addRow(stringUp); table.addRow(stringUp);
table.addRow(stringDown);
List<String> stringList=new ArrayList<>(); List<String> stringList=new ArrayList<>();
stringList.add("+2 Food"); stringList.add("+2 Food");
@@ -67,24 +67,19 @@ public class Order5 extends OrderLogicCard {
var table = new AsciiTable(BorderStyle.UNICODE, 5); var table = new AsciiTable(BorderStyle.UNICODE, 5);
List<String> stringUp=new ArrayList<>(); List<String> stringUp=new ArrayList<>();
List<String> stringDown=new ArrayList<>();
for(int i=0;i<5;i++) for(int i=0;i<5;i++)
{ {
try { try {
playerList.get(i);
stringUp.add(i+". "+playerList.get(i).player.getUserName());
if(playerList.get(i).played) if(playerList.get(i).played)
stringDown.add(" Placed"); stringUp.add(" ");
else else
stringDown.add(" Not Placed"); stringUp.add(i+". "+playerList.get(i).player.getUserName());
} }
catch (IndexOutOfBoundsException e) { catch (IndexOutOfBoundsException e) {
stringUp.add(""); stringUp.add("");
stringDown.add("");
} }
} }
table.addRow(stringUp); table.addRow(stringUp);
table.addRow(stringDown);
List<String> stringList=new ArrayList<>(); List<String> stringList=new ArrayList<>();
stringList.add("+3 Food"); stringList.add("+3 Food");
@@ -172,7 +172,7 @@ public class Slot implements Serializable {
public String toStringTUI() public String toStringTUI()
{ {
StringBuilder s = new StringBuilder(); StringBuilder s = new StringBuilder();
s.append(this.getSlotId()+" "); //s.append(this.getSlotId()+" ");
for(int i=0;i<this.getNUpper();i++) for(int i=0;i<this.getNUpper();i++)
{ {
s.append(""); s.append("");
@@ -2,6 +2,8 @@ package it.polimi.ingsw.gc14.View.TUI;
import it.polimi.ingsw.gc14.Model.Game; import it.polimi.ingsw.gc14.Model.Game;
import it.polimi.ingsw.gc14.View.IView; import it.polimi.ingsw.gc14.View.IView;
import java.util.List;
public class TUI implements IView { public class TUI implements IView {
// dati di stato // dati di stato
@@ -23,6 +25,10 @@ public class TUI implements IView {
// punto di ingresso // punto di ingresso
public void render() public void render()
{
renderBoard();
}
public void fullRender()
{ {
try{ try{
String os = System.getProperty("os.name").toLowerCase(); String os = System.getProperty("os.name").toLowerCase();
@@ -36,7 +42,10 @@ public class TUI implements IView {
} }
catch(Exception e){ catch(Exception e){
} }
System.out.println(model.toString());
List<String>lines=List.of(model.BoardStamp().split("\n"));
List<String> lines2=List.of((PrintMenuOptions()+"\n"+model.getPlayerByUsername(username)).split("\n"));
System.out.println(model.PlayersStamp()+"\n"+ AsciiTable.sideBySide(lines,lines2,3));
} }
public void renderBoard() public void renderBoard()
@@ -53,7 +62,9 @@ public class TUI implements IView {
} }
catch(Exception e){ catch(Exception e){
} }
System.out.println(model.BoardStamp()); List<String>lines=List.of(model.BoardStamp().split("\n"));
List<String> lines2=List.of((PrintMenuOptions()+"\nYOUR HAND\n"+model.getPlayerByUsername(username)).split("\n"));
System.out.println(AsciiTable.sideBySide(lines,lines2,3));
} }
public void renderPlayer() public void renderPlayer()
{ {
@@ -69,25 +80,10 @@ public class TUI implements IView {
} }
catch(Exception e){ catch(Exception e){
} }
System.out.println(model.BoardStamp()); List<String>lines=List.of(model.PlayersStamp().split("\n"));
List<String> lines2=List.of(PrintMenuOptions().split("\n"));
System.out.println(AsciiTable.sideBySide(lines,lines2,3));
} }
public void renderMyHand()
{
try{
String os = System.getProperty("os.name").toLowerCase();
ProcessBuilder pb;
if (os.contains("win")) {
pb = new ProcessBuilder("cmd", "/c", "cls");
} else {
pb = new ProcessBuilder("clear");
}
pb.inheritIO().start().waitFor();
}
catch(Exception e){
}
System.out.println(model.getPlayerByUsername(username));
}
public void showMessage(String message) public void showMessage(String message)
{ {
@@ -100,4 +96,19 @@ public class TUI implements IView {
System.out.println(message); System.out.println(message);
} }
private String PrintMenuOptions()
{
var table=new AsciiTable(BorderStyle.ROUNDED,2);
table.addHeader( "Menu Options","Render Options");
table.addRow( List.of("1-SlotChoice(pos)","A-Full Render"));
table.addRow(List.of("2-DrawUpperTribe(pos)","B-Board Render"));
table.addRow(List.of("3-DrawUpperBuilding(pos)","C-Players Render"));
table.addRow(List.of("4-DrawLowerTribe(pos)",""));
table.addRow(List.of("5-DrawLowerBuilding(pos)",""));
table.addRow(List.of("6-PickOptionalTribe(pos)",""));
table.addRow(List.of("7-PickOptionalBuilding(pos)",""));
table.addRow(List.of("8-NoOptional",""));
return table.build();
}
} }