RedCodeFile

Материал из CoreWiki.

Перейти к: навигация, поиск

Общепринятый формат файла с листингом программы на RedCode (Расширение .red)

Содержимое файла - либо команды языка, либо комментарии. Комментарии начинаются с символа ; Принято соглашение (обычно вы вынуждены будете выполнить его посылая программу на холм) в начале файла первой строкой давать комментарий

;redcode

До этой строки содержимое файла игнорируется (?) Также часто в этой же строки сервер просит указывать на какой холм отправляется этот боец. Плюс некоторые серверы поддерживают в этой же строке команду verbose для указания что требуется высылать статистику программы после каждого боя, или quiet чтобы получать сообщение только когда новый кандидат таки влез на холм или вашего бойца выпихнули с холма.

Потом в любом порядке желательно указать опциональные строки с дополнительной информацией

;name ИМЯ-ПРОГРАММЫ
;author ИНФОРМАЦИЯ ОБ АВТОРЕ
;strategy НЕСКОЛЬКО СТРОК
;strategy  О СТРАТЕГИИ ПРОГРАММЫ
;version ВЕРСИЯ

Полезный комментарий-макрос (впрочем при его отсутствии на большинстве серверов вы получите ошибку компиляции, так что можно считать его обязательным)

;assert ВЫРАЖЕНИЕ

где ВЫРАЖЕНИЕ это арифметико-логическая конструкция. Если ВЫРАЖЕНИЕ ложно - вылезет ошибка компиляции. assert применяется для проверки того, что текущая КонфигурацияMARS именно та, на которую рассчитана программа. Результат ВЫРАЖЕНИЕ должен быть логическим. Синтаксис аналогичный Сишному, но более ограниченный. Примеры использования :

; проверим что размер Core 8000 ячеек
;assert CORESIZE == 8000 
; проверим что P-Space запрещён и наш боец удовлетворяет ограничениям на длину
; не уверен в правильности этого примера :(
;assert (PSPACESIZE == 0) && (MAXLENGTH > (end - start))
start
...
;ваш код
...
end

Кстати, если ваш боец очень мал и удовлетворяет всем разумным условиям и поэтому в нём отсутствуют assert'ы, стоит добавить строку

;assert 1

Это предотвратит предупреждение компилятора "No assert present" (Отсутсвует assert) и позволит вашей проге правильно скомпиляться.


--yGREK 13:16, 23 Авг 2005 (EDT)

Личные инструменты