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 />

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!