Задание 16 Теперь уже точно все. Добавь вызов метода printWinner в конец метода main. Запускай и любуйся своей первой компьютерной игрой 🙂 Задание 15 Добавим определение победителя. В классе Hippodrome сделаем два метода: public Horse getWinner() и public void printWinner() Метод getWinner должен возвращать лошадь пробежавшую самую большую дистанцию. Метод printWinner выводит на экран имя победителя в виде: Winner is <NAME>! Пример: Winner is Lucky! Задание 14 Запускаем и любуемся. У нас каждые полсекунды отображается новый кадр с ситуацией на ипподроме. Мышкой уменьши размер консоли так, чтобы был виден только один "кадр" и на том же самом месте. Тогда можно наблюдать забег в живую и даже покомментировать: - Старт. - Гомер неожиданно обходит Лаки. - Слевин вырывается вперед. - Вперед Лаки! - 10 баксов на Слевина. - Похоже Лаки сбросил жокея и расслабился. - Гомер уверенно вырывается вперед. - Неожиданно для всех побеждает Гомер. Вот это номер! Задание 13 Теперь вернемся к методу print класса Horse. Т.к. мы работаем с консолью, то все лошади на бегах будут выглядеть примерно так: ........Sleven <- лошадь Слевин ....Lucky <- лошадь Лаки ..........Gomer <- лошадь Гомер Другими словами, в методе print надо вывести на экран строку состоящую из точек и имени лошади. Количество точек равно distance, округленному до целого числа. Задание 12 Осталось совсем немного - дописать класс Horse. Каждый ход у лошади будет вызываться метод move. Когда у лошади вызывают метод move, лошадь должна пробежать некоторую дистанцию. Дистанция зависит от скорости лошади (speed). В самом простом варианте, выглядеть этот метод должен примерно так: distance += speed; Но, чтобы было интереснее, давай сделаем так, чтобы скорость все время немного менялась. Для этого умножь speed на случайное число. Случайное число можно получить с помощью метода Math.random() Задание 11 С классом Hippodrome почти закончили. Добавь в конец метода main вызов run(). Подсказка: run() - это нестатический метод, поэтому вызвать его можно только у объекта. А где взять объект? Подсказка 2: game.run(); Задание 10 Еще нужно написать метод print класса Hippodrome. В нем тоже все просто: в цикле для каждой лошади вызываем ее метод print. Ну, и еще выведи после цикла пару пустых строк: System.out.println() - чтобы было красивее. Задание 9 Теперь вернемся к методам move и print. Начнем с move. В методе move класса Hippodrome в цикле у каждой лошади мы вызываем метод move. Да ты прав, его еще нет у класса Horse. Поэтому в класс Horse надо добавить свой метод move 🙂 И метод print, кстати тоже. Если я не говорю ничего насчет параметров метода, значит метод без параметров. Делай все методы public, если явно не указано обратное. Задание 8 В методе run сделай цикл от 1 до 100. Это и будет наш забег. В теле цикла вызываем сначала move, затем print. Чтобы весь цикл не отработал за долю секунды - добавь в него еще Thread.sleep(200); Задание 7 Но и это еще не все - надо чтобы лошади бежали. Добавь в класс Hippodrome методы run, move и print. Без параметров. Метод move будет управлять движением всех лошадей. Метод print отрисовывать их на экран. А метод run - управлять всем этим. Задание 6 Теперь перейдем к методу main. Нам нужно создать в нем объект класса Hippodrome и добавить ему несколько лошадей. Для начала: Создай статическую переменную game типа Hippodrome. Должно получиться что-то вроде: public static Hippodrome game; В методе main надо: а) Создать объект типа Hippodrome и сохранить его в переменную game. б) Создать три объекта "лошадь". Имена придумай сам. Начальные скорость у всех лошадей - 3, дистанция - 0. в) Добавить созданных лошадей в список лошадей ипподрома (horses). Используйте для этого геттер. Задание 5 Закончим написание класса "лошадь" Добавь конструктор с параметрами (name, speed, distance). Добавь getter'ы и setter'ы для всех полей класса Horse. Делай все методы public, если явно не указано обратное. Задание 4 Теперь вернемся к лошадям. У каждой лошади на скачках должны быть известны имя(name) и скорость(speed). Наши лошади будут бежать просто определенное время (100 секунд/"шагов"). Будем определять победителя, как лошадь, пробежавшая наибольшую дистанции. Поэтому нам понадобится хранить расстояние(distance), которое лошадь уже пробежала. Добавь в класс Horse переменные name (String), speed (double), distance(double). Задание 3 Раз это ипподром, то на нем должны быть лошади. А, значит наш ипподром должен хранить список всех его лошадей. Добавь переменную horses типа ArrayList<Horse> в класс Hippodrome. Добавь getter для этого поля. Задание 2 Любая программа начинается с выполнения метода main. Добавь метод main в класс Hippodrome. Задание 1 Сегодня мы напишем небольшую игру под названием "Ипподром". Когда я говорю мы - я имею ввиду тебя. Я же буду работать наставником. Для начала нам понадобятся классы "ипподром" и "лошадь". Создай классы Hippodrome (ипподром), Horse(лошадь)
package com.javarush.test.level21.lesson16.big01; import java.util.ArrayList; /** * Created by promoscow on 18.01.17. */ public class Hippodrome { ArrayList<Horse> horses = new ArrayList<>(); public ArrayList<Horse> getHorses() { return horses; } public static Hippodrome game; public static void main(String[] args) throws InterruptedException { game = new Hippodrome(); game.getHorses().add(new Horse("Ангел Апокалипсиса", 3, 0)); game.getHorses().add(new Horse("Жнец Ада", 3, 0)); game.getHorses().add(new Horse("Коса смерти", 3, 0)); game.run(); game.printWinner(); } public void run() throws InterruptedException { for (int i = 1; i <= 100; i++) { move(); print(); Thread.sleep(200); } } public void move() { for (Horse horse : horses) { horse.move(); } } public void print() { for (Horse horse : horses) { horse.print(); } System.out.println(); System.out.println(); } public Horse getWinner() { int winner = 0; for (int i = 0; i < horses.size(); i++) { if (horses.get(i).distance > horses.get(winner).distance) winner = i; } return horses.get(winner); } public void printWinner() { System.out.println("Winner is " + getWinner().name + "!"); } }
package com.javarush.test.level21.lesson16.big01; /** * Created by promoscow on 18.01.17. */ public class Horse { String name; double speed; double distance; public Horse(String name, double speed, double distance) { this.name = name; this.speed = speed; this.distance = distance; } public String getName() { return name; } public double getSpeed() { return speed; } public double getDistance() { return distance; } public void setName(String name) { this.name = name; } public void setSpeed(double speed) { this.speed = speed; } public void setDistance(double distance) { this.distance = distance; } public void move() { distance += speed * Math.random(); } public void print() { for (int i = 0; i < (int) distance; i++) { System.out.print("."); } System.out.println(name); } }
Leave A Comment