import java.util.ArrayList;
import java.util.Comparator;
import java.util.Optional;
import java.util.Scanner;
public class Race {
ArrayList members = new ArrayList<>();
Scanner scanner;
int maxMember;
int timeRace;
int minLenVehicleTitle = 3;
int maxLenVehicleTitle = 10;
int minLenVehicleSpeed = 0;
int maxLenVehicleSpeed = 250;
public Race(int maxMember, int timeRace){
this.maxMember = maxMember;
this.timeRace = timeRace;
System.out.println("ÐеобÑ
одимо добавиÑÑ ÑÑаÑÑников Ð´Ð»Ñ Ð³Ð¾Ð½ÐºÐ¸.\n");
scanner = new Scanner(System.in);
}
public void start() {
System.out.println("РезÑлÑÑаÑ..");
System.out.println("..");
System.out.println("....");
for (Vehicle vh: members)
{
int range = vh.getSpeed() * timeRace;
vh.setRange(range);
System.out.printf("%sâ%d - ÐвÑÐ¾Ð¼Ð¾Ð±Ð¸Ð»Ñ \"%s\"%s , пÑоÑел: %d км\n",
Utils.GREEN, vh.getNumber(), vh.getTitle(),Utils.RESET, vh.getRange());
}
System.out.println("-----------------------------------\n");
Optional c = members.stream().max(Comparator.comparing(Vehicle::getRange));
if(c.isPresent()){
Vehicle vh = c.get();
System.out.printf("%sâ%d%s - Ð¡Ð°Ð¼Ð°Ñ Ð±ÑÑÑÑÐ°Ñ Ð¼Ð°Ñина %s\"%s\"%s, пÑойденое ÑаÑÑоÑние %d км",
Utils.GREEN, vh.getNumber(), Utils.RESET, Utils.GREEN, vh.getTitle(), Utils.RESET, vh.getRange());
}
else{
System.out.print("ÐобедиÑелей неÑ!");
}
}
public void initMembers(){
String title = "";
int speed = 0;
while (members.size() < maxMember){
int numMember = members.size() +1;
if(title.isEmpty()){
System.out.printf("- ÐведиÑе название авÑÐ¾Ð¼Ð¾Ð±Ð¸Ð»Ñ â%s\n", numMember);
String titleRaw = scanner.nextLine();
if(titleRaw.length() < minLenVehicleTitle || titleRaw.length() > maxLenVehicleTitle){
System.out.printf("%sÐепÑавилÑное название авÑомобилÑ, минималÑÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ %d, а макÑималÑÐ½Ð°Ñ %d Ñимволов.%s\n",
Utils.RED, minLenVehicleTitle, maxLenVehicleTitle, Utils.RESET);
continue;
}
else{
title = titleRaw.substring(0,1).toUpperCase() + titleRaw.substring(1);
}
}
System.out.printf("- ÐведиÑе ÑкоÑоÑÑÑ Ð°Ð²ÑÐ¾Ð¼Ð¾Ð±Ð¸Ð»Ñ â%s\n", numMember);
if (scanner.hasNextInt()){
int speedRaw = scanner.nextInt();
if(speedRaw < minLenVehicleSpeed || speedRaw > maxLenVehicleSpeed){
System.out.printf("%sСкоÑоÑÑÑ Ð½ÐµÐ¿ÑавилÑнаÑ, попÑобÑйÑе еÑе Ñаз.%s\n", Utils.RED, Utils.RESET);
continue;
}
else{
speed = speedRaw;
scanner.nextLine();
}
}
else{
System.out.printf("%sÐепÑавилÑÐ½Ð°Ñ ÑкоÑоÑÑÑ.%s\n", Utils.RED, Utils.RESET);
scanner.nextLine();
continue;
}
members.add(new Vehicle(numMember, title, speed));
System.out.printf("%sÐвÑÐ¾Ð¼Ð¾Ð±Ð¸Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½!%s\n\n", Utils.GREEN, Utils.RESET);
title = "";
}
System.out.printf("ÐвÑомобилей в гонке - %d\n", members.size());
members.sort(Comparator.comparing(Vehicle::getNumber));
for (Vehicle vh: members)
{
System.out.printf("%sâ%d ÐвÑÐ¾Ð¼Ð¾Ð±Ð¸Ð»Ñ \"%s\"%s | ÑкоÑоÑÑÑ: %d\n", Utils.GREEN, vh.getNumber(), vh.getTitle(),Utils.RESET, vh.getSpeed());
}
System.out.println("-----------------------------------\n");
}
}