Коллеги, не поинимаю притензии валидатора,
что ему не нравится?
package com.javarush.task.task21.task2113;
import java.util.ArrayList;
import java.util.List;
public class Hippodrome extends Thread{
private List<Horse> horses;
static Hippodrome game;
public List<Horse> getHorses() {
return horses;
}
public static void main(String[] args) {
Horse one = new Horse("1-st", 3 ,0);
Horse two = new Horse("2-st", 3 ,0);
Horse three = new Horse("3-st", 3 ,0);
List<Horse> horses = new ArrayList<>(3);
horses.add(one);
horses.add(two);
horses.add(three);
game = new Hippodrome(horses);
game.run();
}
public Hippodrome(List<Horse> horses) {
this.horses = horses;
}
public void run() {
for (int i = 0; i < 100; i++) {
move();
print();
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
printWinner();
}
/**
* Метод move будет управлять движением всех лошадей.
*/
public void move() {
horses.forEach(Horse::move);
}
/**
* Метод print отрисовывать всех лошадей на экран.
*/
public void print() {
horses.forEach(Horse::print);
for (int i = 0; i < 10; i++) System.out.println();
}
/**
* Метод возщвращает лошать, которая дальше всех пробежала за отведенное время
* @return
*/
public Horse getWinner(){
Horse horseWinner = null;
for (Horse horse :horses) {
if (horseWinner == null) horseWinner = horse ;
if (horseWinner.getDistance() < horse.getDistance())
horseWinner = horse;
}
return horseWinner;
}
private void printWinner(){
Horse horse = getWinner();
System.out.println("Winner is " + horse.getName() + "!");
}
}