undefined

Большая задача: Создание игры на Java

Java Collections
3 уровень , 15 лекция
Открыта

— Привет, Амиго!

— Привет!

— Ты как разговариваешь со старшим по званию?

— Виноват, сэр.

Здравия желаю, Капитан Бобров.

— То-то же.

У тебя сегодня новая секретная миссия.

Нужно написать симуляцию космической войны.

— Круто. То есть я хотел сказать, я — готов, сэр.

У меня как раз есть идея. Как насчет:

Большая задача: Создание игры на Java - 1

— Нет, слишком сложно.

Для начала начнем с чего-то попроще:

Большая задача: Создание игры на Java - 2

— М-да.

— Что, опять сложно? Тогда еще проще.

Обратитесь за заданием к агенту Intellij IDEA. Оно уже у него.

— Разрешите вопрос, сэр?

— Говори.

— А почему вы называете Intellij IDEA – агентом, сэр? Это же программа.

— Сам ты – программа.

IDEA – это искусственный интеллект и штатный сотрудник нашего корабля. Все понятно? Иди уже.

— Есть, идти выполнять приказание.

undefined
8
Задача
Java Collections,  3 уровень,  15 лекция
Недоступна
Space (1)
Давай напишем новую компьютерную игрушку. У нас будет космический корабль, который стреляет ракетами в НЛО. А НЛО в свою очередь сбрасывает на корабль бомбы. Ну и, конечно, всё дело происходит в космосе. Нам понадобятся классы: Space(космос), SpaceShip(космический корабль) и Ufo(НЛО). Создай классы
undefined
8
Задача
Java Collections,  3 уровень,  15 лекция
Недоступна
Space (2)
У нас будут бомбы и ракеты. Значит нам нужны классы Bomb(бомба) и Rocket(ракета). Создай их. У наших объектов будет много общего. Они будут перемещаться по космосу и отрисовываться. Значит у них у всех будут координаты и размер. А еще методы move() - для перемещения и draw() для отрисовки. Есть ин
undefined
8
Задача
Java Collections,  3 уровень,  15 лекция
Недоступна
Space (3)
Для чего нам нужен класс Space? Чтобы хранить в себе все объекты и управлять их взаимодействием. А какие параметры должны у него быть? width (ширина), height (высота). Тип int. А еще?
undefined
8
Задача
Java Collections,  3 уровень,  15 лекция
Недоступна
Space (4)
Чего не хватает классу Space? Правильно - методов run() и draw(). run управляет всей логикой игры, если ты помнишь. А draw отвечает за отрисовку очередного "кадра". А еще нам пригодится метод sleep(int ms). Создай их.
undefined
8
Задача
Java Collections,  3 уровень,  15 лекция
Недоступна
Space (5)
Теперь перейдем к классу BaseObject. Я хочу сделать несколько предложений. Во-первых. Для простоты, считать все объекты у нас в космосе круглыми. Нет, отрисовывать их мы будем фигурными, как и раньше. А вот при расчетах их взаимодействия исходить из того, что они круглые. Так - гораздо проще.
undefined
14
Задача
Java Collections,  3 уровень,  15 лекция
Недоступна
Space (6)
Но и это еще не все. Классу BaseObject нужны еще методы. Пока это будут пустые методы draw() и move(). Классы-наследники должны будут переопределить их у себя и реализовать необходимую функциональность. Еще добавь метод die() - объект умирает (isAlive=false) А еще нам нужно будет определять попала
undefined
8
Задача
Java Collections,  3 уровень,  15 лекция
Недоступна
Space (7)
Теперь займемся классом Canvas. Он у нас будет содержать матрицу, куда мы будем рисовать. У матрицы есть ширина и высота. А еще будем в ней хранить не числа(int), а символы (char). В классе Canvas необходимо: а) Добавить в класс две переменные width и height; б) Добавить в класс переменную matrix (char[][]);
undefined
28
Задача
Java Collections,  3 уровень,  15 лекция
Недоступна
Space (8)
Что мы будем делать с Canvas? Мы будем рисовать на нем (в его матрице). Поэтому нам понадобятся два метода: public void setPoint(double x, double y, char c), public void drawMatrix(double x, double y, int[][] matrix, char c). Первый метод - setPoint будет "ставить точку в координатах x,y цветом c".
undefined
8
Задача
Java Collections,  3 уровень,  15 лекция
Недоступна
Space (9)
Еще Canvas понадобится два метода, напиши их. а) метод public void clear(); Этот метод будет очищать матрицу, чтобы на ней снова можно было рисовать. Например заменить все символы матрицы на пробелы. б) метод public void print(); Этот метод отрисовывает матрицу на экран.
undefined
8
Задача
Java Collections,  3 уровень,  15 лекция
Недоступна
Space (10)
Теперь напишем класс Bomb. Тут все просто. Bomb унаследован от BaseObject. Нужно: а) изменить конструктор: Конструктор Bomb должен выглядеть примерно так: public Bomb(double x, double y) { super(x, y, 1); } x и y переданные в конструктор Bomb мы передаем дальше в конструктор BaseObject с помощью supe
undefined
8
Задача
Java Collections,  3 уровень,  15 лекция
Недоступна
Space (11)
Теперь напишем класс Rocket. Практически совпадает с классом Bomb. Только: а) Ракета летит вверх (т.е. y уменьшается на 1); б) Рисуем не букву "B", а букву "R".
undefined
8
Задача
Java Collections,  3 уровень,  15 лекция
Недоступна
Space (12)
Теперь займемся кораблем. Для сложности сделаем так: если пользователь нажал кнопку влево, то корабль начинает все время двигаться влево. Если нажал кнопку вправо - все время вправо до упора. Поэтому заведем специальную переменную dx, которая будет хранить направление движения корабля. если dx = 1,
undefined
14
Задача
Java Collections,  3 уровень,  15 лекция
Недоступна
Space (13)
Теперь перейдем к методам draw, move. В методе public void move() нужно: а) увеличить x на dx; б) проверить, не вылез ли корабль за границы космоса [0, Space.game.getWidth(), ...]. Используй метод checkBorders. Метод draw я напишу сам - просто объяви пустой метод.
undefined
14
Задача
Java Collections,  3 уровень,  15 лекция
Недоступна
Space (14)
Теперь напиши класс Ufo. Он чуть сложнее класса Bomb и проще SpaceShip. Тебе понадобятся методы draw(), move(), fire(). Также не забудь о конструкторе. Типы параметров double, а радиус ufo будет равен 3. Метод draw() сделай по аналогии с SpaceShip. Рисовать UFO будем символом 'U'. И добавь матрицу,
undefined
8
Задача
Java Collections,  3 уровень,  15 лекция
Недоступна
Space (15)
Нужно еще закончить класс Space. Напиши код метода getAllItems: Метод должен возвращать один общий список всех объектов типа BaseObject. Напиши код метода moveAllItems: Метод должен двигать все объекты по одному разу.
undefined
14
Задача
Java Collections,  3 уровень,  15 лекция
Недоступна
Space (16)
И еще немного. Напиши код метода createUfo(): - если список НЛО пуст - создай один корабль в центре сверху. Напиши код метода checkBombs(): - нужно проверить не пересеклись ли между собой какая-нибудь бомба и корабль; - если пересеклись - корабль и бомба умирают: die();
undefined
8
Задача
Java Collections,  3 уровень,  15 лекция
Недоступна
Space (17)
Надо закончить метод draw(). Поступим по аналогии с методом move() - сегодня я напишу его сам.
undefined
8
Задача
Java Collections,  3 уровень,  15 лекция
Недоступна
Space (18)
Поставь width & height побольше и можно играть! Наслаждайся игрой :)
Комментарии (119)
Чтобы просмотреть все комментарии или оставить свой,
перейдите в полную версию
Питруха 37 уровень
23 апреля 2021
Задача уровня Core.
Александр Черенков 35 уровень, Бердск
14 апреля 2021
На 15 таске валидатор понесло: - то он не видит переменную game, то он не видит геттеры для heitgh & width, последнее что он сделал - стал убеждать меня что я не добавляю в список возвращаемых объектов метода getAllItem() список ufos. Явный неадекват, пропускаю и иду дальше. PS Не сильно то и хотелось эту задачу решать, хуже тетриса.
Александр Черенков 35 уровень, Бердск
13 апреля 2021
Таск 8 не проходил валидатор пока в конструкторе класса Canvas при инициализации поля matrix не увеличил количество строк и столбцов на два (т.е сделал matrix(char[height + 2][width + 2])). И это при том что в предыдущем таске 7 последнее требование, дословно: "Инициализируйте в конструкторе поле matrix(char[height][width])"!!!! Вот откуда эта ДВОЙКА взялась??????
Александр Черенков 35 уровень, Бердск
13 апреля 2021
В таске 6, проверка на столкновение объектов производится сравнением расстояния между объектами и максимальным из радиусов. Но если мы считаем расстояние между объектами как расстояние между их центрами, то сравнивать нужно с суммой радиусов объектов... К чему нам физика у нас есть Валидатор, ему видней:)
Михаил 37 уровень
26 марта 2021
Задача дает возможность попробовать Swing, отработать многопоточность, самостоятельно продумать логику игры (НЕТ). Ладно, вперде.
Flexo 35 уровень, New New York
19 марта 2021
Задача - как и предыдущая большая (тетрис). Вы создаёте и описываете классы согласно заранее известному плану, а логику взаимодействия объектов за вас реализует составитель задачи за кадром. Вы лишь изредка ему помогаете. Трудно назвать это программированием. Задача не по уровню, наверное. Но в плане "набить руку" по набору кода — пойдёт.
Сергеев Алексей 28 уровень, Москва
10 февраля 2021
Задача вообще помойка, так нехотя решаю. Сам ни чего не делаешь(хотя сделал бы с удовольствие) и постоянно добавляются новые, уже реализованные методы, в которых разбираться совсем не хочется...
barracuda 41 уровень, Санкт-Петербург Expert
7 февраля 2021
едем дальше.
Илья 41 уровень, Санкт-Петербург
7 февраля 2021
где JUnit, Guava, Apache Commons Collections?
Babusya 35 уровень, Минск
9 января 2021
интересно,😒 опять консольная игра как тетрис ?