03.11.2014 Views

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

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

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

SHOW MORE
SHOW LESS

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

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

Saved successfully!

Ooh no, something went wrong!