Не сдался, но пошел по другому пути
От 0 до Google PlayСразу спойлер - решить ту проблему мне не удалось. Я пробовал запустить обновление интерфейса в отдельном потоке, пробовал обновлять по таймеру, ничего не получилось. Если убрать цикл, и переключать действия кнопкой, то обновление проходит без проблем, но в цикле не получится, обновляется только по завершению функции. Ну ладно. Я не стал дальше тратить время на это, и решил сделать по другому.
Я совсем убрал графический интерфейс. теперь весь результат боя записывается в лог файл. Выглядит это примерно так:
Все работает. Конечно, не совсем так, как планировалось изначально, все таки с GUI было бы привлекательнее. Но у меня есть еще одна идея что можно сделать с этим проектом, и там GUI уже будет работать отлично.
Я оставлю запись в лог файл, штука в любом случае полезная, стоит использовать. Теперь я сделаю режим игры против бота. То есть, в окно будет выводиться информация про обоих героев + для пользователя/игрока будет несколько кнопок с разными действиями (атаковать, выпить эликсир и тд.). Чтобы было интереснее, я попробую придумать и добавить пару заклинаний героям. В целом, все идет достаточно хорошо.
Ну и обещанные кусочки кода. Покажу что ли класс героя, его поля данных и методы (на скринах пропущены геттеры, потому что это не интересно и понятно):
У каждой из характеристик есть свои диапазоны значений:
Для жизней это 500-1000, для силы 50-100, для защиты 20-50, шанс уклонения (в процентах) 10-30 ну и от 1 до 3 эликсиров.
Поскольку случайные числа в Java псевдо-случайны, как стартовый параметр для расчета случайных чисел я использую System.currentTimeMillis(), так при каждом запуске характеристики будут уникальными.
Вот такие дела. Буду продолжать работать