Новичок
Профиль
Группа: Участник
Сообщений: 49
Регистрация: 17.2.2011
Репутация: нет Всего: нет
|
Подскажите мне нужно дополнить задание? Не могу понять как сделать! Если можно маленький пример! В заранее благодарен! Добавить дополнительный параметр автомобиля – цвет и графическое отображение хода всего заезда вместо вывода данных на консоль; Добавить считывание данных автомобилей-участников из конфигурационного файла вместо «прошивания» их в программе; Добавить автоматическое формирование последующих заездов победителей предварительных заездов с выбыванием и определением абсолютного чемпиона. Код1: Код | package dragracing; /** * Методы интерфейса CarInterface */ public interface CarInterface {
public int getId();
public void setId(int id);
public String getDriver();
public void setDriver(String driver);
public String getManufacturer();
public void setManufacturer(String manufacturer);
public int getMaxSpeed();
public void setMaxSpeed(int maxSpeed);
public String getModel();
public void setModel(String model);
public int getVelocity();
public void setVelocity(int velocity);
public long getCurrentSpeed();
public void setCurrentSpeed(long currentSpeed);
public long getRunDistance();
public void setRunDistance(long runDistance);
public int getRunTime();
public void setRunTime(int runTime); } /** * Поля класса Car интерфейса CarInterface */ class Car implements CarInterface {
/** * Номер автомобиля */ private int id; /** * Марка */ private String manufacturer; /** * Модель */ private String model; /** * Ускорение в м/с2 */ private int velocity; /** * Максимальная скорость */ private int maxSpeed; /** * Текущая скорость */ private long currentSpeed = 0; /** * Пройденная дистанция в заезде */ private long runDistance = 0; /** * Время заезда */ private int runTime = 0; /** * Гонщик */ private String driver;
/** * Конструктор класса Car с входными параметрами элемента класса Car */ public Car(Car car) { this.id = car.id; this.manufacturer = car.manufacturer; this.model = car.model; this.velocity = car.velocity; this.maxSpeed = car.maxSpeed; this.driver = car.driver; this.currentSpeed = 0; this.runDistance = 0; this.runTime = 0; }
/** * Конструктор класса Car с входными параметрами */ public Car(int id, String manufacturer, String model, int velocity, int maxSpeed, String driver) { this.id = id; this.manufacturer = manufacturer; this.model = model; this.velocity = velocity; this.maxSpeed = maxSpeed; this.driver = driver; }
public int getId() { return this.id; }
public void setId(int id) { this.id = id; }
public String getDriver() { return this.driver; }
public void setDriver(String driver) { this.driver = driver; }
public String getManufacturer() { return this.manufacturer; }
public void setManufacturer(String manufacturer) { this.manufacturer = manufacturer; }
public int getMaxSpeed() { return this.maxSpeed; }
public void setMaxSpeed(int maxSpeed) { this.maxSpeed = maxSpeed; }
public String getModel() { return this.model; }
public void setModel(String model) { this.model = model; }
public int getVelocity() { return this.velocity; }
public void setVelocity(int velocity) { this.velocity = velocity; }
public long getCurrentSpeed() { return this.currentSpeed; }
public void setCurrentSpeed(long currentSpeed) { this.currentSpeed = currentSpeed; }
public long getRunDistance() { return this.runDistance; }
public void setRunDistance(long runDistance) { this.runDistance = runDistance; }
public int getRunTime() { return this.runTime; }
public void setRunTime(int runTime) { this.runTime = runTime; } }
|
Код2: Код | package dragracing;
import java.util.HashMap; import java.util.Map;
public class Dragracing {
private static Map<Integer, Car> cars = new HashMap<Integer, Car>();
/** * Длина трассы в метрах */ private static final int TRACK_LENGTH = 402;
/** * Метод сбора списка гонщиков, участвующих в заездах */ private static void setCars() { cars.put(1, new Car(1, "Toyota", "Celica", 6, 250, "Alex")); cars.put(2, new Car(2, "Dodge", "Viper", 7, 310, "Steve")); cars.put(3, new Car(3, "Porsche", "911", 9, 320, "Martin")); cars.put(4, new Car(4, "Dodge", "Challenger", 9, 250, "Andrew")); cars.put(5, new Car(5, "Toyota", "MR2", 5, 250, "Jim")); cars.put(6, new Car(6, "Honda", "NSX", 8, 280, "Hiroki")); cars.put(7, new Car(7, "Chevrolet", "Camaro", 8, 270, "Ricky")); cars.put(8, new Car(8, "Nissan", "GTR", 8, 310, "Kito")); cars.put(9, new Car(9, "Lamborghini", "Countach", 8, 300, "Linda")); cars.put(10, new Car(10, "VAZ", "2107", 8, 200, "Vasiliy")); }
/** * Метод, обновляющий текущее состояние автомобиля в заезде: скорость и пройденную дистанцию */ private static void refresh(Car car, int time) { long maxSpeed = Math.round(car.getMaxSpeed()/3.6); //Узнаем максимальную скорость автомобиля в м/с и округлим long curSpeed = Math.round(car.getVelocity() * time); //Вычислим текущую скорость автомобиля в м/с if(curSpeed > maxSpeed) curSpeed = maxSpeed;//Если вычисленная текущая скорость выше максимальной, то текущую делам равной максимальной car.setRunDistance(car.getRunDistance() + curSpeed > TRACK_LENGTH ? TRACK_LENGTH : car.getRunDistance() + curSpeed);//Обнавляем пройденное расстояние car.setCurrentSpeed(Math.round(curSpeed*3.6)); //Обновляем текущую скорость }
/** * Метод производящий вычисления заездов */ public static void main(String[] args) throws InterruptedException { HashMap<Integer, Car> results = new HashMap<Integer, Car>(); setCars();//Получим список гонщиков, участвующих в заезде int runNum = 1;//Номер заезда for(int i = 1; i < cars.size(); i++) {//обходим список участников Car left = new Car(cars.get(i++));//устанавливаем первого гонщика, i++ что бы обходить список парами Car right = new Car(cars.get(i));//устанавливаем второго гонщика System.out.println("Run " + runNum + ": " + left.getDriver() + " on " + left.getManufacturer() + " " + left.getModel() + " vs. " + right.getDriver() + " on " + right.getManufacturer() + " " + right.getModel()); Thread.sleep(3000); System.out.println("Ready!"); Thread.sleep(1000); System.out.println("Steady!"); Thread.sleep(1000); System.out.println("GO!"); boolean run = true;//заезд в процессе int seconds = 0;//секунд с момента старта while(run) { System.out.println("Run " + runNum + ": " + left.getDriver() + " on " + left.getManufacturer() + " " + left.getModel() + " vs. " + right.getDriver() + " on " + right.getManufacturer() + " " + right.getModel()); System.out.println(left.getDriver() + ": " + left.getRunDistance() + " meters, " + left.getCurrentSpeed() + " km/h"); System.out.println(right.getDriver() + ": " + right.getRunDistance() + " meters, " + right.getCurrentSpeed() + " km/h"); Thread.sleep(1000); seconds++; if(left.getRunTime() == 0)//если гонщик ещё не финишировал refresh(left, seconds);//обновим его информацию if(right.getRunTime() == 0) refresh(right, seconds); if(left.getRunTime() > 0 && right.getRunTime() > 0)//если оба гонщика финишировали run = false;//завершим заезд if(left.getRunDistance() >= TRACK_LENGTH && left.getRunTime() == 0) {//если гонщик финишировал left.setRunTime(seconds);//установим его время заезда results.put(cars.size() - results.size(), left);//добавим в список результатов } if(right.getRunDistance() >= TRACK_LENGTH && right.getRunTime() == 0) { right.setRunTime(seconds); results.put(cars.size() - results.size(), right); } } runNum++;//обновим номер заезда } for(Map.Entry<Integer, Car> set : results.entrySet())//обойдём список результатов System.out.println(set.getValue().getRunTime() + " seconds: " + set.getValue().getDriver() + " on " + set.getValue().getManufacturer() + " " + set.getValue().getModel());//и выведем на экран } }
|
|