| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- package wrag
- import (
- "strconv"
- "strings"
- . "wartank/pkg/kernel/kernel_types"
- "wartank/pkg/kernel/logger"
- . "wartank/server/lev0/types"
- )
- /*
- Танк враг на битве, сражении, дуэли, войне
- */
- // Враг -- объект врага
- type Враг struct {
- сервер ИСервер
- лог ИЛоггер
- здоровье int //
- }
- // НовВраг -- возвращает новый объект врага
- func НовВраг(app ИСервер, 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")
- сам.здоровье = 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)
- сам.здоровье = 800
- return
- }
- сам.здоровье = iHealth
- }
|