ÐÑпÑÑк 5 - РоÑÑийÑкий гоÑÑдаÑÑÑвеннÑй пÑоÑеÑÑионалÑно ...
ÐÑпÑÑк 5 - РоÑÑийÑкий гоÑÑдаÑÑÑвеннÑй пÑоÑеÑÑионалÑно ...
ÐÑпÑÑк 5 - РоÑÑийÑкий гоÑÑдаÑÑÑвеннÑй пÑоÑеÑÑионалÑно ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
В МИР ИНФОРМАТИКИ № 176<br />
60<br />
май 2012 / ИНФОРМАТИКА<br />
а потом также проверить, не потоплен<br />
ли корабль в целом.<br />
Для этого следует рассмотреть 4 типа<br />
кораблей<br />
(см. выше)<br />
все<br />
если в ней записано 2<br />
то<br />
это повторный выстрел в эту клетку<br />
все<br />
3. Проверка игры на предмет ее окончания. Ясно,<br />
что игра закончится, когда будут потоплены все 10<br />
кораблей компьютера. Поэтому следует использовать<br />
для подсчета некоторую величину (пусть ее имя<br />
число_потоп), значение которой в случае потопления<br />
того или иного корабля надо увеличивать на 1.<br />
4. Вывод сообщения, соответствующего введенному<br />
номеру клетки. Это сообщение следует формировать<br />
на этапах 2 и 3 в виде величины с именем<br />
сообщение строкового типа. Можно поступить следующим<br />
образом:<br />
— если клетка с номером ход пустая<br />
(поле(ход) = 0):<br />
сообщение = "Мимо!"<br />
— если в клетке с номером ход находится секция<br />
“раненого” или уже потопленного корабля<br />
(поле(ход) = 2):<br />
сообщение = "Вам что, снарядов<br />
не жалко?"<br />
— если в клетке находится “живая” секция корабля<br />
(поле(ход) = 1), то<br />
1) сначала можно принять:<br />
сообщение = "Ранил!"<br />
2) если при последующей проверке выяснится,<br />
что корабль, которому принадлежит данная клетка,<br />
потоплен, изменить значение переменной сообщение:<br />
сообщение = "Убил!"<br />
3) если выяснится, что игра закончилась (число_<br />
потоп = 10), то имеющееся значение величины сообщение<br />
(оно равно "Убил!") следует дополнить:<br />
сообщение = сообщение + ".<br />
Игра закончена"<br />
Весь макрос, связанный с кнопкой с надписью<br />
“Подтвердить ход”, имеет вид:<br />
Sub Кнопка_Подтверждение()<br />
Dim ход As Integer, сообщение As String<br />
'Считываем введенный номер клетки<br />
ход = Range("E5").Value<br />
Select Case поле(ход)<br />
Case 1<br />
поле(ход) = 2<br />
сообщение = "Ранил!"<br />
'Проверяем, не убил ли совсем<br />
'Рассматриваем 4 типа кораблей<br />
Select Case тип(ход)<br />
Case 1<br />
If поле(ход - 1) = 0<br />
And поле(ход + 1) = 0 Then<br />
сообщение = "Убил!"<br />
число_потоп = число_потоп + 1<br />
End If<br />
Case 2<br />
If поле(ход - 1) = 2<br />
Or поле(ход + 1) = 2 Then<br />
сообщение = "Убил!"<br />
число_потоп = число_потоп + 1<br />
End If<br />
Case 3<br />
If поле(ход - 2) = 2<br />
And поле(ход - 1) = 2<br />
Or поле(ход - 1) = 2 And<br />
поле(ход + 1) = 2<br />
Or поле(ход + 1) = 2<br />
And поле(ход + 2) = 2 Then<br />
сообщение = "Убил!"<br />
число_потоп = число_потоп + 1<br />
End If<br />
Case 4<br />
If поле(ход - 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 Then<br />
сообщение = "Убил!"<br />
число_потоп = число_потоп + 1<br />
End If<br />
End Select 'Конец проверки<br />
'по типам кораблей<br />
Case 0<br />
сообщение = "Мимо!"<br />
Case 2 'Повторный выстрел<br />
'в ту же клетку<br />
сообщение = "Вам что, снарядов<br />
не жалко?"<br />
End Select 'Конец проверки<br />
'по значению в клетке<br />
If число_потоп = 10 Then<br />
сообщение = сообщение + ".<br />
Игра закончена"<br />
End If<br />
'Выводим сообщение<br />
MsgBox(сообщение)<br />
End Sub<br />
Макрос, связанный с кнопкой с надписью “Новая<br />
игра”, сначала (при отладке) оформляется так:<br />
Sub Кнопка_НоваяИгра()<br />
Dim i As Integer<br />
'Заполняем массив поле нулями<br />
For i = 1 To 40<br />
поле(i) = 0