ÐÑпÑÑк 5 - РоÑÑийÑкий гоÑÑдаÑÑÑвеннÑй пÑоÑеÑÑионалÑно ...
ÐÑпÑÑк 5 - РоÑÑийÑкий гоÑÑдаÑÑÑвеннÑй пÑоÑеÑÑионалÑно ...
ÐÑпÑÑк 5 - РоÑÑийÑкий гоÑÑдаÑÑÑвеннÑй пÑоÑеÑÑионалÑно ...
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 и т.д.).