#!
> а что с этой командой? могу менять статы в турнирной игре?
если ты про режим pvp, то /new дёргается один раз при входе в "лобби" игры. вызов /new после начала pvp сессии будет возвращать ошибку.
> и что если единственный участник каждый ход начинал заново?
если ты про режим pvp, то повторный вызов /new будет возвращать ошибку.
если ты про режим pve, то повторный вызов /new будет обнуляет все характеристики игрока, как будто он начал игру сначала.
Похоже, что методом /new я внёс неразбериху. Поэтому убираю его, а взамен будет метод "начать PVE игру": POST https://gdtanks.pythonanywhere.com/start_pve_game
В теле запроса необходимо передать характеристики танка:
{ 'hp': 2, 'shells': 2, 'attack': 2, 'visibility_range': 2, 'shooting_distance': 2 }
Для PVP режима будут отдельные методы
Добавил простенький пример AI на Питоне:
Добавил бонусы. Они рандомно спаунятся на карте. Их можно подбирать, каждый бонус даёт возможность увеличить любую характеристику танка на единицу.
Чтобы узнать, есть ли поблизости бонусы, нужно позвать метод http://gdtanks.pythonanywhere.com/info
В ответе будет массив "bonuses", содержащий координаты бонусов.
Чтобы узнать, есть ли непотраченные бонусы, нужно позвать метод http://gdtanks.pythonanywhere.com/info
В ответе будет переменная "points_available", содержащая количество очков, которые можно потратить.
Чтобы прибавить бонус к желаемой характеристике, нужно позвать АПИ: http://gdtanks.pythonanywhere.com/add_point/PARAMETER_NAME
где PARAMETER_NAME — имя характеристики танка, например "hp"
На отладочной карте бонусы условно обозначаются вопросиками:
aliskda
> if info.status_code == 400:
> break # нас подбили, выходим из цикла
о, это интересные подробности
видимо придётся слезать с urlmon
там даже статусных кодов нету)
Return value
Returns S_OK if the operation succeeded, or E_OUTOFMEMORY if there is insufficient memory to complete the operation.
URLOpenBlockingStream function
и оно возвращает S_OK даже если линка не существует
#!
> Return value
> Returns S_OK if the operation succeeded, or E_OUTOFMEMORY if there is
> insufficient memory to complete the operation.
Похоже не какую-то супер-низкоуровневую штуку.
#!
> всегда избегал веб-программирование, оно действительно просто брало из кеша, соответственно команды получались одноразовые все
Это проблема GET запросов. Сейчас перевожу на POST, там нет кеширования (перевожу не только из-за этого, но и из-за того, что изменения сущностей правильно делать через POST запросы).
aliskda
> Это проблема GET запросов
Это исключительно проблема браузеров. Которая здесь вообще непонятно каким боком.
Для http api ты можешь вообще свои методы придумать.
Der FlugSimulator
> Это исключительно проблема браузеров.
Ты уверен? Вот тут сравниваются GET и POST, и написано, что GET может кешироваться, а POST - нет:
К тому же #! жаловался, что у него были проблемы с кешированием.
aliskda
> Ты уверен?
Процентов на 200. Особенно если я сам пишу http доступ на базе tcp, или есть исходники.
> Вот тут сравниваются GET и POST, и написано, что GET может кешироваться, а POST - нет:
Именно там и написано "Example: A client (browser) sends an HTTP request..."
> #! жаловался, что у него были проблемы с кешированием.
Я не вдавался, что у него там. Может он http-либу от браузера использует. А может другую с кэшированием.
А может сервер настроен на кэширование.
До сих пор в моей игре был "один танк на всех", как правильно заметил #!.
Теперь я добавил новые сущности: "игра" и "танк", которые позволят создавать множество танков и параллельных игр.
Пример простого AI на Питоне:
Серверная часть готова. Приглашаются желающие для написания клиентов!
Вся необходимая информация собрана в нульпосте.
aliskda
А в чем писать, я имею ввиду программу? И с помощью чего отсылать код?
Просто я в этом абсолютный ноль.
Incvisitor
> А в чем писать, я имею ввиду программу?
Можно писать на любом языке, в котором есть возможность делать HTTP вызовы.
Тебе на каком языке проще всего писать? Попробую сделать на нём пример.
> И с помощью чего отсылать код?
Отсылать не надо. Запускаешь написанный код у себя на компе и смотришь результат выполнения.