wrag.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package wrag
  2. import (
  3. "strconv"
  4. "strings"
  5. . "wartank/pkg/kernel/kernel_types"
  6. "wartank/pkg/kernel/logger"
  7. . "wartank/server/lev0/types"
  8. )
  9. /*
  10. Танк враг на битве, сражении, дуэли, войне
  11. */
  12. // Враг -- объект врага
  13. type Враг struct {
  14. сервер ИСервер
  15. лог ИЛоггер
  16. здоровье int //
  17. }
  18. // НовВраг -- возвращает новый объект врага
  19. func НовВраг(app ИСервер, lstBattle []string) *Враг {
  20. лог := logger.НовЛоггер("Враг")
  21. лог.Отладка("НовВраг()\n")
  22. сам := &Враг{
  23. сервер: app,
  24. лог: лог,
  25. }
  26. сам.update(lstBattle)
  27. return сам
  28. }
  29. // Обновляет вражину
  30. func (сам *Враг) update(lstBattleOn []string) {
  31. // <img class="tank-img" src="/tankimg?c=2&amp;k=1&amp;m=0-2,1-2,2-0,3-2,5-2,6-0&amp;t=png" alt="Тень Брата">
  32. var (
  33. ind int
  34. strOut string
  35. еслиНайдено bool
  36. )
  37. for ind, strOut = range lstBattleOn {
  38. if strings.Contains(strOut, `<img class="tank-img" src="/`) {
  39. // Убедиться, что это не свой танк
  40. if strings.Contains(strOut, "prospero tank") {
  41. continue
  42. }
  43. еслиНайдено = true
  44. break
  45. }
  46. }
  47. if !еслиНайдено { // Не нашёл метку врага
  48. сам.лог.Ошибка("update(): не нашёл метку врага\n")
  49. сам.здоровье = 800
  50. return
  51. }
  52. // Вражина найдена, ищем настоящее здоровье
  53. ind += 13
  54. strOut = lstBattleOn[ind]
  55. lstHealth := strings.Split(strOut, `<span>`)
  56. strHealth := lstHealth[1]
  57. lstHealth = strings.Split(strHealth, `</span>`)
  58. strHealth = lstHealth[0]
  59. iHealth, err := strconv.Atoi(strHealth)
  60. if err != nil {
  61. сам.лог.Ошибка("update(): здоровье(%v) не число, err=\n\t%v\n", strHealth, err)
  62. сам.здоровье = 800
  63. return
  64. }
  65. сам.здоровье = iHealth
  66. }