@inputs Clk Reset
@outputs Second Milli Micro
interval(1)
while(Clk == 1)
{
Second = Second + 0.01
Milli = Milli + 1
Micro = Milli * 100
if(Reset == 1 & Clk == 0)
{
Second = 0
Milli = 0
Micro = 0
}
break
}
@name Timer
@name это директива которая обозначает что следующее что за ней пойдет, это имя, до конца строки.
@inputs Clk Reset
В данном случае директива дает знать игре какие будут входы на чипе, записывать их нужно раздельно, поэтому названий входом вроде "WTF HAAX" не получится. Таким же образов действует @outputs только там обозначаются выходы.
Главная работа КЭПа завершается.
interval(1) - это команда обозначает сколько раз будет повторятся код, точнее сказать, через какие промежутки времени. В миллисекундах обозначается если что. Синтаксис думаю понятен. Кстати я пока сам до конца не понял как это действует, что, повторяется код от и до фигурных скобок?
while(Clk == 1) - ключевое слово "while" обозначает что пока выполняется условие, будет выполнятся и то что находится в скобках. Правда в сборке сайта этот цикл бесполезен, так как если не поставит break в конце, игра не будет принимать, так как она считает что условия всегда выполняются, и игра может зависнуть. А если поставить в условие x < 100 получается что? Что всегда может быть X меньше 100? Получается цикл становится тем же if.
Second = Second + 0.01
Milli = Milli + 1
Micro = Milli * 100
Ну думаю с этим все понятно. Математические операции. Кстати если написать например Second + 10, а не Second = Second + 10, то по непонятной причине игра сложит числа, но не засунет их в первый оператор(точнее говоря она будет считать что Second это первый оператор, с неизвестным числом, и игра автоматом подставляет ему значение 0, и получается циклом всегда будет получатся 10, а не увеличиваться на 10). Хотя в циклах for правило не действует, очень странно.
if(Reset == 1 & Clk == 0)
О, самое интересное. Ключевое слово "if" по-русски "если", обозначает что если условие выполнилось, то один развыполняется код в скобках, если нет, то не выполняется. Кстати в условии можно использовать логические операции, в моем случае используется "И", обозначаемый символом "&", думаю что логические операции не надо объяснять, потому что любой их знает, кто видел программирование хоть глазком.
Second = 0
Milli = 0
Micro = 0
КЭП. Обнуление.
break
Как ни странно эта функция используется для преждевременных выходов из цикла. Всегда нужно ставить в нашем цикле, иначе игра не примет. Игра - дура)))) ВАМ ЖЕ СКАЗАЛИ НЕ ВЫДЕЛЯТЬ! Не выделяйте то что тут было написано)!
В заключение пару нюансов:
"=", и "==" это разные операции, просто "=" обозначает присвоение значения к чему то, а "==" обозначает что эти два операнда равны.
Clk - вход для кнопки которая врубает таймер.
Reset - для того чтобы сбросить таймер.
Second, Milli, Micro - КЭП, выходы для значений секунд, миллисекунд, микросекунд.