Готовый перевод QuakeC Manual / QuakeC Мануал: 3.Переменные и типы данных
3.1. Типы
Множество значений, и набор примитивных операций, которые реализуют основные аспекты его семантики
характеризующие тип.Объект данного типа является ентити во время выполнения , которое содержит (имеет) значение этого типа.
Вы не можете определить новые типы из существующих.В частности, вы не можете определить новые структуры или
объекты.Эти ограничения делают QuakeC неблагоприятным по сравнению с BASIC.
Вы можете добавить поля только для наиболее важных типов в QuakeC: ентити.
3.2. Простые типы
3.2.1.1. Пустые типы
void_declaration => void
Пустой результат, в основном, используется для определения процедуры (т. е. функции, которые не возвращают результат на всех).
3.2.1.2. Типы с плавающей точкой
floating_point_declaration => float name
Значение с плавающей точкой.Float также используется для хранения Булевых(TRUE, FALSE) значений; целочисленных(integer) значений, таких как
счетчики, либо флаги.
Анализ двусмысленности присутствует с отрицательными константами: "a-5" (5 вычитается из а) будет анализироваться как
"a", затем "-5", что приведет к ошибке. Отделим "-" от цифры пробелом ("а - 5"), чтобы получить надлежащее
свойство.
3.2.1.3. Векторные типы
vector_declaration => vector name
Вектор состоит из трех координат с плавающей точкой.Используется для обозначения позиции или направления в 3D-пространстве.
Обратите внимание, что одинарные кавычки (') окружают вектор.Не используйте двойные кавычки,они зарезервированы для строк.
Если вы объявляете вектор foobar, то вы можете получить его поля x, y и z,с float типами: foobar_x,
foobar_y, и foobar_z.
3.2.1.4. Строковые типы
string_declaration => string name
Представляет собой строку символов.Используется для указания имени файла или сообщения, которые будут транслироваться игрокам.Используйте
”\n “ для новой строки.\" может быть использован, чтобы включить кавычки (") в строке.
3.2.1.5. Типы ентити
entity_declaration => entity name
Ентити представляет объекты в игре, такие как вещи, игроков или монстров.Например, этот тип
ентити self и other.Тип ентити представляет собой структурированный тип, состоящий из полей.
3.2.2. Типы полей
В отличие от других типов, тип ентити является ссылкой на экземпляр структурированного объекта, который содержит
информацию самых разных видов, она хранится в полях объекта ентити.Каждому полу дается имя и
тип.
Некоторые поля не хранят значения;вместо этого, они хранят функцию, которая будет выполняться при определенных
условиях, вызванных методов..
Если QuakeC был объектно-ориентированным языком программирования,метод функции отличался бы от
других полей, и вы смогли бы создавать новые типы объектов, с собственными полями.
Поскольку QuakeC в настоящее время стоит,все определения поля-определения полей ентити.Таким образом, в вашем
коде можно добавить определение нового поля, а компилятор будет интерпретировать его как продолжение
определения ентити.
Вот все возможные определения полей ентити, с их типами:
.float name
.string name
.vector name
.entity name
3.2.3. Зарезервированные типы полей
DEFS.QC,первый файл,который читает компилятор,тут должны быть определены поля ентити и
все другие поля.Данное определение жестко запрограммированно, и не может быть изменено без необходимости перекомпиляции
движка Quake.
В DEFS.QC, глобальные переменные определены до того, как специальным определением “void end_sys_globals;“,а
поля ентити определены до специальным определением “void end_sys_fields;”.Не важно
понимать теги, просто не изменяйте DEFS.QC перед этими двумя тегами, и не будет проблем. Лучше
тем не менее, избежать изменения DEFS.QC вообще и использовать файлы заголовков для определения поля ентити , глобальных переменных, констант,
и прототипов.
3.3. Определение переменных
variable_declaration => [local] simple_type name [ = immediate][, name][ =
<immediate>] …
Есть два уровня видимости.По умолчанию все переменные являются глобальными: они могут быть доступны любой
функции,и они являются общими для всех функций (и всех клиентов данного сервера, разумеется).
Обратите внимание, что переменным не может быть дано начальное значение по умолчанию в качестве части их декларации.
Использование ключевого слова local перед объявлением переменной, делает значение(я) видимыми только для
себя (то есть она будет в стеке).
Обратите внимание, что параметры функций рассматриваются как локальные переменные, они видны только функции, но
они могут быть изменены.
3.4. Определение константы
constant_declaration => simple_type name = value
Любая глобальная переменная которая инициализируется путем установки значения к нему фактически считается постоянной.С
постоянной
на самом деле представлены непосредственные значения, вы не должны пытаться изменить константу
придав ей другое значение.Кроме того, не используйте другую константу в качестве значения константы. литералы должны
использоваться только в качестве значения констант.
Внимание! Этот перевод, возможно, ещё не готов.
Его статус: перевод редактируется
Переведено на Нотабеноиде
http://notabenoid.org/book/38550/141710
Переводчики: railgun
Настройки
Готово:
