03.11.2014 Views

Выпуск 5 - Российский государственный профессионально ...

Выпуск 5 - Российский государственный профессионально ...

Выпуск 5 - Российский государственный профессионально ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

В МИР ИНФОРМАТИКИ № 176<br />

GAMES.EXE<br />

Кто сам пилит свои дрова, тот согревается<br />

дважды.<br />

Французская поговорка<br />

Кто сам программирует свои компьютерные<br />

игры, тот наслаждается дважды.<br />

Из книги Ж.Арсак<br />

“Программирование игр<br />

и головоломок”. М.: Наука, 1985<br />

Игра “Морской бой”<br />

в среде Microsoft Excel<br />

Д.М. Златопольский, Москва<br />

В данной статье мы опишем методику моделирования<br />

игры “Морской бой” средствами программы<br />

Microsoft Excel 1 . Если вы не знакомы с языком программирования<br />

VBA (Visual Basic for Application),<br />

“встроенным” в эту программу, не пугайтесь — все<br />

необходимые разъяснения будут даны.<br />

Игра широко известна, поэтому правила приводить<br />

не будем.<br />

Рассмотрим простой, “одномерный” вариант —<br />

игровое поле представим в виде полоски из 40 клеток,<br />

на которой будут размещаться корабли — один<br />

“4-секционный”, два “3-секционных”, три “2-секционных”<br />

и четыре “односекционных” (естественно, что<br />

сами корабли показываться не должны — см. рис. 1).<br />

Играть будут компьютер и человек. Первый<br />

“расставляет” корабли, второй должен их пора зить.<br />

Соответствующий общий вид фрагмента листа<br />

Microsoft Excel показан на рис. 2.<br />

Играющий должен в ячейке Е5 указать номер<br />

клетки, по которой он производит выстрел, после<br />

чего щелкнуть на кнопке с надписью “Подтвердить<br />

ход”. Кнопка с надписью “Новая игра” используется<br />

для новой расстановки кораблей.<br />

Тексты в ячейки А1 и А5 вводятся “вручную”, и<br />

оформить их нужно так, как на рис. 2. Для заполнения<br />

ячеек А3:AN3 можно использовать так называемое<br />

“автозаполнение”. Вокруг ячейки Е5 и ячеек<br />

А3:AN3 нужно сделать обрамление. Конечно, следует<br />

изменить ширину столбцов.<br />

Обо всем, что связано с кнопками, расскажем<br />

ниже.<br />

Ситуацию на игровом поле будем моделировать<br />

с помощью массива с именем поле из 40 элементов.<br />

Если в какой-то клетке поля стоит корабль (или его<br />

часть), то в соответствующем элементе массива запишем<br />

1; если этот корабль “ранен” или “убит” (потоплен)<br />

— 2; если клетка пустая — 0.<br />

Сначала, с целью отладки той части программы,<br />

которая связана, так сказать, с логикой игры, корабли<br />

за компьютер ☺ расставим вручную, например,<br />

так:<br />

'4-секционный<br />

поле(6) = 1<br />

поле(7) = 1<br />

поле(8) = 1<br />

поле(9) = 1<br />

'3-секционные<br />

поле(21) = 1<br />

поле(22) = 1<br />

поле(23) = 1<br />

поле(37) = 1<br />

поле(38) = 1<br />

поле(39) = 1<br />

'2-секционные<br />

поле(3) = 1<br />

поле(4) = 1<br />

поле(12) = 1<br />

поле(13) = 1<br />

поле(17) = 1<br />

поле(18) = 1<br />

'Односекционные<br />

поле(15) = 1<br />

поле(27) = 1<br />

поле(32) = 1<br />

поле(34) = 1<br />

Если значение, которое играющий указал в ячейке<br />

Е5, обозначить ход, то условие, по которому можно<br />

определить, что тот или иной корабль ранен,<br />

следующее:<br />

поле(ход) = 1<br />

А вот факт “убийства” (потопления) корабля<br />

зафиксировать несколько сложнее. Здесь целесообразно<br />

каждой клетке с кораблем сопоста-<br />

…<br />

58<br />

Рис. 1<br />

май 2012 / ИНФОРМАТИКА<br />

Рис. 2<br />

1<br />

Описанную методику можно применить и в электронной таблице OpenOffice.org Calc. Исключение в том, что в последней<br />

русские имена процедур и имена величин в макросах следует заменить на латинские (pole, tip и т.д.).

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!