Как изменить светлый цвет породы в Нетлого - PullRequest
1 голос
/ 05 апреля 2020

В настоящее время я пытаюсь переделать город и траффий c симулятор толпы, найденный здесь, для поддержки самоуправляемых автомобилей ИИ, который можно найти здесь.

То, что я сейчас застрял, это когда траффи c огни, где по свету go от красного прямо к зеленому, я хочу добавить желтый цвет в симуляцию, чтобы огни go от красного, затем к желтому, а затем к зеленому - это то, что у меня есть, но это только кажется заморозить на желтом.

Пожалуйста, любая помощь будет полезна, спасибо.

1 Ответ

2 голосов
/ 05 апреля 2020

Ниже я переформатировал ваш контрольный траффик c -lights код

to control-traffic-lights
  if ticks mod (100) = 0
  [ change-color lightsR  ; red to yellow; others to red
    change-color lightsL  ; red to yellow; others to red
    change-color lightsU  ; red to yellow; others to red
    change-color lightsD  ; red to yellow; others to red
    yellow-color lightsR  ; yellow to green; others to yellow
    yellow-color lightsL  ; yellow to green; others to yellow
    yellow-color lightsU  ; yellow to green; others to yellow
    yellow-color lightsD  ; yellow to green; others to yellow
 ]
end

Представьте, что вы нажали соответствующую галочку (каждые 100), начните с lightsR - все, что красные, становятся желтыми на первой строке зеленеет на пятой строке. Если при входе они имеют любой цвет, кроме красного, они становятся красными в первой строке и желтыми в пятой.

Все четыре вида огней проходят одну и ту же логику c. То есть процедура желтого цвета немедленно применяется к источникам света в зависимости от цвета, который они выходят из процедуры изменения цвета.

ОБНОВЛЕНИЕ : я не внес никаких изменений в Ваш код, я просто отформатировал его так, чтобы его можно было прочитать, чтобы попытаться объяснить вашу проблему с логикой c.

Если они введены как красный, они изменятся на зеленый (через желтый) Если они введены как желтый, они выходят как желтый (через красный) Если они выходят как зеленый, они выходят как желтый (через красный)

Что вам нужно сделать, это изменить, когда выполняется процедура желтого цвета, так что это на несколько тиков позже другое изменение цвета, а не в том же тике.

Попробуйте изменить второй if ticks mod (100) = 0 [yellow-color l ...] на if ticks > 10 and ticks mod (105) = 0 [yellow-color l ...]

...