Школоло / Говнокод #12966 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 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

Запостил: ckopo ckopo, (Updated )

Комментарии (11) RSS

  • Иногда мне даже жалко школьников, пишущих на бейсике.
    Ответить
    • А мне еще более жаль жкольников (sic), пишущих на ПеХеПе.
      Тем более, летом меня ждет основательное изучение Си. Пора отрываться от земли.

      [Бейсик - штука такая, в чьи руки попадет. На нем недавно игру целую забабахали. На Гринлайт идет.
      А один взрослый человек трактат написал. Называется "В защиту Бейсика".]
      Ответить
      • > летом меня ждет основательное изучение Си
        Тогда вам надо было взять ник ckopo_C
        Ответить
        • Хе-хе.
          Нет, в моём "ckopo" уже есть "C", мне еще одну не надо. :з
          Да еще и неизвестно, как ckopo, дожить надо, с ceroDH9 расправиться.
          Ответить
    • Нет, мой. с:
      100% оригинально с нуля.

      Где пруф, что твой, м?
      Ответить
    • На железной логике и грешных GoTo.
      Зато работает, как надо. с:
      Ответить

Добавить комментарий

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8