Merge pull request #50 from TiagoRG/dev-tiagorg
[LSD] pratica06 guide added [LSD] pratica06 part1 added (with enable and direction selector included) [LABI] tema04 xml reader added [POO] aula07 ex3 added (not fully working, check TODO.md for more)
This commit is contained in:
commit
c6879c2e29
|
@ -0,0 +1,13 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<conf>
|
||||||
|
<interval>1</interval>
|
||||||
|
<output>
|
||||||
|
<csv active="true" separator="," />
|
||||||
|
<xml active="false" />
|
||||||
|
</output>
|
||||||
|
<monitor>
|
||||||
|
<cpu active="true" />
|
||||||
|
<network active="true" />
|
||||||
|
<ram active="false" />
|
||||||
|
</monitor>
|
||||||
|
</conf>
|
|
@ -0,0 +1,7 @@
|
||||||
|
time,cpu,ram,network
|
||||||
|
1679769801.7018511,20.0,,38943828
|
||||||
|
1679769802.702516,28.0,,38946821
|
||||||
|
1679769803.7031012,7.4,,38948575
|
||||||
|
1679769804.7034643,11.8,,38949179
|
||||||
|
1679769805.7041101,8.0,,38951189
|
||||||
|
1679769806.704759,7.1,,38951668
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
import csv
|
||||||
|
import time
|
||||||
|
import psutil
|
||||||
|
from lxml import etree
|
||||||
|
|
||||||
|
|
||||||
|
def main(args=None):
|
||||||
|
xml = etree.parse('../datafiles/conf.xml')
|
||||||
|
root = xml.getroot()
|
||||||
|
|
||||||
|
delimiter = root.findall("./output/csv")[0].attrib["separator"]
|
||||||
|
monitor_cpu = root.findall("./monitor/cpu")[0].attrib["active"]
|
||||||
|
monitor_ram = root.findall("./monitor/ram")[0].attrib["active"]
|
||||||
|
monitor_network = root.findall("./monitor/network")[0].attrib["active"]
|
||||||
|
|
||||||
|
with open("../datafiles/monitor.csv", "w") as f:
|
||||||
|
writer = csv.DictWriter(f, delimiter=delimiter, fieldnames=["time", "cpu", "ram", "network"])
|
||||||
|
|
||||||
|
writer.writeheader()
|
||||||
|
|
||||||
|
while True:
|
||||||
|
cpu = psutil.cpu_percent() if monitor_cpu == "true" else ""
|
||||||
|
ram = psutil.virtual_memory().percent if monitor_ram == "true" else ""
|
||||||
|
network = psutil.net_io_counters().bytes_sent if monitor_network == "true" else ""
|
||||||
|
writer.writerow({"time": time.time(), "cpu": cpu, "ram": ram, "network": network})
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
|
@ -0,0 +1,18 @@
|
||||||
|
from lxml import etree
|
||||||
|
|
||||||
|
|
||||||
|
def main(args=None):
|
||||||
|
xml = etree.parse('../datafiles/conf.xml')
|
||||||
|
root = xml.getroot()
|
||||||
|
print(root.tag)
|
||||||
|
print_childs(root)
|
||||||
|
|
||||||
|
|
||||||
|
def print_childs(root):
|
||||||
|
for child in root:
|
||||||
|
print(child.tag, child.attrib, child.text)
|
||||||
|
print_childs(child)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
|
@ -0,0 +1,22 @@
|
||||||
|
package aula07.ex3;
|
||||||
|
|
||||||
|
public class Ball extends MovableObject {
|
||||||
|
private String color;
|
||||||
|
|
||||||
|
public Ball(double initialX, double initialY, String color) {
|
||||||
|
super(initialX, initialY);
|
||||||
|
setColor(color);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Ball(String color) {
|
||||||
|
this(0, 0, color);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getColor() {
|
||||||
|
return this.color;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setColor(String color) {
|
||||||
|
this.color = color;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,80 @@
|
||||||
|
package aula07.ex3;
|
||||||
|
|
||||||
|
public class Game {
|
||||||
|
private final Team team1;
|
||||||
|
private final Team team2;
|
||||||
|
private int team1Goals;
|
||||||
|
private int team2Goals;
|
||||||
|
private final Ball ball;
|
||||||
|
private final double gameDuration;
|
||||||
|
private double timeElapsed;
|
||||||
|
|
||||||
|
public Game(Team team1, Team team2, Ball ball, double gameDuration) {
|
||||||
|
this.team1 = team1;
|
||||||
|
this.team2 = team2;
|
||||||
|
this.ball = ball;
|
||||||
|
this.gameDuration = gameDuration * 60;
|
||||||
|
this.timeElapsed = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getGameDuration() {
|
||||||
|
return this.gameDuration;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getTimeElapsed() {
|
||||||
|
return this.timeElapsed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Team getTeam1() {
|
||||||
|
return this.team1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Team getTeam2() {
|
||||||
|
return this.team2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void start() {
|
||||||
|
new Thread(() -> {
|
||||||
|
while (this.timeElapsed < this.gameDuration) {
|
||||||
|
this.timeElapsed += 0.1;
|
||||||
|
if (this.timeElapsed % 60 == 0)
|
||||||
|
System.out.printf("Tempo: %d minutos", (int) this.timeElapsed / 60);
|
||||||
|
try {
|
||||||
|
Thread.sleep(100);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).start();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void moveBall(double newX, double newY) {
|
||||||
|
this.ball.move(newX, newY);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void moveRobot(int robotId, double newX, double newY) {
|
||||||
|
for (Robot r : this.team1.getRobots())
|
||||||
|
if (r.getId() == robotId)
|
||||||
|
r.move(newX, newY);
|
||||||
|
for (Robot r : this.team2.getRobots())
|
||||||
|
if (r.getId() == robotId)
|
||||||
|
r.move(newX, newY);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addGoal(Team team, int scorerId) {
|
||||||
|
if (team == this.team1) {
|
||||||
|
this.team1Goals++;
|
||||||
|
this.team1.increaseGoalsScored(scorerId);
|
||||||
|
this.team2.increaseGoalsTaken();
|
||||||
|
} else {
|
||||||
|
this.team2Goals++;
|
||||||
|
this.team2.increaseGoalsScored(scorerId);
|
||||||
|
this.team1.increaseGoalsTaken();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return this.team1.getName() + " vs " + this.team2.getName() + ": " + this.team1Goals + "-" + this.team2Goals + "\nBola: " + this.ball.getColor();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,187 @@
|
||||||
|
package aula07.ex3;
|
||||||
|
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
public class Main {
|
||||||
|
public static final Scanner sin = new Scanner(System.in);
|
||||||
|
public static Team[] teams;
|
||||||
|
public static Game[] games;
|
||||||
|
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
while (true) {
|
||||||
|
int option = menu();
|
||||||
|
switch (option) {
|
||||||
|
case 0 -> {
|
||||||
|
sin.close();
|
||||||
|
System.exit(0);
|
||||||
|
}
|
||||||
|
case 1 -> createTeam();
|
||||||
|
case 2 -> listTeams();
|
||||||
|
case 3 -> listRobots();
|
||||||
|
case 4 -> createGame();
|
||||||
|
case 5 -> listGames();
|
||||||
|
default -> System.out.println("Opção inválida!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void listGames() {
|
||||||
|
for (Game g : games)
|
||||||
|
System.out.println(g);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void createGame() {
|
||||||
|
if (teams == null || teams.length < 2) {
|
||||||
|
System.out.println("Não existem equipas suficientes para criar um jogo!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
System.out.println("Equipas:");
|
||||||
|
for (int i = 0; i < teams.length; i++)
|
||||||
|
System.out.println((i+1) + " - " + teams[i].getName());
|
||||||
|
System.out.print("Escolha a equipa 1: ");
|
||||||
|
int team1Id = Integer.parseInt(sin.nextLine());
|
||||||
|
System.out.print("Escolha a equipa 2: ");
|
||||||
|
int team2Id = Integer.parseInt(sin.nextLine());
|
||||||
|
Team team1 = teams[team1Id-1];
|
||||||
|
Team team2 = teams[team2Id-1];
|
||||||
|
System.out.println("Bola para o jogo:");
|
||||||
|
System.out.print("Cor da bola: ");
|
||||||
|
String color = sin.nextLine();
|
||||||
|
System.out.print("X inicial: ");
|
||||||
|
String xString = sin.nextLine();
|
||||||
|
double ballX = Double.parseDouble(xString.equals("") ? "0" : xString);
|
||||||
|
System.out.print("Y inicial: ");
|
||||||
|
String yString = sin.nextLine();
|
||||||
|
double ballY = Double.parseDouble(yString.equals("") ? "0" : yString);
|
||||||
|
Ball ball = new Ball(ballX, ballY, color);
|
||||||
|
System.out.println("Duração do jogo (minutos): ");
|
||||||
|
String durationString = sin.nextLine();
|
||||||
|
double duration = Double.parseDouble(durationString.equals("") ? "90" : durationString);
|
||||||
|
Game game = new Game(team1, team2, ball, duration);
|
||||||
|
if (games == null)
|
||||||
|
games = new Game[] { game };
|
||||||
|
else {
|
||||||
|
Game[] newGames = new Game[games.length+1];
|
||||||
|
System.arraycopy(games, 0, newGames, 0, games.length);
|
||||||
|
newGames[games.length] = game;
|
||||||
|
games = newGames;
|
||||||
|
}
|
||||||
|
game.start();
|
||||||
|
new Thread(() -> {
|
||||||
|
while (game.getTimeElapsed() < game.getGameDuration()) {
|
||||||
|
System.out.println("1 - Mover bola");
|
||||||
|
System.out.println("2 - Mover robot");
|
||||||
|
System.out.println("3 - Adicionar golo");
|
||||||
|
System.out.print("Opção: ");
|
||||||
|
int option = Integer.parseInt(sin.nextLine());
|
||||||
|
swit : switch (option) {
|
||||||
|
case 1 -> {
|
||||||
|
System.out.print("Novo X: ");
|
||||||
|
double x = Double.parseDouble(sin.nextLine());
|
||||||
|
System.out.print("Novo Y: ");
|
||||||
|
double y = Double.parseDouble(sin.nextLine());
|
||||||
|
ball.move(x, y);
|
||||||
|
}
|
||||||
|
case 2 -> {
|
||||||
|
System.out.println("Robots:");
|
||||||
|
for (Robot r : game.getTeam1().getRobots())
|
||||||
|
System.out.println(r);
|
||||||
|
for (Robot r : game.getTeam2().getRobots())
|
||||||
|
System.out.println(r);
|
||||||
|
System.out.print("Escolha o ID do robot: ");
|
||||||
|
int robotId = Integer.parseInt(sin.nextLine());
|
||||||
|
System.out.print("Novo X: ");
|
||||||
|
double x = Double.parseDouble(sin.nextLine());
|
||||||
|
System.out.print("Novo Y: ");
|
||||||
|
double y = Double.parseDouble(sin.nextLine());
|
||||||
|
game.moveRobot(robotId, x, y);
|
||||||
|
}
|
||||||
|
case 3 -> {
|
||||||
|
System.out.println("Robots:");
|
||||||
|
System.out.println(game.getTeam1());
|
||||||
|
System.out.println(game.getTeam2());
|
||||||
|
|
||||||
|
System.out.print("Escolha o ID do robot que marcou: ");
|
||||||
|
int robotId = Integer.parseInt(sin.nextLine());
|
||||||
|
for (Robot r : game.getTeam1().getRobots())
|
||||||
|
if (r.getId() == robotId) {
|
||||||
|
game.addGoal(game.getTeam1(), robotId);
|
||||||
|
break swit;
|
||||||
|
}
|
||||||
|
for (Robot r : game.getTeam2().getRobots())
|
||||||
|
if (r.getId() == robotId) {
|
||||||
|
game.addGoal(game.getTeam2(), robotId);
|
||||||
|
break swit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
default -> System.out.println("Opção inválida!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void listRobots() {
|
||||||
|
if (teams == null || teams.length == 0) {
|
||||||
|
System.out.println("Não existem equipas!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (Team t : teams) {
|
||||||
|
System.out.println("Equipa " + t.getName());
|
||||||
|
for (Robot r : t.getRobots())
|
||||||
|
System.out.println(r);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void listTeams() {
|
||||||
|
if (teams == null || teams.length == 0) {
|
||||||
|
System.out.println("Não existem equipas!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (Team t : teams)
|
||||||
|
System.out.println(t);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void createTeam() {
|
||||||
|
System.out.print("Nome da equipa: ");
|
||||||
|
String name = sin.nextLine();
|
||||||
|
System.out.print("Treinador: ");
|
||||||
|
String coach = sin.nextLine();
|
||||||
|
System.out.print("Número de robots: ");
|
||||||
|
int nRobots = Integer.parseInt(sin.nextLine());
|
||||||
|
Robot[] robots = new Robot[nRobots];
|
||||||
|
for (int i = 0; i < nRobots; i++) {
|
||||||
|
System.out.println("Robot " + (i+1));
|
||||||
|
System.out.print("\n1 - GoalKeeper\n2 - Defender\n3 - Midfielder\n4 - Striker\nPosição: ");
|
||||||
|
PlayerPosition position = PlayerPosition.getPositionById(Integer.parseInt(sin.nextLine()));
|
||||||
|
System.out.print("X inicial: ");
|
||||||
|
String xString = sin.nextLine();
|
||||||
|
double x = Double.parseDouble(xString.equals("") ? "0" : xString);
|
||||||
|
System.out.print("Y inicial: ");
|
||||||
|
String yString = sin.nextLine();
|
||||||
|
double y = Double.parseDouble(yString.equals("") ? "0" : yString);
|
||||||
|
robots[i] = new Robot(x, y, position);
|
||||||
|
}
|
||||||
|
Team team = new Team(name, coach, robots);
|
||||||
|
if (teams == null)
|
||||||
|
teams = new Team[] {team};
|
||||||
|
else {
|
||||||
|
Team[] newTeams = new Team[teams.length+1];
|
||||||
|
System.arraycopy(teams, 0, newTeams, 0, teams.length);
|
||||||
|
newTeams[teams.length] = team;
|
||||||
|
teams = newTeams;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int menu() {
|
||||||
|
System.out.println("1. Criar equipa");
|
||||||
|
System.out.println("2. Listar equipas");
|
||||||
|
System.out.println("3. Listar robots");
|
||||||
|
System.out.println("4. Criar jogo");
|
||||||
|
System.out.println("5. Listar jogos");
|
||||||
|
System.out.println("0. Sair");
|
||||||
|
System.out.print("> ");
|
||||||
|
|
||||||
|
return Integer.parseInt(sin.nextLine());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
package aula07.ex3;
|
||||||
|
|
||||||
|
public class MovableObject {
|
||||||
|
protected double x;
|
||||||
|
protected double y;
|
||||||
|
protected double distanceTravelled;
|
||||||
|
|
||||||
|
protected MovableObject(double initialX, double initialY) {
|
||||||
|
this.x = initialX;
|
||||||
|
this.y = initialY;
|
||||||
|
this.distanceTravelled = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected MovableObject() {
|
||||||
|
this(0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void move(double newX, double newY) {
|
||||||
|
increaseDistanceTravelled(calculateDistanceTravelled(newX, newY));
|
||||||
|
this.x = newX;
|
||||||
|
this.y = newY;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void increaseDistanceTravelled(double distance) {
|
||||||
|
this.distanceTravelled += distance;
|
||||||
|
}
|
||||||
|
|
||||||
|
private double calculateDistanceTravelled(double newX, double newY) {
|
||||||
|
return Math.sqrt(Math.pow((this.x - newX), 2) + Math.pow(this.y - newY, 2));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
package aula07.ex3;
|
||||||
|
|
||||||
|
public enum PlayerPosition {
|
||||||
|
GoalKeeper,
|
||||||
|
Striker,
|
||||||
|
Defender,
|
||||||
|
MidFielder;
|
||||||
|
|
||||||
|
public static PlayerPosition getPositionById(int id) {
|
||||||
|
return switch (id) {
|
||||||
|
case 1 -> GoalKeeper;
|
||||||
|
case 2 -> Striker;
|
||||||
|
case 3 -> Defender;
|
||||||
|
case 4 -> MidFielder;
|
||||||
|
default -> null;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public String toString() {
|
||||||
|
return switch (this) {
|
||||||
|
case GoalKeeper -> "GoalKeeper";
|
||||||
|
case Striker -> "Striker";
|
||||||
|
case Defender -> "Defender";
|
||||||
|
case MidFielder -> "MidFielder";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,42 @@
|
||||||
|
package aula07.ex3;
|
||||||
|
|
||||||
|
public class Robot extends MovableObject {
|
||||||
|
public static int currentID = 0;
|
||||||
|
private final int id;
|
||||||
|
private PlayerPosition playerPosition;
|
||||||
|
private int goalsScored = 0;
|
||||||
|
|
||||||
|
public Robot(double initialX, double initialY, PlayerPosition playerPosition) {
|
||||||
|
super(initialX, initialY);
|
||||||
|
this.id = ++Robot.currentID;
|
||||||
|
setPlayerPosition(playerPosition);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Robot(PlayerPosition playerPosition) {
|
||||||
|
this(0, 0, playerPosition);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getId() {
|
||||||
|
return this.id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PlayerPosition getPlayerPosition() {
|
||||||
|
return this.playerPosition;
|
||||||
|
}
|
||||||
|
public void setPlayerPosition(PlayerPosition playerPosition) {
|
||||||
|
this.playerPosition = playerPosition;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getGoalsScored() {
|
||||||
|
return this.goalsScored;
|
||||||
|
}
|
||||||
|
public void increaseGoalsScored() {
|
||||||
|
this.goalsScored++;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return String.format("Robot %d (%s) at (%.2f, %.2f) with %.2f travelled distance and %d goals scored",
|
||||||
|
this.id, this.playerPosition, this.x, this.y, this.distanceTravelled, this.goalsScored);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,4 @@
|
||||||
|
# TODO's
|
||||||
|
|
||||||
|
- [ ] Fix the timer (not working asynchronically)
|
||||||
|
- [ ] Properly test the program to find out what actually needs to be done :skull:
|
|
@ -0,0 +1,85 @@
|
||||||
|
package aula07.ex3;
|
||||||
|
|
||||||
|
public class Team {
|
||||||
|
private final String name;
|
||||||
|
private String coach;
|
||||||
|
private int goalsScored = 0;
|
||||||
|
private int goalsTaken = 0;
|
||||||
|
private Robot[] robots;
|
||||||
|
|
||||||
|
public Team(String name, String coach, Robot[] robots) {
|
||||||
|
this.name = name;
|
||||||
|
this.coach = coach;
|
||||||
|
this.setRobots(robots);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCoach() {
|
||||||
|
return this.coach;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCoach(String coach) {
|
||||||
|
this.coach = coach;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getGoalsScored() {
|
||||||
|
return this.goalsScored;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void increaseGoalsScored(int scorerId) {
|
||||||
|
for (Robot r : this.robots)
|
||||||
|
if (r.getId() == scorerId)
|
||||||
|
r.increaseGoalsScored();
|
||||||
|
this.goalsScored++;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getGoalsTaken() {
|
||||||
|
return this.goalsTaken;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void increaseGoalsTaken() {
|
||||||
|
this.goalsTaken++;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Robot[] getRobots() {
|
||||||
|
return this.robots;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRobots(Robot[] robots) {
|
||||||
|
this.robots = robots;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addRobot(Robot robot) {
|
||||||
|
if (this.robots == null)
|
||||||
|
this.setRobots(new Robot[] {robot});
|
||||||
|
else {
|
||||||
|
Robot[] newRobots = new Robot[this.robots.length+1];
|
||||||
|
System.arraycopy(this.robots, 0, newRobots, 0, this.robots.length);
|
||||||
|
newRobots[newRobots.length-1] = robot;
|
||||||
|
this.setRobots(newRobots);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeRobot(Robot robot) {
|
||||||
|
Robot[] newRobots = new Robot[this.robots.length-1];
|
||||||
|
int index = 0;
|
||||||
|
for (Robot r : this.robots)
|
||||||
|
if (r.getId() != robot.getId()) {
|
||||||
|
newRobots[index] = r;
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
this.setRobots(newRobots);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
StringBuilder robotsString = new StringBuilder();
|
||||||
|
for (Robot r : this.robots)
|
||||||
|
robotsString.append("\n\t\t").append(r.toString());
|
||||||
|
return String.format("Team %s\n\tCoach: %s\n\tGoals Scored: %d\n\tGoals Taken: %d\n\tRobots:%s",
|
||||||
|
this.name, this.coach, this.goalsScored, this.goalsTaken, robotsString);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue