Untitled
unknown
plain_text
a year ago
7.6 kB
9
Indexable
import java.util.Random; import java.util.Scanner; public class Main { public static void main(String[] args) { CarProperties userCarProperties = new CarProperties( "100", 0.7f, 2 ); Car userCar = createCarByProperties(userCarProperties); System.out.println("Давно тебя не было в Яндекс.Гонках!"); System.out.println("Характеристики твоего автомобиля:"); // Напечайте характеристики автомобиля игрока System.out.println("- Максимальная скорость: " + userCar.maxSpeed); System.out.println("- Ускорение: " + userCar.acceleration); System.out.println("- Закись азота: " + userCar.nitroLevel); Scanner scanner = new Scanner(System.in); while (true) { System.out.println("Что выберете?"); System.out.println("1 - Устроить заезд"); System.out.println("2 - Показать статистику"); System.out.println("3 - Закончить игру"); int command = scanner.nextInt(); if (command == 1) { Car opponentCar = generateOpponentCar(); System.out.println("Характеристики автомобиля соперника:"); // Напечайте характеристики автомобиля соперника System.out.println("- Максимальная скорость: " + opponentCar.maxSpeed); System.out.println("- Ускорение: " + opponentCar.acceleration); System.out.println("- Закись азота: " + opponentCar.nitroLevel); int distance = generateInt(5, 70); System.out.println("Гонка будет проходить на дистанции: " + distance + " км."); int points = makeRace(userCar, opponentCar, distance); Car car = new Car(); // вот это ерунда changePointAndDistance( car, points, distance); // передайте в метод аргументы } else if (command == 2) { // Напечайте количество заработанных очков и пройденных километров System.out.println("- Количество заработанных очков: " + car.score ); System.out.println("- Пройдено километров на этом авто: " + car.kilometersTravelled); } else if (command == 3) { System.out.println("Увидимся!"); break; } } } private static void changePointAndDistance(Car car, int points, int distance) { // реализуйте метод car.score += points;// В результате выполнения метода у userCar количество очков должно увеличиться car.kilometersTravelled += distance;// на значение points, пройденное расстояние - на значение distance. } private static int makeRace(Car userCar, Car opponentCar, int distance) { printFlag(); // Напишите логические выражения для определения победителя boolean shortRaceWin = ( distance<=15 )&& (userCar.acceleration > opponentCar.acceleration) ; // на короткой дистанции boolean longRaceWin = ( distance<=50 ) && (userCar.maxSpeed > opponentCar.maxSpeed) ; // на длинной дистанции if (shortRaceWin ||longRaceWin) { // если победил на короткой или на длинной дистанции System.out.println("Вы выиграли!"); // Найдите и верните наибольшее из максимальных скоростей return (int) Double.max (userCar.maxSpeed, opponentCar.maxSpeed); } else if (userCar.acceleration ==opponentCar.acceleration) { // Уровни ускорения должны быть равны System.out.println("Ничья!"); return 0 ; } else { // Сравните уровни закиси азота if (userCar.nitroLevel > opponentCar.nitroLevel) { System.out.println("Вы проиграли, но благодаря закиси азота сохранили очки."); return 0; } else { System.out.println("Вы проиграли("); return -100; } } } private static void printFlag() { // Метод печатает флаг System.out.println("_\n" + "\\'-,,.\n" + " \\ \\\n" + " \\-..,\\\n" + " \\\n" + " \\\n"); } // Метод генерирует авто противника private static Car generateOpponentCar() { // С помощью метода generateInt() генерируем число от 75 до 125 double maxSpeed = generateInt(75, 125); // сгенерировали // Чтобы создать число от 0.4 до 1, с помощью метода generateInt() генерируем число от 4 до 10, // после чего делим его на 10 float acceleration = generateInt(4, 10) / 10.0f; int score = 0; // С помощью метода generateInt() генерируем число от 1 до 5 Integer nitroLevel = generateInt(1, 5); return new Car( // Метод возвращает экземпляр класса Car maxSpeed, acceleration, score, nitroLevel ); } // Этот метод создаёт случайное число в промежутке от from до to private static int generateInt(int from, int to) { int diapason = to - from; int offence = new Random().nextInt(diapason); return from + offence; } private static Car createCarByProperties(CarProperties carProperties) { // Конвертируйте параметры в нужные типы double maxSpeed = Double.parseDouble(carProperties.maxSpeed); float acceleration = (float) carProperties.acceleration; int score = carProperties.initialScore; ; // здесь должно быть автоматическое привидение типов из byte в int Integer nitroLevel = getNitroLevel(carProperties.nitroLevel); // тут возвращается Integer , либбо null return new Car( // Метод возвращает экземпляр класса Car maxSpeed, acceleration, score, nitroLevel ); } private static Integer getNitroLevel(int nitroLevel) { // Пропишите логику по конвертации параметра nitroLevel if (nitroLevel ==0) {return null;} return nitroLevel; } }
Editor is loading...