- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
Function Shoot(lay() As String, x, y) As String
Let Shoot = ssMiss
Dim HorCheck As Boolean
Dim i As Byte
If lay(x, y) = ssShip Then
If 1 < x Then
If lay(x - 1, y) = ssEmpty Then GoTo Shoot_Right_Check
Let HorCheck = True
If lay(x - 1, y) = ssShip Then GoTo Shoot_WriteHit
End If
If 2 < x Then
If lay(x - 2, y) = ssEmpty Then GoTo Shoot_Right_Check
If lay(x - 2, y) = ssShip Then GoTo Shoot_WriteHit
End If
If 3 < x Then
If lay(x - 3, y) = ssEmpty Then GoTo Shoot_Right_Check
If lay(x - 3, y) = ssShip Then GoTo Shoot_WriteHit
End If
Shoot_Right_Check:
If x < N Then
If lay(x + 1, y) = ssEmpty Then GoTo Shoot_Up_Check
Let HorCheck = True
If lay(x + 1, y) = ssShip Then GoTo Shoot_WriteHit
End If
If x < (N - 1) Then
If lay(x + 2, y) = ssEmpty Then GoTo Shoot_Up_Check
If lay(x + 2, y) = ssShip Then GoTo Shoot_WriteHit
End If
If x < (N - 2) Then
If lay(x + 3, y) = ssEmpty Then GoTo Shoot_Up_Check
If lay(x + 3, y) = ssShip Then GoTo Shoot_WriteHit
End If
Shoot_Up_Check:
If HorCheck Then GoTo Shoot_Write_Sink
For i = 1 To 3
If i < y Then
If lay(x, y - i) = ssEmpty Then GoTo Shoot_Down_Check
If lay(x, y - i) = ssShip Then GoTo Shoot_WriteHit
End If
Next i
Shoot_Down_Check:
For i = 1 To 3
If y < N - i + 1 Then
If lay(x, y + i) = ssEmpty Then GoTo Shoot_Write_Sink
If lay(x, y + i) = ssShip Then GoTo Shoot_WriteHit
End If
Next i
Shoot_Write_Sink:
Let Shoot = ssSink
End If
Exit Function
Shoot_WriteHit:
Let Shoot = ssHit
End Function
Из решения задачи про морской бой из заочной олимпиады.
Процедура выстрела на твердой логике (ближе к концу перекроил на цикл) и грешном GoTo.
А еще строчка из другой процедуры порадовала. Оставлю её здесь: Dim x, y, i As Byte
eth0 05.05.2013 17:09 # +1
ckopo 05.05.2013 17:22 # +3
Тем более, летом меня ждет основательное изучение Си. Пора отрываться от земли.
[Бейсик - штука такая, в чьи руки попадет. На нем недавно игру целую забабахали. На Гринлайт идет.
А один взрослый человек трактат написал. Называется "В защиту Бейсика".]
roman-kashitsyn 06.05.2013 00:19 # +1
Тогда вам надо было взять ник ckopo_C
scriptin 06.05.2013 00:53 # 0
ckopo 06.05.2013 01:08 # −2
Нет, в моём "ckopo" уже есть "C", мне еще одну не надо. :з
Да еще и неизвестно, как ckopo, дожить надо, с ceroDH9 расправиться.
bormand 06.05.2013 05:58 # +3
guest 07.05.2013 00:00 # −2
ckopo 07.05.2013 00:58 # 0
100% оригинально с нуля.
Где пруф, что твой, м?
Lure Of Chaos 07.05.2013 16:02 # 0
ckopo 08.05.2013 00:48 # 0
Зато работает, как надо. с:
guest 07.05.2013 16:03 # −1