Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Java Модуль 4.docx
Скачиваний:
14
Добавлен:
01.07.2025
Размер:
20.72 Mб
Скачать

Разделение задания для трех уровней сложности

Первый уровень сложности содержит перечень минимальных элементов, необходимых для написания приложения:

  • Создание окна необходимых размеров.

  • Указание заголовка окна.

  • Создание общего фона.

  • Размещение двух кнопок Новая игра, Выход.

  • При нажатии на кнопку Выход окно должно полностью закрываться.

  • Создание сеток двух игровых полей10x10.

  • Нумерация строк двух игровых от1до 10.

  • Нумерация колонок двух игровых полей буквами от Aдо J.

  • Подписание игровых полей: Компьютер, Игрок.

  • При нажатии на кнопку Новая игра на первом уровне сложности ничего не происходит!

  • Законченный вариант необходимо представить в виде JAR-архива.

Внимание!!!Подробности по каждому пункту первого уровня сложности необходимо смотреть в основном техническом задании.

Вариант игры для первого уровня сложности должен выглядеть так:(см. рис. 18)

Рис. 18

Второй уровень сложности является продолжением первого уровня сложности.В дополнение к первому уровню сложности:

  • При нажатии на кнопку Новая игра необходимо выполнить расстановку одного четырехпалубного и четырех однопалубных кораблей на игровом поле игрока (см. рис. 19).

  • При каждом повторном нажатии кнопкиНовая игра корабли должны расставляться новым случайным образом.

  • Законченный вариант необходимо представить в виде JAR-архива.

Внимание!!!Подробности по каждому пункту второго уровня сложности необходимо смотреть в основном техническом задании.

Рис. 19

Третий уровень сложности:

  • Является продолжением второго уровня сложности

  • Выполнение задания в полном объеме

Рекомендации для реализации игровых полей игры Морской бой

Приемы загрузки изображений, работа с таймером отрисовки,отрисовка игрового поля, работа с графикой–для игры"Морской бой" реализуется также как и для игры "Змейка". Такие же приемы были использованы при создании игры "Новогодний дождь". Построение интерфейса пользователя, размещение кнопок, обработка событий при нажатии кнопок – всё это было изучено при создании приложений под Windows с построением интерфейса пользователя. В отличие от игры "Змейка", управление игрой будет полностью осуществляться с помощью мыши. Работа с мышью была рассмотрена при создании приложения для рисования. Все технические моменты можно найти в методической литературе по курсу Java.

Алгоритм для реализации игры "Морской бой"

Основная часть работы–это реализация алгоритма игры "Морской бой".Для решения задачи можно найти несколько различных алгоритмов ее решения. Другими словами, несколько планов (схем)действий.

Для хранения информации о двух игровых полях можно воспользоваться двумя двумерными массивами целых чисел. Размер одного игрового поля 10x10, поэтому размерность каждого массива будет также 10x10. Один массив будет хранить данные игрового поля компьютера, а другой игрока.

// Массив для игрового поля компьютера

int[][] masComp;

// Массив для игрового поля игрока

int[][] masPlay;

//Создаем массив 10x10 - игровое поле компьютера

masComp = new int[10][10];

//Создаем массив 10x10 - игровое поле игрока

masPlay = new int[10][10];

Решим, что свободные ячейки игровых полей будут отмечаться в массиве нулями. Поэтому при старте игры оба массива буду обнуляться:

//Очищаем игровое поле компьютера и игрока

for (int i = 0; i < 10; i++) {

for (int j = 0; j < 10; j++) {

masComp[i][j] = 0;

masPlay[i][j] = 0;

}

}

Все данные игровых полей будут храниться в массивах. Различные варианты состояния игрового поля мы будем отмечать отдельным числом.

Один из вариантов выглядит так:

  • Число один 1:палуба однопалубного корабля

  • Число два 2:каждая палуба двухпалубного корабля

  • Число три 3:каждая палуба трехпалубного корабля

  • Число четыре 4:каждая палуба четырехпалубного корабля

  • При выстреле в определенную ячейку к ее значению будет прибавляться число семь7

  • Пространство вокруг корабля будет обозначаться числом минус один -1, в это пространство нельзя поставить другой корабль

  • Когда корабль будет полностью подбит ко всем значениям его ячеек будем прибавлять еще одно число семь 7

К примеру, начальное расположение кораблей выглядит так (см. рис. 20).

Рис. 20

На основании предложенной схемы –значения в двумерном массиве будут выглядеть так (см. рис.21).

Рис. 21

Сравните вид игрового поля на (см. рис. 20) и его отображение в двумерном массиве (см. рис. 21). Все палубы кораблей отмечены значениями: 1,2,3,4, пространство вокруг отмечено минус единицей -1, а все свободные ячейки заполнены нулями0. Таймер отрисовки будет постоянно отрисовывать игровое поле на основании чисел в массиве и программирование логики игры сведется к программированию двумерного массива.Общий подход к созданию игры "Морской бой"полностью совпадает с подходом к созданию игры "Змейка".

При выстреле в любую ячейку прибавляем к ее значению число семь7.

После двух выстрелов по игровому полю оно станет выглядеть так(см. рис. 22). Один выстрел попал и ранил четырехпалубный корабль, а другой выстрел попал мимо (см. рис. 22).

Рис. 22

Теперь посмотрим на изменения в двумерном массиве (см. рис. 23), которое соответствует двум выстрелам. К двум значениям элементов массива прибавилось число семь 7.

Рис. 23

После того как корабль будет полностью подбит ко всем значениям его ячеек прибавляем снова число семь7. Так выглядит игровое поле после трех дополнительных выстрелов, попавших в три палубы четырехпалубного корабля (см. рис. 24).

Рис. 24

Изменения, которые произошли в двухмерном массиве выглядят так (см. рис. 25)

Рис. 25

После четвертого попадания в четырехпалубный корабль значения в ячейках будут 11(4+7) (см. рис.26). После полного уничтожения корабля мы прибавляем ко всем подбитым палубам еще раз число 7, тем самым помечаем, что это палубы полностью убитого корабля. В результате получаем состояние двумерного массива(см. рис. 25).

Рис. 26

Подход, который рассмотрен выше не является единственным и вы можете использовать свой вариант!

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]