ÐÑпÑÑк 5 - РоÑÑийÑкий гоÑÑдаÑÑÑвеннÑй пÑоÑеÑÑионалÑно ...
ÐÑпÑÑк 5 - РоÑÑийÑкий гоÑÑдаÑÑÑвеннÑй пÑоÑеÑÑионалÑно ...
ÐÑпÑÑк 5 - РоÑÑийÑкий гоÑÑдаÑÑÑвеннÑй пÑоÑеÑÑионалÑно ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
вить номер типа корабля, к которому она относится,<br />
например, если односекционный — 1,<br />
2-секционный — 2 и т.д., а если в клетке корабля<br />
нет — 0. Соответствующие значения будем<br />
хранить в массиве с именем тип из 40 элементов.<br />
Следовательно, для указанной расстановки<br />
кораблей имеем:<br />
1) для 4-секционного:<br />
For i = 6 To 9<br />
тип(i) = 4<br />
Next i<br />
2) для 3-секционных:<br />
For i = 21 To 23<br />
тип(i) = 3<br />
Next i<br />
For i = 37 To 39<br />
тип(i) = 3<br />
Next i<br />
3) для 2-секционных:<br />
тип(3) = 2<br />
тип(4) = 2<br />
тип(12) = 2<br />
тип(13) = 2<br />
тип(17) = 2<br />
тип(18) = 2<br />
4) для односекционных:<br />
тип(15) = 1<br />
тип(27) = 1<br />
тип(32) = 1<br />
тип(34) = 1<br />
С учетом сказанного условие, по которому после<br />
“ранения” какого-либо корабля можно зафиксировать<br />
факт потопления односекционного корабля,<br />
будет таким:<br />
поле(ход – 1) = 0 And поле(ход + 1) = 0<br />
— 2-секционного:<br />
поле(ход – 1) = 2 Or поле(ход + 1) = 2<br />
— 3-секционного:<br />
поле(ход - 2) = 2<br />
And поле(ход - 1) = 2<br />
Or поле(ход - 1) = 2<br />
And поле(ход + 1) = 2<br />
Or поле(ход + 1) = 2<br />
And поле(ход + 2) = 2<br />
Для 4-секционного корабля соответствующее<br />
условие будет достаточно громоздким (возможны<br />
4 варианта):<br />
поле(ход - 3) = 2<br />
And поле(ход - 2) = 2<br />
And поле(ход - 1) = 2<br />
Or поле(ход - 2) = 2<br />
And поле(ход - 1) = 2<br />
And поле(ход + 1) = 2<br />
Or поле(ход - 1) = 2<br />
And поле(ход + 1) = 2<br />
And поле(ход + 2) = 2<br />
Or поле(ход + 1) = 2<br />
And поле(ход + 2) = 2<br />
And поле(ход + 3) = 2<br />
Чтобы определить, что игра закончилась, следует<br />
подсчитывать количество потопленных кораблей.<br />
Итак, разобравшись с логикой игры, можем перейти<br />
к кнопкам.<br />
Разместить их на листе и оформить на кнопке<br />
соответствующую надпись можно, вызвав панель<br />
инструментов Формы 2 . К каждой кнопке “привязываются”<br />
так называемые “макросы” — программы,<br />
написанные на языке программирования VBA,<br />
которые выполняются по щелчку на той или иной<br />
кнопке. Макрос можно создать сразу после размещения<br />
кнопки или потом.<br />
В первом случае после появления окна Назначить<br />
макрос объекту (рис. 3) необходимо:<br />
— изменить имя макроса на “Новая игра” или<br />
“Подтвердить ход”;<br />
— щелкнуть на кнопке Создать и в появившемся<br />
окне кода оформить макрос, записав в нем необходимые<br />
действия.<br />
Во втором случае следует вызвать правой кнопкой<br />
мыши контекстное меню и выбрать в нем пункт<br />
Назначить макрос. Последующие действия аналогичны<br />
описанным для первого случая.<br />
Рекомендуем читателям, прежде чем идти<br />
дальше, потренироваться с созданием кнопок<br />
и “привязки” к ним макросов. В качестве действий<br />
в макросах укажите, например, команду<br />
MsgBox("Здравствуйте, люди!").<br />
Рис. 3<br />
Теперь о содержании “наших” макросов.<br />
По щелчку на кнопке с надписью “Подтвердить<br />
ход” должны проводиться следующие действия:<br />
1. Считывание введенного в ячейке Е5 номера<br />
клетки.<br />
2. Проверка соответствующей клетки поля:<br />
если в соответствующем ей элементе<br />
массива поле записан 0<br />
то<br />
это промах<br />
все<br />
если записано 1<br />
то |это как минимум "ранение"<br />
Надо записать в данный элемент<br />
значение 2,<br />
2<br />
Или панель Элементы управления.<br />
59<br />
май 2012 / ИНФОРМАТИКА