Войти на сайт

Авторизация, ждите ...
×
Правила раздела:
1 Задавайте конкретные вопросы. Для болтовни есть свободный раздел.
2 По возможности давайте конкретные ответы.
3 Один вопрос=одна тема. Если хотите задать ещё вопрос, то начинайте новую тему.
4 Название темы должно составлять сам вопрос, и быть максимально конкретным. Рекомендуется начинать тему словами "Как", "Что", "Почему". А первый пост повторяет вопрос и даёт расширенные сведения.
5 Рекомендуется указывать версию мейкера (2000, 2003, RMXP, RMVX, ACE, IGM, и.т.д.. Это важно, и всё равно ведь спросят.
6 Темы "Пара вопросов", "Помогите", и подобные им - самый лёгкий путь к бану.
7 Поиск находится вверху справа.
А. Названия подразделов этого раздела уточняются. Советы принимаются.

ТЕМА: [VX Ace] Прерывание цикла

[VX Ace] Прерывание цикла 8 года 4 нед. назад #91182

  • Paranoid
  • Paranoid аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 683
  • Спасибо получено: 350
Кто сидит в чате знает что я пилю тактическую боевку на ивентах. Игровые персонажи ходят, а вот интеллект для мобов я никак не могу осилить. Может кто-нибудь посмотрит проект и поможет мне с этим?

Ссылка: yadi.sk/d/oF3vtBLuqoM2x

В самом проекте уже есть пробный ии для зомби. смысл в том чтобы как только зомби заметит игрока он пытался дойти до него. Что он и делает, но мой цикл работает без остановки и зомби идет до тех пор пока не упрется в другое событие. На деле же мне нужно чтобы зомби делал всего 2 шага в сторону ближайшего видимого игрового персонажа.
P.S.: у меня 2 вложенных цикла for.
Последнее редактирование: 8 года 4 нед. назад от Paranoid.
Тема заблокирована.

[VX Ace] Прерывание цикла 8 года 4 нед. назад #91184

  • Волчонок
  • Волчонок аватар
  • Вне сайта
  • Просветлённый
  • Волчонок
  • Сообщений: 277
  • Спасибо получено: 247
  • 2 место 3 место в Кодировке3 местоОрганизатор конкурсов
На вскидку: введи количество ходов для каждого события, и каждый "раунд" восстанавливай. В цикле уменьшай количество ходов на единицу, добавь проверку "если ходов = 0 то выход из цикла".
Ленивый волчонок с большими амбициями

Рассказ "Рождение мага", периодически обновляется
РПГ История Егеря. Основной текущий проект.

ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]
Тема заблокирована.

[VX Ace] Прерывание цикла 8 года 4 нед. назад #91187

  • Paranoid
  • Paranoid аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 683
  • Спасибо получено: 350
Мысть здравая, вот только у меня уже места в коде нет(
Тема заблокирована.

[VX Ace] Прерывание цикла 8 года 4 нед. назад #91189

  • Волчонок
  • Волчонок аватар
  • Вне сайта
  • Просветлённый
  • Волчонок
  • Сообщений: 277
  • Спасибо получено: 247
  • 2 место 3 место в Кодировке3 местоОрганизатор конкурсов
Ну... Оптимизацию проведи о_О Нарисуй схему, подумай, что можно сократить, что можно объединить, а что - убрать.
Ленивый волчонок с большими амбициями

Рассказ "Рождение мага", периодически обновляется
РПГ История Егеря. Основной текущий проект.

ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]
Тема заблокирована.

[VX Ace] Прерывание цикла 8 года 4 нед. назад #91190

  • Amphilohiy
  • Amphilohiy аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 547
  • Спасибо получено: 666
  • Программист RubyОраторУчитель2 место ГотвПобедитель Сбитой кодировки
Я ленивый кусок лошади, так что могу предложить ленивую мысль.
Кусок кода с 2 циклами запихай в функцию. В функции вместо break сделай return. А я просто ленив и сейчас пока не сделаю (может позже, но по опыту кодировки лучше не расчитывать).
Кстати, объявлять переменные после мейна не имеет смысла.
Я верю, что иногда компьютер сбоит, и он выдает неожиданные результаты, но остальные 100% случаев это чья-то криворукость.
Тема заблокирована.
За этот пост поблагодарили: yuryol

[VX Ace] Прерывание цикла 8 года 4 нед. назад #91191

  • Paranoid
  • Paranoid аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 683
  • Спасибо получено: 350
Amphilohiy пишет:
Я ленивый кусок лошади, так что могу предложить ленивую мысль.
Кусок кода с 2 циклами запихай в функцию. В функции вместо break сделай return. А я просто ленив и сейчас пока не сделаю (может позже, но по опыту кодировки лучше не расчитывать).
Кстати, объявлять переменные после мейна не имеет смысла.
Было бы круто увидеть пример. А переменные я объявил там, потому что мне так Демий сказал, я не знаю "правил" руби.
Тема заблокирована.

[VX Ace] Прерывание цикла 8 года 4 нед. назад #91192

  • Amphilohiy
  • Amphilohiy аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 547
  • Спасибо получено: 666
  • Программист RubyОраторУчитель2 место ГотвПобедитель Сбитой кодировки
Думаю можно обойтись лямбдой примерно так:
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]

Но я не совсем до конца понял что происходит в коде, поэтому сказать рабочий ли он в целом не могу, но сама часть с лямбдой работает на примере
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


P.S. Все объявления после мейна просто не сработают в игре, только после нее. Может Демий имел ввиду после "Дополнения", но до мейна? Обычно так советуют.
Я верю, что иногда компьютер сбоит, и он выдает неожиданные результаты, но остальные 100% случаев это чья-то криворукость.
Последнее редактирование: 8 года 4 нед. назад от Amphilohiy.
Тема заблокирована.

[VX Ace] Прерывание цикла 8 года 4 нед. назад #91193

  • Paranoid
  • Paranoid аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 683
  • Спасибо получено: 350
Хм, а что делает p [x, y]?
Тема заблокирована.

[VX Ace] Прерывание цикла 8 года 4 нед. назад #91194

  • Amphilohiy
  • Amphilohiy аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 547
  • Спасибо получено: 666
  • Программист RubyОраторУчитель2 место ГотвПобедитель Сбитой кодировки
Paranoid пишет:
Хм, а что делает p [x, y]?
Просто выводит сообщение в консоль, если она у тебя включена. В данном случае выводит массив из x и y.
Я верю, что иногда компьютер сбоит, и он выдает неожиданные результаты, но остальные 100% случаев это чья-то криворукость.
Тема заблокирована.

[VX Ace] Прерывание цикла 8 года 3 нед. назад #91199

  • Paranoid
  • Paranoid аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 683
  • Спасибо получено: 350
Нет, ничего не изменилось.

Скрипт с твоим дополнением:
if $game_map.events[1].x > $game_map.events[4].x # сравнивает коордитаты x врага и юнита и забивает в ax меньшее, в bx большее
 ax = $game_map.events[4].x
 bx = $game_map.events[1].x
else
 ax = $game_map.events[1].x
 bx = $game_map.events[4].x
end
if $game_map.events[1].y > $game_map.events[4].y # сравнивает коордитаты y врага и юнита и забивает в ay меньшее, в by большее
 ay = $game_map.events[4].y
 by = $game_map.events[1].y
else
 ay = $game_map.events[1].y
 by = $game_map.events[4].y
end
lambda do
 for x in ax..bx # цикл 1 
  for y in ay..by # цикл второй
   if reachable_in_steps?(4, x, y, 2) == true # враг сможет дойти до этих координат за 2 шага?
    find_path(4, x, y, true) # если да, то пусть идет в них
    return
   end
   y+=1 #меняеем y
  end
  x+=1 #меняеем x
 end
end.call
Последнее редактирование: 8 года 3 нед. назад от Paranoid.
Тема заблокирована.

[VX Ace] Прерывание цикла 8 года 3 нед. назад #91238

  • Paranoid
  • Paranoid аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 683
  • Спасибо получено: 350
Я нашел ошибку, она сидела прямо перед монитором. Цикл прекрасно завершался, но так как после него не было никаких команд он просто повторял себя. К сожалению возникли новые проблемы. А так проблема решена, всем спасибо за помощь.
Тема заблокирована.
Время создания страницы: 0.267 секунд