Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2011, 08:43   #1
turtles
Пользователь
 
Регистрация: 17.02.2011
Сообщений: 59
По умолчанию Гонки

Подскажите мне нужно дополнить задание? Не могу понять как сделать! Если можно маленький пример! В заранее благодарен!
Добавить дополнительный параметр автомобиля – цвет и графическое отображение хода всего заезда вместо вывода данных на консоль;
Добавить считывание данных автомобилей-участников из конфигурационного файла вместо «прошивания» их в программе;
Добавить автоматическое формирование последующих заездов победителей предварительных заездов с выбыванием и определением абсолютного чемпиона.

Код:
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;
    }
}
turtles вне форума Ответить с цитированием
Старый 30.11.2011, 08:44   #2
turtles
Пользователь
 
Регистрация: 17.02.2011
Сообщений: 59
По умолчанию Гонки

Продолжение кода

Код:
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());//и выведем на экран
    }
}
turtles вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Игра "Гонки" polarity Общие вопросы Delphi 4 30.12.2011 17:00
Тестовые задания при устройстве на работу. "Гонки кнопок", разные потоки. Casper-SC Свободное общение 4 12.11.2010 13:15
Почти готовые "гонки" Ulex Gamedev - cоздание игр: Unity, OpenGL, DirectX 11 20.09.2008 21:48
Типа гонки Pedro Gamedev - cоздание игр: Unity, OpenGL, DirectX 10 20.08.2008 13:10