русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Генерация однопалубных кораблей


Дата добавления: 2015-06-12; просмотров: 2017; Нарушение авторских прав


На игровом поле будут располагаться четыре однопалубных корабля. В двумерном массиве однопалубный корабль будет отмечен единицей "1". Корабли не могут располагаться рядом, вокруг каждого должны быть свободные ячейки. Свободные ячейки вокруг корабля в двумерном массиве будут отмечены минус единицей "-1". Значение минус единица "-1"будет признаком того, что в эту ячейку уже нельзя поместить палубу корабля. При каждой генерации кораблей –их расположение должно выбираться случайным образом. После генерации четырех однопалубных кораблей в двумерном массиве получится следующее (см. рис. 9).

Рис. 9

Расположение кораблей каждый раз должно выбираться случайно.

Схема генерации одного однопалубного корабля будет заключаться в следующем:

1. Выбираем случайную ячейку

2. Если ячейка содержит нулевое значение, то размещаем в ней корабль

3. Если ячейка занята, то выбираем следующую случайную ячейку

4. Так продолжаем до тех пор, пока не найдем ячейку с нулевым значением

5. В выбранную ячейку помещаем единицу"1"

6. Пространство вокруг окружаем минус единицами "-1"

Создадим отдельный метод для установки одного значения при окружении:

// Установить один элемент окружения

private void setOkr(int[][] mas, int i, int j, int val)

{

// Если не происходит выход за пределы массива

// и в ячейке нулевое значение

if (testMasPoz(i, j) && (mas[i][j] == 0))

// Устанавливаем необходимое значение

setMasValue(mas, i, j, val);

}

Метод setOkr() помещает одно значение для окружения в элемент массива.Прежде всего, происходит проверка, что нет выхода за пределы массива testMasPoz(i,j). И вторая проверка, что в ячейке находится нулевое значение.

При выполнении двух условий происходит установка нового значения.



Чтобы выполнить полное окружение необходимо установить значение вокруг элемента, а значит в восьми местах.Для этого добавим метод:

//Окружение одной ячейки вокруг

private void okrBegin(int[][] mas, int i, int j, int val) {

setOkr(mas, i-1, j-1, val); // сверху слева

setOkr(mas, i-1, j, val); // сверху

setOkr(mas, i-1, j+1, val); // сверху справа

setOkr(mas, i, j+1, val); // справа

setOkr(mas, i+1, j+1, val); // снизу справа

setOkr(mas, i+1, j, val); // снизу

setOkr(mas, i+1, j-1, val); // снизу слева

setOkr(mas, i, j-1, val); // слева

}

Метод okrBegin() перебирает все ячейки вокруг и устанавливает в них нужное значение. Если происходит выход за границы массива –эта ситуация контролируется в методе setOkr().

Теперь можно добавить метод для генерации четырех однопалубных кораблей:

//Создание четырех однопалубных кораблей

private void make1P(int[][] mas) {

// Циклfor делает четыре шага - для четырех кораблей

for (int k = 1; k <= 4; k++) {

// Глухой циклwhile

while (true) {

// Находим случайную позицию на игровом поле

int i = (int) (Math.random() * 10);

int j = (int) (Math.random() * 10);

// Проверяем, что там ничего нет и можно разместить

// корабль

if (mas[i][j] == 0) {

// Размещаем однопалубный корабль

mas[i][j] = 1;

// Выполняем окружение

okrBegin(mas, i, j, -1);

// Прерываем цикл

break;

}

}

}

}

Метод make1P() создает четыре однопалубных корабля. Верхний цикл for

выполняет четыре шага. Внутренний "глухой" цикл whileвыполняется до тех пор, пока не будет найдена свободная случайная ячейка с нулевым значением.После нахождения подходящей ячейки в нее записывается значение единица, происходит окружение минус единицами вокруг и прерывание цикла.

Теперь необходимо перейти в метод start() и вызвать метод генерации однопалубных кораблей:

//Запуск игры - начало игры

public void start() {

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

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

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

masPlay[i][j] = 0;

}

}

//Генерация однопалубных кораблей

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

make1P(masPlay);

}

Запустим приложение и проверим результат (см. рис.10). При повторных нажатиях на кнопку Новая игра–корабли будут размещаться уже по-другому.

Рис. 10



<== предыдущая лекция | следующая лекция ==>
Ситуация выхода за пределы массива | Генерация четырехпалубного корабля


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.179 сек.