| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- package wrag
- import (
- "strconv"
- "strings"
- "wartank/pkg/components/kernel/logger"
- "wartank/pkg/types"
- )
- /*
- Танк враг на битве, сражении, дуэли, войне
- */
- // Враг -- объект врага
- type Враг struct {
- сервер types.ИСервер
- лог types.ИЛоггер
- health int // здоровье вражины
- }
- // НовВраг -- возвращает новый объект врага
- func НовВраг(app types.ИСервер, lstBattle []string) *Враг {
- лог := logger.НовЛоггер("Враг")
- лог.Отладка("НовВраг()\n")
- сам := &Враг{
- сервер: app,
- лог: лог,
- }
- сам.update(lstBattle)
- return сам
- }
- // Обновляет вражину
- func (сам *Враг) update(lstBattleOn []string) {
- // <img class="tank-img" src="/tankimg?c=2&k=1&m=0-2,1-2,2-0,3-2,5-2,6-0&t=png" alt="Тень Брата">
- var (
- ind int
- strOut string
- еслиНайдено bool
- )
- for ind, strOut = range lstBattleOn {
- if strings.Contains(strOut, `<img class="tank-img" src="/`) {
- // Убедиться, что это не свой танк
- if strings.Contains(strOut, "prospero tank") {
- continue
- }
- еслиНайдено = true
- break
- }
- }
- if !еслиНайдено { // Не нашёл метку врага
- сам.лог.Ошибка("update(): не нашёл метку врага\n")
- сам.health = 800
- return
- }
- // Вражина найдена, ищем настоящее здоровье
- ind += 13
- strOut = lstBattleOn[ind]
- lstHealth := strings.Split(strOut, `<span>`)
- strHealth := lstHealth[1]
- lstHealth = strings.Split(strHealth, `</span>`)
- strHealth = lstHealth[0]
- iHealth, err := strconv.Atoi(strHealth)
- if err != nil {
- сам.лог.Ошибка("update(): здоровье(%v) не число, err=\n\t%v\n", strHealth, err)
- сам.health = 800
- return
- }
- сам.health = iHealth
- }
|