commit
566df869c1
|
@ -0,0 +1,11 @@
|
|||
\b;Инструкция \c;abstime\n;
|
||||
Синтаксис¦:
|
||||
\s;\c;abstime ( );\n;
|
||||
|
||||
Созвращает время в секундах от начала миссии.
|
||||
|
||||
\t;Возвращает: \c;\l;float\u cbot\float;\n;
|
||||
Время в секундах.
|
||||
|
||||
\t;См. также
|
||||
\l;Язык CBOT\u cbot; и \l;Переменные\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,21 @@
|
|||
\b;Инструкция \c;aim\n;
|
||||
Синтаксис :
|
||||
\s;\c;aim ( угол );\n;
|
||||
|
||||
Эта инструкция устанавливает вертикальны угол пушки. Пушкой снабжаются следующи роботы:
|
||||
o \l;Стрелок\u object\botfr;
|
||||
o \l;Орга-стрелок\u object\botor;
|
||||
o \l;Фазовый стрелок\u object\botphaz;
|
||||
|
||||
Если управлять роботом с помощью программиорвания, единственный способ повернуть оружие вправо или влево - это повернуть робота целиком инструкцией \c;\l;turn\u cbot\turn;\n;.
|
||||
|
||||
\t;угол: \c;\l;float\u cbot\float;\n;
|
||||
Угол оружия относительно робота, в градусах. Положительное значение ориентирует ружье вперед. Для стрелков и орга-стрелков, угол должен быть от \c;-20\n; до \c;+20\n; градусов. Для фазовый стрелок стрелков, угол должен быть в пределах от \c;-20\n; до \c;45\n; градусов.
|
||||
|
||||
\t;Возвращаемое значение: \c;\l;int\u cbot\int;\n;
|
||||
Ноль если все в порядке. Число отличное от нуля, если вращение выполнить не удалось:
|
||||
\c;== 0 \n;Оружие получило нужную ориентацию
|
||||
\c;!= 0 \n;вращение невозможно
|
||||
|
||||
\t;смотреть также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,31 @@
|
|||
\b;Массивы
|
||||
Массив - это в основном набор переменных того же типа и класса. Вы можете использовать н-ное количество массивов в языке CBOT, однако максимальный размер массива равен 9999 элементов. Вы должны использовать квадратные скобки \c;[]\n; после того, как объявили массив.
|
||||
\c;
|
||||
\s;int [ ] a; // целочисленный массив
|
||||
\s;int a [12]; // целочисленный массив, где максимум 12 элементов
|
||||
\s;string s[3]; // массив с тремя строчками
|
||||
\s;float xy[][]; // двумерный массив плавающей запятой
|
||||
\n;
|
||||
На самом деле, когда компилятор CBOT встречает объявление массива, то он просто создает \c;\l;null\u cbot\null;\n; \l;ссылку\u cbot\pointer;:
|
||||
\c;
|
||||
\s;int a[5]; // просто пустая ссылка
|
||||
\n;
|
||||
Как только вы поместите значения в массив, элементы создаются и ссылки инициализируются:
|
||||
\c;
|
||||
\s;a[2] = 213; // указывает на
|
||||
\s; // три элемента [0], [1] и [2]
|
||||
\n;
|
||||
После этой операции, \c;a\n; содержит ссылки на элементы массива. Элементы \c;[0]\n; и \c;[1]\n; созданы, однако не инициализированы, т.к. они пусты. Инструкция \c;\l;sizeof\u cbot\sizeof;\n; позволяет получить число элементов, хранящихся в массиве.
|
||||
|
||||
Если массив объявлен с максимальным размером, то программа остановится, как только доступ к нему выйдет за его рамки(т.е. кол-во элементов+N). При компиляции ошибки не возникнет, даже если она очевидна:
|
||||
\c;
|
||||
\s;{
|
||||
\s; int a[5];
|
||||
\s; a[7] = 123; // нет ошибки при компиляции
|
||||
\s; // однако ошибка при выполнении
|
||||
\s;}
|
||||
\n;
|
||||
Если вы передаете \l;функции\u cbot\function; массив в качестве параметра, то функция получает только \l;ссылку\u cbot\pointer; на массив. Это означает, что если вы измение элемент в массиве, то этот элемент будет измененным и в самой функции.
|
||||
|
||||
\t;См. также
|
||||
\l;Язык CBOT\u cbot; и \l;Переменные\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,49 @@
|
|||
\b;Блоки
|
||||
Можно использовать скобки \c;{ }\n; чтобы сгруппировать несколько инструкций вместе и составить из них целый блок, например:
|
||||
\c;
|
||||
\s; {
|
||||
\s; float t;
|
||||
\s; t = a;
|
||||
\s; a = b;
|
||||
\s; b = t; // переключает между a и b
|
||||
\s; }
|
||||
\n;
|
||||
Каждая инструкци в блоке заканчивается \l;двоеточием\u cbot\term;, но не сам блок.
|
||||
Расмотрим следующий пример с инструкцией \c;\l;if\u cbot\if;\n; чтобы проиллюстрировать блоки в программах:
|
||||
\c;
|
||||
\s; if ( a < b )
|
||||
\s; \n;инструкция 1\c;;
|
||||
\s; \n;инструкция 2\c;;
|
||||
\s; \n;инструкция 3\c;;
|
||||
\n;
|
||||
Если \l;состояние\u cbot\cond; верно, то инструкции 1, 2 и 3 выполняются. Если состояние не верно, не выполняется только инструкция 1, а инструкции 2 и 3 выполняются. Тот факт, что инструкция 2 стоит в одной линии с инструкцией 1 на ход не влияет.
|
||||
Если вы хотите выполнить только инструкции 1 и 2, причем условие выполняется, вам нужно выделить их вместе в одном блоке:
|
||||
\c;
|
||||
\s; if ( a < b )
|
||||
\s; {
|
||||
\s; \n;инструкция 1\c;;
|
||||
\s; \n;инструкция 2\c;;
|
||||
\s; }
|
||||
\s; \n;инструкция 3\c;;
|
||||
\n;
|
||||
Блоки могут использоваться с инструкциями \c;\l;if\u cbot\if;\n;, \c;\l;while\u cbot\while;\n; и \c;\l;for\u cbot\for;\n;, чтобы сгруппировать отдельные инструкции, которые должны выполняться только если условие выполняется, или повторяется несколько раз.
|
||||
Можно включать блоки в другие блоки, на столько уровней насколько нужно. Вот пример включения в скобки на двух уровнях:
|
||||
\c;
|
||||
\s; if ( a > b )
|
||||
\s; {
|
||||
\s; int i = 0;
|
||||
\s; while ( i < 18 )
|
||||
\s; {
|
||||
\s; move(10);
|
||||
\s; turn(5);
|
||||
\s; i = i+1;
|
||||
\s; }
|
||||
\s; }
|
||||
\n;
|
||||
Было бы целесообразнее выравнивать открытую скобку \c;{\n; по закрытой скобке \c;}\n; в целях улучшения читаемости, но это необязательно. Следующий пример занимает меньше места, но эквивалентен предыдущему примеру, однако писать свои программы в подобном стиле не рекомендуется:
|
||||
\c;
|
||||
\s; if(a>b) { int i=0; while(i<18) {
|
||||
\s; move(10);turn(5);i=i+1; }}
|
||||
\n;
|
||||
\t;См. также
|
||||
\l;Инструкции\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,5 @@
|
|||
\b;Тип \c;bool\n;
|
||||
Переменной этого типа вы можете присваивать булевое значение, т.е. значение, которое может иметь лишь два состояния: да и нет.
|
||||
|
||||
\t;См. также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,24 @@
|
|||
\b;Инструкция \c;break\n;
|
||||
Синтаксис :
|
||||
\s;\c;while ( условие )
|
||||
\s;{
|
||||
\s; break;
|
||||
\s;}
|
||||
\n;
|
||||
С помощью этой инструкции, вы можете немедленно выйти из цикла функции \c;\l;while\u cbot\while;\n; или \c;\l;for\u cbot\for;\n;.
|
||||
|
||||
Вот пример:
|
||||
\s;\c;int i = 0;
|
||||
\s;while ( да )
|
||||
\s;{
|
||||
\s; \n;Инструкции...\c;
|
||||
\s; i = i+1;
|
||||
\s; if ( i >= 10 )
|
||||
\s; {
|
||||
\s; break;
|
||||
\s; }
|
||||
\s;}
|
||||
\n;
|
||||
|
||||
\t;См. также
|
||||
\l;Инструкции\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,108 @@
|
|||
\b;Значение \c;Категорий\n;
|
||||
Категории отображают названия обьектов на языке CBOT. В игре COLOBOT все предеты являются обьектами: роботы, здания, сырье, и т.д., даже сам игрок.
|
||||
|
||||
В самой программе, категории всегда отображаются на \const;красном фоне\norm;. Если категория не выделена красным, она названа не правильно. Заглавные и обычные буквы нужно оставлять как есть.
|
||||
|
||||
Ниже даются все известные категории:
|
||||
|
||||
\t;Здания:
|
||||
|
||||
\button 176; \c;\l;Houston\u object\Huston; \n;Управление Миссией
|
||||
\button 171; \c;\l;SpaceShip\u object\base; \n;Корабль
|
||||
\button 160; \c;\l;BotFactory\u object\factory; \n;Фабрика ботов
|
||||
\button 163; \c;\l;ResearchCenter\u object\research; \n;Исследовательский Центр
|
||||
\button 168; \c;\l;RadarStation\u object\radar; \n;Радар
|
||||
\button 172; \c;\l;ExchangePost\u object\exchange; \n;Пост Обмена Информацией
|
||||
\button 169; \c;\l;RepairCenter\u object\repair; \n;Ремонтный Центр
|
||||
\button 165; \c;\l;DefenseTower\u object\tower; \n;Защитная Башня
|
||||
\button 166; \c;\l;AutoLab\u object\labo; \n;Анализатор Органической Материи
|
||||
\button 164; \c;\l;PowerStation\u object\station; \n;Силовая Станция
|
||||
\button 167; \c;\l;PowerPlant\u object\energy; \n;Фабрика батареек
|
||||
\button 170; \c;\l;NuclearPlant\u object\nuclear; \n;Ядерная фабрика
|
||||
\button 162; \c;\l;Converter\u object\convert; \n;Титановый Конвертер
|
||||
\button 161; \c;\l;Derrick\u object\derrick; \n;Буровая Вышка
|
||||
\button 174; \c;\l;PowerCaptor\u object\captor; \n;Параболический громоотвод
|
||||
\button 175; \c;\l;Vault\u object\safe; \n;Хранилище
|
||||
\c;\l;StartArea\u object\start; \n;Стартовая площадка
|
||||
\c;\l;FinishArea\u object\goal; \n;Финальная Площадка
|
||||
\c;\l;AlienNest\u object\nest; \n;Гнездо Чужих
|
||||
|
||||
|
||||
\t;Переносные обьекты:
|
||||
|
||||
\c;\l;TitaniumOre\u object\titanore; \n;Титановая Руда
|
||||
\c;\l;UraniumOre\u object\uranore; \n;Урановая Руда
|
||||
\c;\l;Titanium\u object\titan; \n;Куб переработанного титана
|
||||
\c;\l;PowerCell\u object\power; \n;Обычная Батарейка
|
||||
\c;\l;NuclearPowerCell\u object\atomic; \n;Ядерная Батарейка
|
||||
\c;\l;OrgaMatter\u object\bullet; \n;Органическая Материя
|
||||
\c;\l;BlackBox\u object\bbox; \n;Черный Ящик
|
||||
\c;\l;TNT\u object\tnt; \n;Взрывное устройство
|
||||
\c;\l;KeyA..D\u object\key; \n;Ключи A, B, C and D
|
||||
|
||||
|
||||
\t;Роботы:
|
||||
|
||||
\button 158; \c;\l;PracticeBot\u object\bottr; \n;Тренировочный Бот
|
||||
\button 173; \c;\l;TargetBot\u object\bottarg; \n;Целевой бот
|
||||
|
||||
\button 137; \c;\l;WheeledGrabber\u object\botgr; \n;Колесный сборщик
|
||||
\button 138; \c;\l;TrackedGrabber\u object\botgc; \n;Гусеничный сборщик
|
||||
\button 139; \c;\l;WingedGrabber\u object\botgj; \n;Летающий сборщик
|
||||
\button 150; \c;\l;LeggedGrabber\u object\botgs; \n;Шагающий сборщик
|
||||
|
||||
\button 140; \c;\l;WheeledSniffer\u object\botsr; \n;Колесный сниффер
|
||||
\button 141; \c;\l;TrackedSniffer\u object\botsc; \n;Гусеничный сниффер
|
||||
\button 142; \c;\l;WingedSniffer\u object\botsj; \n;Летающий сниффер
|
||||
\button 152; \c;\l;LeggedSniffer\u object\botss; \n;Шагающий сниффер
|
||||
|
||||
\button 143; \c;\l;WheeledShooter\u object\botfr; \n;Колесный стрелок
|
||||
\button 144; \c;\l;TrackedShooter\u object\botfc; \n;Гусеничный стрелок
|
||||
\button 145; \c;\l;WingedShooter\u object\botfj; \n;Летающий стрелок
|
||||
\button 151; \c;\l;LeggedShooter\u object\botfs; \n;Шагающий стрелок
|
||||
|
||||
\button 153; \c;\l;WheeledOrgaShooter\u object\botor; \n;Колесный орга-стрелок
|
||||
\button 154; \c;\l;TrackedOrgaShooter\u object\botoc; \n;Гусеничный орга-стрелок
|
||||
\button 155; \c;\l;WingedOrgaShooter\u object\botoj; \n;Летающий орга-стрелок
|
||||
\button 156; \c;\l;LeggedOrgaShooter\u object\botos; \n;Шагающий орга-стрелок
|
||||
|
||||
\button 149; \c;\l;Subber\u object\botsub; \n;Саббер
|
||||
\button 148; \c;\l;Recycler\u object\botrecy; \n;Утилизатор
|
||||
\button 157; \c;\l;Shielder\u object\botshld; \n;Мобильный щит
|
||||
\button 146; \c;\l;Thumper\u object\bottump; \n;Ударник
|
||||
\button 147; \c;\l;PhazerShooter\u object\botphaz; \n;Фазовый стрелок
|
||||
|
||||
|
||||
\t;Враги :
|
||||
|
||||
\c;\l;AlienQueen\u object\mother; \n;Королева Чужих
|
||||
\c;\l;AlienEgg\u object\egg; \n;Яйцо чужого
|
||||
\c;\l;AlienAnt\u object\ant; \n;Муравей
|
||||
\c;\l;AlienSpider\u object\spider; \n;Паук
|
||||
\c;\l;AlienWasp\u object\wasp; \n;Оса
|
||||
\c;\l;AlienWorm\u object\worm; \n;Червь
|
||||
|
||||
|
||||
\t;Разное:
|
||||
|
||||
\button 136; \c;\l;Me\u object\human; \n;Вы!
|
||||
\c;\l;Mine\u object\mine; \n;Мина
|
||||
\c;\l;Barrier\u object\barrier; \n;Барьер
|
||||
\c;\l;Wreck\u object\wreck; \n;Обломки
|
||||
\c;\l;Ruin\u object\ruin; \n;Руины
|
||||
|
||||
|
||||
\t;Флаги и другие индикаторы:
|
||||
|
||||
\c;\l;BlueFlag\u object\flag; \n;Синий Флаг
|
||||
\c;\l;RedFlag\u object\flag; \n;Красный Флаг
|
||||
\c;\l;GreenFlag\u object\flag; \n;Зеленый Флаг
|
||||
\c;\l;YellowFlag\u object\flag; \n;Желтый Флаг
|
||||
\c;\l;VioletFlag\u object\flag; \n;Фиолетовый Флаг
|
||||
\c;\l;WayPoint\u object\waypoint; \n;Отметка
|
||||
\c;\l;EnergySite\u object\enerspot; \n;Подземный запас энергии
|
||||
\c;\l;TitaniumSite\u object\stonspot; \n;Подземный запас титана
|
||||
\c;\l;UraniumSite\u object\uranspot; \n;Подземный запас урана
|
||||
|
||||
\t;См. также
|
||||
\l;Язык CBOT\u cbot; и \l;Переменные\u cbot\type;.
|
|
@ -0,0 +1,72 @@
|
|||
\b;Инструкция \c;class\n;
|
||||
Синтаксис:
|
||||
\c;
|
||||
\s;public class ClassName
|
||||
\s;{
|
||||
\s; declarations;
|
||||
\s;}
|
||||
\n;
|
||||
Классы должны быть \l;общедоступными\u cbot\public;, таким образом они могут быть исползованы всеми ботами в любой миссии. Члены класса также должны быть общедоступными, тоесть должны быть доступны за пределами класса. Членами класса могут быть ячейки и функции (по-другому методы), например следующий класс \c;MyClass\n; содержит 4 ячейки (a, b, x и s) и один метод (MyFunction).
|
||||
\c;
|
||||
\s;public class MyClass
|
||||
\s;{
|
||||
\s; int a, b;
|
||||
\s; float x = 3.33;
|
||||
\s; string s = "hello";
|
||||
\s; float MyFunction( float value )
|
||||
\s; {
|
||||
\s; return (value*x)-1;
|
||||
\s; }
|
||||
\s;}
|
||||
\n;
|
||||
ак показано в данном примере члены класса могут быть инициализированы (\c;x=3.33\n;). Вы можете также определить конструктор, который представляет собой специальный метод, имеющий то же имя, как и имя класса. Этот метод будет вызван автоматически в момент создания экземпляра класса. Вы можете также объявить более одного метода с тем же именем, но с разными параметрами.
|
||||
\c;
|
||||
\s;public class MyClass
|
||||
\s;{
|
||||
\s; int a, b;
|
||||
\s; void MyClass( )
|
||||
\s; {
|
||||
\s; a = 2; b = 3;
|
||||
\s; }
|
||||
\s; void MyClass( int a, int b )
|
||||
\s; {
|
||||
\s; this.a = a; this.b = b;
|
||||
\s; }
|
||||
\s;}
|
||||
\n;
|
||||
В этом примере два конструктора были объявлены как \c;MyClass\n;, один без параметров и второй с двумя параметрами. Поскольку имена параметров второго конструктора такие же, как и имена двух членов \c;a\n; и \c;b\n; мы должны использовать \c;\l;this\u cbot\this;.a\n; и \c;\l;this\u cbot\this;.b\n; чтобы избежать путаницы с параметрами. Наболее простым решением было бы дать разные имена параметрам.
|
||||
\c;
|
||||
\s;void Test( )
|
||||
\s;{
|
||||
\s; MyClass item1(); // конструктор без параметров
|
||||
\s; MyClass item2(4, 5); // конструктор с двумя параметрами
|
||||
\s; MyClass item3; // нет вызова конструктора,
|
||||
\s; // поэтому item3 == null
|
||||
\s;}
|
||||
\n;
|
||||
Вы также можете определить деструктор. Это должна быть \c;пустая(void)\n; функция без параметров, имеющая то же имя, что и класс, но с первиксом ~. Деструктор вызывается автоматически, как только класс уже больше никому не понадобится.
|
||||
\c;
|
||||
\s;public class MyClass
|
||||
\s;{
|
||||
\s; static private int counter = 0; // инициализируем счетчик
|
||||
\s; void MyClass( )
|
||||
\s; {
|
||||
\s; counter ++; // увеличиваем
|
||||
\s; }
|
||||
\s; void ~MyClass( )
|
||||
\s; {
|
||||
\s; counter --; // уменьшаем
|
||||
\s; }
|
||||
\s;}
|
||||
\s;void Test()
|
||||
\s;{
|
||||
\s; MyClass item1( ); // счетчик = 1
|
||||
\s; MyClass item2( ); // счетчик = 2
|
||||
\s; item1 = null; // счетчик = 1
|
||||
\s;} // счетчик = 0
|
||||
\n;
|
||||
If you pass a class instance as parameter to a \l;function\u cbot\function;, the function only receives a \l;reference\u cbot\pointer; to the instance. That means if you modify the instance in the function, the instance that has been passed to the function will be actuallay modified.
|
||||
|
||||
\t;См. также
|
||||
\c;\l;Общедоступное\u cbot\public;\n;, \c;\l;приватное\u cbot\private;\n;, \c;\l;статичное\u cbot\static;\n;, \c;\l;синхронизированное\u cbot\synchro;\n;, \c;\l;новое\u cbot\new;\n;, \c;\l;ссылка\u cbot\pointer;\n;, \c;\l;это\u cbot\this;\n;
|
||||
\l;Язык CBOT\u cbot; и \l;Переменные\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,8 @@
|
|||
\b;Инструкция \c;close\n;
|
||||
Закрывает файл, открытый ранее функцией\c;\l;open\u cbot\open;\n;. Это метод класса \c;\l;file\u cbot\file;\n;; поэтому вы не можете записывать \c;close()\n;, только \c;handle.close()\n;¦:
|
||||
\c;
|
||||
\s; handle.close();
|
||||
\n;
|
||||
\t;См. также
|
||||
\c;\l;file\u cbot\file;\n;, \c;\l;open\u cbot\open;\n;, \c;\l;readln\u cbot\readln;\n;, \c;\l;writeln\u cbot\writeln;\n; and \c;\l;eof\u cbot\eof;\n;.
|
||||
\l;Язык CBOT\u cbot; и \l;Переменные\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,29 @@
|
|||
\b;Условия
|
||||
Условие - это специальное \l;выражение\u cbot\expr; которое возвращает \l;булевое\u cbot\bool; значение, которое может быть либо \c;\l;true\u cbot\true;\n; либо \c;\l;false\u cbot\false;\n;. Имея условия, вы можете выбирать Ф. экс. если инструкции в цикле \c;\l;while\u cbot\while;\n; должын повторяться снова, или если нужно выполнить инструкцию в блоке \c;\l;if\u cbot\if;\n;.
|
||||
Here are some operators that you can use in conditions to compare two values :
|
||||
|
||||
\c;a == b \n;\c;a\n; равняется \c;b\n;
|
||||
\c;a != b \n;\c;a\n; отличное от \c;b\n;
|
||||
\c;a < b \n;\c;a\n; меньше чем \c;b\n;
|
||||
\c;a <= b \n;\c;a\n; меньше или равно \c;b\n;
|
||||
\c;a > b \n;\c;a\n; больше чем \c;b\n;
|
||||
\c;a >= b \n;\c;a\n; больше или равно \c;b\n;
|
||||
|
||||
Например:
|
||||
|
||||
\c;12 == 12 \n;возвращает да
|
||||
\c;45 != 47 \n;возвращает да
|
||||
\c;99 == 98 \n;возвращает нет
|
||||
\c;12 < -1 \n;возвращает нет
|
||||
\c;12 >= 10 \n;возвращает да
|
||||
\c;12 >= 12 \n;возвращает да
|
||||
|
||||
\t;Примечание
|
||||
Будьте внимательны и не путайте сравнение равенства \c;==\n; с присвоением \l;переменной\u cbot\var; \c;=\n;.
|
||||
|
||||
\c;a == b\n; is an expression that compares \c;a\n; with \c;b\n;.
|
||||
\c;a = b\n; is an expression that copies the value of \c;b\n; into \c;a\n;.
|
||||
|
||||
\t;См. также
|
||||
\l;Инструкции\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
\b;Инструкция \c;continue\n;
|
||||
Синтаксис :
|
||||
\s;\c;while ( условие )
|
||||
\s;{
|
||||
\s; continue;
|
||||
\s;}
|
||||
\n;
|
||||
С помощью этой инструкции, вы можете перепрыгивать через все остальные инструкции в \c;\l;блоке\u cbot\bloc;\n; цикла \c;\l;while\u cbot\while;\n; или \c;\l;for\u cbot\for;\n; : Выполнение продолжится с начала блока, в следующий раз цикл будет повторен.
|
||||
|
||||
вот пример:
|
||||
\s;\c;int i = 0;
|
||||
\s;while ( i < 5 )
|
||||
\s;{
|
||||
\s; i = i+1;
|
||||
\s; if ( i == 3 )
|
||||
\s; {
|
||||
\s; continue;
|
||||
\s; }
|
||||
\s; \n;Инструкции...\c;
|
||||
\s;}
|
||||
\n;
|
||||
Инструкции будут выполнены только для значение \c;i\n; 1, 2, 4 и 5.
|
||||
|
||||
\t;См. также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,10 @@
|
|||
\b;Инструкция \c;deletefile\n;
|
||||
Инструкция deletefile удаляет существующие файлы/папки.
|
||||
|
||||
Файлы и папки могут быть удалены только в той дирректории, в которую была установлена COLOBOT. Вы не можете удалять файлы и папки, находящиеся в другом месте.
|
||||
|
||||
Синтаксис¦:
|
||||
\s;\c;deletefile ( filename );\n;
|
||||
|
||||
\t;См. также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; and \l;категории\u cbot\category;.
|
|
@ -0,0 +1,15 @@
|
|||
\b;Инструкция \c;deleteinfo\n;
|
||||
Синтаксис¦:
|
||||
\s;\c;deleteinfo ( name, power );\n;
|
||||
|
||||
Удаляет существующую информацию в ближайшем \l;посте обмена информацией\u object\exchange;.
|
||||
|
||||
\t;name: \c;string\n;
|
||||
Имя информации для удаления. Это имя - строка: она должна быть написана в кавычках "¦".
|
||||
|
||||
\t;power: \c;float\n;
|
||||
Мощность передатчика, определяющая максимальное расстояние до поста. Если пост находится слишком далеко, то информаация не будет удалена. Стандартное значение равно 10 метрам.
|
||||
|
||||
\t;См. также
|
||||
\c;\l;receive\u cbot\receive;\n;, \c;\l;send\u cbot\send;\n; and \c;\l;testinfo\u cbot\testinfo;\n;.
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,15 @@
|
|||
\b;Инструкция \c;direction\n;
|
||||
Синтаксис :
|
||||
\s;\c;direction ( поз );\n;
|
||||
|
||||
Вычисляет вращение, которое необходимо выполнить роботу, чтобы повернуться к данной позиции.
|
||||
|
||||
\t;pos: \c;\l;point\u cbot\point;\n;
|
||||
Позиция, к которой робот должен повернуться.
|
||||
|
||||
\t;Возвратное значение: \c;\l;float\u cbot\float;\n;
|
||||
Угол вращения, которое нужно проделать. -90 значит ф. экс. вращение на 90 градусов вправо.
|
||||
|
||||
\t;См. также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
\b;Инструкция \c;distance\n;
|
||||
С помощью инструкции \c;distance( , )\n; вы можете подсчитывать расстояние между двумя позициями.
|
||||
|
||||
\b;Основное использование
|
||||
Если вы напишете только \c;position\n;, то вы получите только позицию бота, который выполняет программу. Если вы напишете имя переменной, а за ней \c;.position\n;, то это даст вам позицию обьекта, который был обозначен вслед за переменной.
|
||||
|
||||
Ниже приведена программа для движения вперед, на вличину, в точности равную расстоянию между ботом и ближайшим муравьем:
|
||||
\c;
|
||||
\s; item = \l;radar\u cbot\radar;(AlienAnt);
|
||||
\s; \l;move\u cbot\move;(distance(position, item.position));
|
||||
\n;
|
||||
Разумеется, это чистое самоубийство. Лучше остановиться за 40 метров вдали, чтобы оказаться в радиусе стрельбы:
|
||||
\c;
|
||||
\s; item = radar(AlienAnt);
|
||||
\s; move(distance(position, item.position) - 40);
|
||||
\n;
|
||||
\b;Для специалистов
|
||||
Синтаксис:
|
||||
\s;\c;distance ( pos1, pos2 );\n;
|
||||
|
||||
Рассчитывает растояние между двумя позициями.
|
||||
|
||||
\t;pos1, pos2: \c;\l;point\u cbot\point;\n;
|
||||
Коодинаты двух позиций.
|
||||
|
||||
\t;Возвратное значение: \c;\l;float\u cbot\float;\n;
|
||||
расстояние между двумя позициями.
|
||||
|
||||
\t;См. также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,14 @@
|
|||
\b;Инструкция \c;distance2d\n;
|
||||
Синтаксис:
|
||||
\s;\c;distance2d ( pos1, pos2 );\n;
|
||||
|
||||
Рассчитывает растояние между двумя позициями (пренебрегая координатой z).
|
||||
|
||||
\t;pos1, pos2: \c;\l;point\u cbot\point;\n;
|
||||
координаты двух позиций.
|
||||
|
||||
\t;Возвратное значение: \c;\l;float\u cbot\float;\n;
|
||||
Расстояние между двумя позициями.
|
||||
|
||||
\t;См. также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,28 @@
|
|||
\b;Инструкция \c;do - while\n;
|
||||
Синтаксис:
|
||||
\s;\c;do
|
||||
\s;{
|
||||
\s; \n;Инструкции ...\c;
|
||||
\s;}
|
||||
\s;while ( условие );
|
||||
\n;
|
||||
Эта инструкция позволяет несколько раз выполнять инструкции внутри \l;блока\u cbot\bloc;. Инструкции выполняются как минимум один раз, поскольку условие выполняется только потом.
|
||||
Не путайте инструкцию \c;do { } while ( );\n; с инструкцией \c;\l;while\u cbot\while; ( ) { }\n;; последняя проверяет условие до того как выполняются инструкции внутри блока.
|
||||
|
||||
\t;\c;condition\n;
|
||||
Инструкции внутри блока выполняются многократно, пока \l;условие\u cbot\cond; остается в силе.
|
||||
|
||||
Вот пример подобной программы:
|
||||
\s;\c;do
|
||||
\s;{
|
||||
\s; p = radar(TitaniumOre);
|
||||
\s;}
|
||||
\s;while ( p == null );
|
||||
\n;
|
||||
\t;Внимание
|
||||
Всегда следует ставить \l;двоеточие\u cbot\term; в конце строки с \c;while ( )\n;.
|
||||
|
||||
Инструкции \c;\l;break\u cbot\break;\n; и \c;\l;continue\u cbot\continue;\n; могут пригодиться внутри блока после инструкции \c;do { }\n;.
|
||||
|
||||
\t;См. также
|
||||
\l;Инструкции\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,29 @@
|
|||
\b;Инструкция \c;drop\n;
|
||||
Инструкция \c;drop();\n; приказывает боту бросить все, что находися в данный момент в рабочей руке, на землю, на платформу здания, или на расположение энергобатарейки бота.
|
||||
|
||||
\b;Основное использование
|
||||
Инструкция \c;drop();\n; написанная таким образом заставит бот бросить обьект прямо перед собой. Ниже приведена короткая программа, в которой бот берет обьект перед собой, и кладет его на землю в пяти метрах от себя:
|
||||
\c;
|
||||
\s; \l;grab\u cbot\grab;();
|
||||
\s; \l;move\u cbot\move;(5);
|
||||
\s; drop();
|
||||
\n;
|
||||
\b;Для специалистов
|
||||
Синтаксис:
|
||||
\s;\c;drop ( oper );\n;
|
||||
|
||||
Эта инструкция обращается к рабочей руке \l;бота носильщика\u object\botgr;, и приказывает ей положить все что она держит.
|
||||
|
||||
\t;oper: \c;\l;int\u cbot\int;\n; (default value\c;InFront\n;)
|
||||
Oper обозначает, где именно бот должен бросить предмет. Если не обозначить это место, обьект будет положен прямо перед ботом.
|
||||
\c;InFront \n; Кладет перед ботом (значение по умолчанию).
|
||||
\c;Behind \n; Кладет позади.
|
||||
\c;EnergyPack\n; Кладет на место расположеня собственной энергобатареи бота.
|
||||
|
||||
\t;Возвратное значение: \c;\l;int\u cbot\int;\n;
|
||||
Обычно в случае ошибки выполнение программы прекращается. Вы можете сделать так, что в случае ошибки программа не будет останавливаться, для чего используется инструкция \c;\l;errmode\u cbot\errmode;(0)\n; . В случае ошибки \c;drop();\n; возвращает значение отличное от нуля.
|
||||
\c;== 0 \n;обьект был брошен
|
||||
\c;!= 0 \n;ошибка, обьект не был брошен
|
||||
|
||||
\t;См. также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,15 @@
|
|||
\b;Инструкция \c;eof\n;
|
||||
Проверяет конец открытого файла. Это метод класса \c;\l;file\u cbot\file;\n;; вы не можете писать \c;eof()\n;, только \c;handle.eof()\n;¦:
|
||||
\c;
|
||||
\s; if ( handle.eof() )
|
||||
\n;
|
||||
Например¦:
|
||||
\c;
|
||||
\s; while ( not handle.eof() )
|
||||
\s; {
|
||||
\s; s = handle.readln();
|
||||
\s; }
|
||||
\n;
|
||||
\t;См. также
|
||||
\c;\l;file\u cbot\file;\n;, \c;\l;open\u cbot\open;\n;, \c;\l;close\u cbot\close;\n;, \c;\l;readln\u cbot\readln;\n; and \c;\l;writeln\u cbot\writeln;\n;.
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,33 @@
|
|||
\b;Инструкция \c;errmode\n;
|
||||
Инструкция \c;errmode();\n; позволяет вам определять, будет ли останавливаться программа в случае возникновения ошибки в одной из следующих инструкций: \c;\l;goto\u cbot\goto;\n;, \c;\l;move\u cbot\move;\n;, \c;\l;grab\u cbot\grab;\n;, \c;\l;drop\u cbot\drop;\n;, etc.
|
||||
|
||||
\b;Для специалистов
|
||||
Синтаксис¦:
|
||||
\s;\c;errmode ( mode );\n;
|
||||
|
||||
Обычно в случае ошибки выполнение программы прекращается. Если вы воспользуетесь инструкцией \c;errmode(0);\n; в начале программы, инструкции перечисленныен выше возвращают значение отличное от нуля, если инструкцию было невозможно выполенить.
|
||||
|
||||
\t;mode: \c;\l;float\u cbot\float;\n; (\c;1\n; по умолчанию)
|
||||
Ошибка режима обработки.
|
||||
\c;0\n; -> продолжает выполнение программы и возвращает значение отличное от нуля
|
||||
\c;1\n; -> останавливает программу (поведение по умолчанию)
|
||||
|
||||
Пример 1¦:
|
||||
\s;\c;errmode(0);
|
||||
\s;while ( goto(pos) != 0 )
|
||||
\s;{
|
||||
\s; wait(2);
|
||||
\s;}
|
||||
\n;
|
||||
Пример 2¦:
|
||||
\s;\c;errmode(0);
|
||||
\s;int err;
|
||||
\s;err = goto(pos);
|
||||
\s;if ( err != 0 )
|
||||
\s;{
|
||||
\s; \n;инструкция goto была выполнена некоррректно...\c;
|
||||
\s; \n;предпримите меры...\c;
|
||||
\s;}
|
||||
\n;
|
||||
\t;См. также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,51 @@
|
|||
\b;Выражения
|
||||
Выражения могут включать следующие операторы:
|
||||
|
||||
\c;+\n; сложение
|
||||
\c;-\n; вычитание
|
||||
\c;*\n; умножение
|
||||
\c;/\n; деление
|
||||
\c;%\n; остаток деления (только для типа \c;\l;int\u cbot\int;\n;)
|
||||
|
||||
При помощи оператора сложения \c;+\n;, вы можете складывать не только числа, но также можете присоединять \l;строки\u cbot\string;.
|
||||
\c;
|
||||
\s; int i = 12+3; // возвращает 15
|
||||
\s; string s = "a"+"bc"; // возвращает "abc"
|
||||
\s; int i = 2-5; // возвращает -3
|
||||
\s; float f = 3.01*10; // возвращает 30.1
|
||||
\s; int i = 5/3; // возвращает 1
|
||||
\s; float f = 5/3; // возвращает 1.67
|
||||
\s; float f = 5/0; // возвращает ошибку
|
||||
\s; int i = 13%5; // возвращает 3
|
||||
\s; int i = -8%3; // возвращает -2
|
||||
\n;
|
||||
Выражение может содержать постоянные и \l;переменные\u cbot\var;. Например:
|
||||
|
||||
\s;\c; 12+dist\n;
|
||||
|
||||
Умножение и деление выполняется перед сложением и вычитанием. Чтобы убедиться, что операции выполняются в правильном порядке, используйте скобки:
|
||||
\c;
|
||||
\s; 12*a+b/c \n;is equivalent to\c; (12*a)+(b/c)
|
||||
\s; 2.5*(dist+range)
|
||||
\n;
|
||||
Чтобы улучшить читаемость, можете добавлять сколько угодно пробелов:
|
||||
\c;
|
||||
\s; 12*a + b/c
|
||||
\s; 2.5 * (расст+рад)
|
||||
\n;
|
||||
Ниже приведет список математических функций:
|
||||
|
||||
\c;sin(angle) \n;синус
|
||||
\c;cos(angle) \n;косинус
|
||||
\c;tan(angle) \n;тангенс
|
||||
\c;asin(value) \n;арксинус
|
||||
\c;acos(value) \n;арккосинус
|
||||
\c;atan(value) \n;арктангенс
|
||||
\c;sqrt(value) \n;квадратный корень
|
||||
\c;pow(x, y) \n;x в степени y
|
||||
\c;rand() \n;случайное число между 0 и 1
|
||||
|
||||
Углы отображаются в градусах.
|
||||
|
||||
\t;См. также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,30 @@
|
|||
\b;Инструкция \c;extern\n;
|
||||
Инструкция \c;extern\n; определяет \l;функцию\u cbot\function;, которая будет основной в программе бота. Имя функции, объявленой с помощью \c;extern\n;. появится в списке ваших программ в левом нижнем углу экрана.
|
||||
\c;
|
||||
\s;extern void object::MowDown( )
|
||||
\s;{
|
||||
\s; while ( true )
|
||||
\s; {
|
||||
\s; fire(1);
|
||||
\s; turn(10);
|
||||
\s; }
|
||||
\s;}
|
||||
\n;
|
||||
Если программа содержит другие функции, то им должна предшествовать \c;extern\n;.
|
||||
\c;
|
||||
\s;extern void object::Square( )
|
||||
\s;{
|
||||
\s; for ( int i=0 ; i<4 ; i++ )
|
||||
\s; {
|
||||
\s; Line(10);
|
||||
\s; }
|
||||
\s;}
|
||||
\s;
|
||||
\s;void object::Line(float dist)
|
||||
\s;{
|
||||
\s; move(dist);
|
||||
\s; turn(90);
|
||||
\s;}
|
||||
\n;
|
||||
\t;См. также
|
||||
\l;Инструкции\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,6 @@
|
|||
\b;Тип \c;false\n;
|
||||
Это значение оббозначает, что условие не соблюдается; это одно из двух значений, которые могут принимать \l;булевые\u cbot\bool; \l;переменные\u cbot\var; .
|
||||
|
||||
\t;См. также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
\b;Тип \c;file\n;
|
||||
Этот тип используется для доступа к файлам/папкам.
|
||||
\c;
|
||||
\s; file handle();
|
||||
\n;
|
||||
Используйте синтаксис для объявления дескриптора файла. Вы должны использовать () для создания класса \c;file\n;. без использования () дескриптор вернет \c;\l;null\u cbot\null;\n;.
|
||||
|
||||
Файлы и папки могут быть открыты или созданы только в папке с установленной игрой COLOBOT. Вы не можете удалять папки за пределами этой дирректории.
|
||||
|
||||
\b;Для специалистов
|
||||
\c;file\n; на самом деле не просто тип, а класс. \c;open\n;, \c;close\n;, \c;writeln\n; и т.п. - это все методы класса \c;file\n;. Это причина, почему мы всегда пишем \c;handle.method()\n;¦:
|
||||
\c;
|
||||
\s; handle.open("test.txt", "w");
|
||||
\s; handle.close();
|
||||
\n;
|
||||
\t;См. также
|
||||
\c;\l;open\u cbot\open;\n;, \c;\l;close\u cbot\close;\n;, \c;\l;readln\u cbot\readln;\n;, \c;\l;writeln\u cbot\writeln;\n; and \c;\l;eof\u cbot\eof;\n;.
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,31 @@
|
|||
\b;Инструкция \c;fire\n;
|
||||
Инструкция \c;fire();\n; стреляет бортовой пушкой бота.
|
||||
|
||||
\b;Основное использование
|
||||
Обычно эта инструкция используется для стрельбы односекундными залпами:
|
||||
\c;
|
||||
\s; fire(1);
|
||||
\n;
|
||||
\b;Для специалистов
|
||||
Синтаксис:
|
||||
\s;\c;fire ( время );\n;
|
||||
|
||||
Стреляет из оружия, причем залп продолжается некоторое время. Чем дольше залп, тем больше энергии ему нужно. Эта инструкция может применяться к следующим типам ботов:
|
||||
o \l;Стрелок\u object\botfr;
|
||||
o \l;Орга Стрелок\u object\botor;
|
||||
o \l;Фазер Стрелок\u object\botphaz;
|
||||
|
||||
Когда вы управляете своим ботом путем программирования, единственный способ повернуть оружие направо или налево - это повернуть весь бот инструкцией \c;\l;turn\u cbot\turn;\n;.
|
||||
|
||||
Чтобы сдвинуть оружие вниз или вверх, используйте инструкцию \c;\l;aim\u cbot\aim;\n;.
|
||||
|
||||
\t;time: \c;\l;float\u cbot\float;\n;
|
||||
Длительность залпа. Обычно, присваемое значение равно 1. В целях экономии времени и энергии можно производить боле короткие залпы.
|
||||
|
||||
\t;Возвратное значение: \c;\l;int\u cbot\int;\n;
|
||||
Ноль если OK, или значение отличное от нуля, если произошла ошибка.
|
||||
\c;== 0 \n;пушка выстрелила
|
||||
\c;!= 0 \n;ошибка, пушка не смогла выстрелить
|
||||
|
||||
\t;См. также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,17 @@
|
|||
\b;Инструкция \c;flatground\n;
|
||||
Синтаксис¦:
|
||||
\s;\c;flatground ( center, rmax );\n;
|
||||
|
||||
Подсчитывает максимальный радиус плоской зоны, на которой может быть что-либо построено.
|
||||
|
||||
\t;center: \c;\l;point\u cbot\point;\n;
|
||||
Центр зона (зона - круг).
|
||||
|
||||
\t;rmax: \c;\l;float\u cbot\float;\n;
|
||||
Максимальный радиус.
|
||||
|
||||
\t;Возвращает значение: \c;\l;float\u cbot\float;\n;
|
||||
Радиус плоской зоны (всегда от 0 до rmax).
|
||||
|
||||
\t;См. также
|
||||
\l;Инструкции\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,25 @@
|
|||
\b;Тип \c;float\n;
|
||||
Используйте этот тип для большинства переменных, содержащих числа. Переменные этого типа могут содержать положительные и отрицательные числа, целые и дробные, ф. экс.:
|
||||
\c;
|
||||
\s; 12.9
|
||||
\s; 1.125
|
||||
\s; 0.002
|
||||
\s; -4.1
|
||||
\n;
|
||||
Если вамнужно, чтобы переменная содержала только целые числа (ф. экс. 12 или -5000), вам стоит использовать \c;\l;int\u cbot\int;\n;.
|
||||
|
||||
\t;Внимание
|
||||
Не вставляйте знаки пробелов или запятых в написание числа. Чтоюы отделить целую часть от дробной, используйте точки.
|
||||
\c;
|
||||
\s; Писать а не
|
||||
\s; 12.56 12 . 56
|
||||
\s; -54.34 -54,34
|
||||
\s;12895.69 12,895.69
|
||||
|
||||
\t;Для специалистов
|
||||
Числа с плавающей запятой представлены в игре в 32 битах.
|
||||
Наивысшее значение, которое можно представить - 3.4E+38.
|
||||
Наименьшее значение, которое можно представить - 3.4E-38.
|
||||
|
||||
\t;См. также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,34 @@
|
|||
\b;Инструкция \c;for\n;
|
||||
Синтаксис:
|
||||
\s;\c;for ( before ; condition ; end )
|
||||
\s;{
|
||||
\s; \n;Инструкции...\c;
|
||||
\s;}
|
||||
\n;
|
||||
Эта инструкция позволяет вам выполнять инструкции содержащиеся в \l;блоке\u cbot\bloc; определенное количество раз.
|
||||
|
||||
\t;\c;before\n;
|
||||
Эта инструкция выполняется до появления первого цикла.
|
||||
|
||||
\t;\c;condition\n;
|
||||
Это \l;условие\u cbot\cond; определяет, нужно ли выполнять следующее кольцо цикла. Она проверяется в ходе выполнения каждого кольца.
|
||||
|
||||
\t;\c;end\n;
|
||||
Эта инструкция выпоолняется в конце каждого кольца цикла.
|
||||
|
||||
Этот пример строго эквивалентен циклу \c;for\n;, но он использует инструкцию \c;\l;while\u cbot\while;\n;:
|
||||
\s;\c;before;
|
||||
\s;while ( условие )
|
||||
\s;{
|
||||
\s; \n;Инструкции...\c;
|
||||
\s; end;
|
||||
\s;}
|
||||
\n;
|
||||
\t;Внимание
|
||||
не следует ставить \l;двоеточие\u cbot\term; в конце строки оператора \c;for ( )\n;.
|
||||
|
||||
Инструкции \c;\l;break\u cbot\break;\n; и \c;\l;continue\u cbot\continue;\n; могут быть полезными внутри блока после инструкции \c;for \n;.
|
||||
|
||||
\t;См. также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
||||
|
|
@ -0,0 +1,84 @@
|
|||
\b;Функции
|
||||
С помощью функций программу можно разделить на несколько частей, которые будут выполнять каждая свою работу.
|
||||
Давайте представим следующую программу¦:
|
||||
\c;
|
||||
\s;extern void object::Remote( )
|
||||
\s;{
|
||||
\s; send("order", 1, 100);
|
||||
\s; wait(5);
|
||||
\s; send("order", 3, 100);
|
||||
\s; wait(5);
|
||||
\s; send("order", 2, 100);
|
||||
\s; wait(5);
|
||||
\s; send("order", 4, 100);
|
||||
\s; wait(5);
|
||||
\s;}
|
||||
\n;
|
||||
\c;send\n; и \c;wait\n; повторяются много раз. Поэтому, мы можем сделать функцию, которая заменит их:
|
||||
\c;
|
||||
\s;void object::SendToPost( float op )
|
||||
\s;{
|
||||
\s; send("order", op, 100);
|
||||
\s; wait(5);
|
||||
\s;}
|
||||
\s;extern void object::Remote( )
|
||||
\s;{
|
||||
\s; SendToPost(1);
|
||||
\s; SendToPost(3);
|
||||
\s; SendToPost(2);
|
||||
\s; SendToPost(4);
|
||||
\s;}
|
||||
\n;
|
||||
Функции могут иметь параметры¦:
|
||||
\c;
|
||||
\s;void Example( int a, float x, string s )
|
||||
\n;
|
||||
Функция \c;Exemple\n; функция получит целое \c;a\n;, число с плавающей точкой \c;x\n; и строку \c;s\n;. Параметры - это ничто иное, как просто копии значений в переменных. Если вы передадите \c;int\n; функции, то ее параметр станет копией этого значения, т.е. функция сможет изменять эту копию незатрагивая оригинал.
|
||||
|
||||
Если вы передадите \l;классу\u cbot\class; массив \l;array\u cbot\array; как параметр функции, то функция получит только \l;ссылку\u cbot\pointer; к экземпляру массива. Это означает, что если вы измените массив в функции, то будет модифицирован только экземпляр этой функции.
|
||||
|
||||
Функция может возвращать результат с помощью инструкции \c;\l;return\u cbot\return;\n;. Поэтому функции должны быть объявлены только как тип:
|
||||
\c;
|
||||
\s;float Mean( float a, float b )
|
||||
\s;{
|
||||
\s; return (a+b)/2;
|
||||
\s;}
|
||||
\s;
|
||||
\s;extern void object::Test( )
|
||||
\s;{
|
||||
\s; float value;
|
||||
\s; value = Mean(2, 6);
|
||||
\s; message( value ); // will display 4
|
||||
\s;}
|
||||
\n;
|
||||
Пример¦:
|
||||
\c;
|
||||
\s;float Pi( )
|
||||
\s;{
|
||||
\s; return 3.1415;
|
||||
\s;}
|
||||
\s;
|
||||
\s;string Sign( float a )
|
||||
\s;{
|
||||
\s; if ( a > 0 ) return "positive";
|
||||
\s; if ( a < 0 ) return "negative";
|
||||
\s; return "null";
|
||||
\s;}
|
||||
\n;
|
||||
вы также можете объявить несколько функций с одинаковыми именами, но разными параметрами¦:
|
||||
\c;
|
||||
\s;float Pythagoras( float a, float b )
|
||||
\s;{
|
||||
\s; return sqrt((a*a)+(b*b));
|
||||
\s;}
|
||||
\s;
|
||||
\s;float Pythagoras( float a, float b, float c )
|
||||
\s;{
|
||||
\s; return sqrt((a*a)+(b*b)+(c*c));
|
||||
\s;}
|
||||
\n;
|
||||
CBOT будет вызывать ту или иную функцию так, что вызов будет зависеть отт параметров.
|
||||
Вы также можете объявить функцию \l;общедоступной\u cbot\public;, так что ее смогут использовать остальне боты.
|
||||
|
||||
\t;См. также
|
||||
\l;Инструкции\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,35 @@
|
|||
\b;Инструкция \c;goto\n;
|
||||
Инструкция \c;goto();\n; приказывает боту достигнуть означенной позиции.
|
||||
|
||||
\b;Основное использование
|
||||
Самое распространенное использование состоит в том, чтобы переместить бот к обьекту, обнаруженному с помощью инструкции \c;\l;radar\u cbot\radar;();\n;. Если информация, добытая инструкцией \c;\l;radar\u cbot\radar;();\n; помещена в определенную переменную, напишите имя этой переменной, а за ним \c;.position\n;, чтобы получить местоположение обьекта. Ниже приведен пример программы, которая ищет \l;титановый куб\u object\titan;, идет в его местоположение и берет его:
|
||||
\c;
|
||||
\s; item = \l;radar\u cbot\radar;(Titanium);
|
||||
\s; goto(item.position);
|
||||
\s; \l;grab\u cbot\grab;();
|
||||
\n;
|
||||
\b;Для специалистов
|
||||
Синтаксис:
|
||||
\s;\c;goto ( position, altitude, goal, crash );\n;
|
||||
|
||||
Приказывает роботу двигаться к выбранной позиции, избегая все препятствия, если это возможно.
|
||||
|
||||
\t;pos: \c;\l;point\u cbot\point;\n;
|
||||
Координаты позиции цели.
|
||||
|
||||
\t;altitude: \c;\l;float\u cbot\float;\n;
|
||||
Высота полета для \l;летающих ботов\u object\botgj;. Высота имеет смысл только для \l;летающих ботов\u object\botgj;. От начальной высоты, бот забирается выше, пока не достигнет назначенной высоты. Когда он окажется близко к цели, он спускается и приземляется в назначенном месте. Если значение высоты не задано, по умолчанию принимается значение 10 метров. На очень коротких дистанциях, даже летающий бот останется на земле. Для всех ботов за исключением летающих, этот параметр игнорируется.
|
||||
|
||||
\t;goal: \c;\l;int\u cbot\int;\n; (по умолчанию \c;0\n;)
|
||||
Этот параметр говорит боту, каким образом он должен достичь цели:
|
||||
\c;0\n; остановка прямо в позиции цели
|
||||
\c;1\n; подходит близко к позиции цели, не останавливаясь.
|
||||
Если нет значение по умолчанию, \c;1\n; (точность) является значением по умолчанию.
|
||||
|
||||
\t;Возвратное значение: \c;\l;int\u cbot\int;\n;
|
||||
Обычно в случае ошибки программа останавливается. Вы можете приказать программе не останавливаться, с помощью инструкции \c;\l;errmode\u cbot\errmode;(0)\n;. Тогда в случае ошибки инструкция \c;goto()\n; возвращает значение отличное от нуля.
|
||||
\c;== 0 \n;Достиг позиции цели
|
||||
\c;!= 0 \n;Невозможно достичь позиции цели
|
||||
|
||||
\t;См. также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,29 @@
|
|||
\b;Инструкция \c;grab\n;
|
||||
Инструкция \c;grab();\n; приказывает боту использовать рабочую руку для взятия предмета лежащего на земле, на платформе здания или на месте размещения энергобатареи бота.
|
||||
|
||||
\b;Основное использование
|
||||
Инструкция \c;grab();\n; написанная в данноц форме, забирает обьект лежащий перед ботом. Вот пример короткой программы, которая забирает предмет, лежащий перед ботом и кладет его на 5 метров дальше:
|
||||
\c;
|
||||
\s; grab();
|
||||
\s; \l;move\u cbot\move;(5);
|
||||
\s; \l;drop\u cbot\drop;();
|
||||
\n;
|
||||
\b;Для специалистов
|
||||
Синтаксис:
|
||||
\s;\c;grab ( oper );\n;
|
||||
|
||||
Эта инструкция обращается к рабочей руке \l;сборщика\u object\botgr;, чтобы взять ближайший обьект.
|
||||
|
||||
\t;oper: \c;\l;int\u cbot\int;\n; (default value\c;InFront\n;)
|
||||
Oper означает, что бот должен сначала отыскать обьект. Если это не обозначить, подбирается обьект прямо перед ботом.
|
||||
\c;InFront \n; Берет пере собой (по умолчанию).
|
||||
\c;Behind \n; Берет позади.
|
||||
\c;EnergyPack\n; Берет свою свою собственную батарею.
|
||||
|
||||
\t;Возвратное значение: \c;\l;int\u cbot\int;\n;
|
||||
Обычно в случае ошибки программа останавливается. Вы можете приказать программе не останавливаться, с помощью инструкции \c;\l;errmode\u cbot\errmode;(0)\n;. Тогда в случае ошибки инструкция \c;grab()\n; возвращает значение отличное от нуля.
|
||||
\c;== 0 \n;обьект был взят
|
||||
\c;!= 0 \n;ошибка, обьект не был взят
|
||||
|
||||
\t;См. также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,40 @@
|
|||
\b;Инструкции \c;if\n; и \c;else\n;
|
||||
Инструкция \c;if() {}\n; выполняет набор инструкций только если выполняется определенное условие. Напишите условие в скобках \c;()\n;, а инструкции в квадратных скобках \c;{}\n;.
|
||||
|
||||
\b;Основное использование
|
||||
Вот вам конкретный пример: Бот станет стрелять, только если цель находится ближе чем в 40 метрах:
|
||||
\c;
|
||||
\s; item = \l;radar\u cbot\radar;(AlienAnt);
|
||||
\s; if (\l;distance\u cbot\dist;(position, item.position) < 40)
|
||||
\s; {
|
||||
\s; fire(1);
|
||||
\s; }
|
||||
\n;
|
||||
Вы также можете проверить, существует ли обьект вообще. Если инструкция \c;\l;radar\u cbot\radar;();\n; не находит требуемый обьект, она возвращает значение \c;null\n;. Поэтому вы можете проверить наличие обьекта с помощью условия \c;(item == null)\n;, или с помощью \c;(item != null)\n;. Два знака равенства \c;==\n; проверяют равность, знак восклицания, за которым идет знак равенства \c;!=\n; проверяют неравенство. Вот тестовая программа, которая отправит бот на перезарядку \l;энергобатареи\u object\power; только в случае наличия \l;электростанции\u object\station;:
|
||||
\c;
|
||||
\s; item = \l;radar\u cbot\radar;(PowerStation);
|
||||
\s; if (item != null)
|
||||
\s; {
|
||||
\s; \l;goto\u cbot\goto;(item.position);
|
||||
\s; \l;wait\u cbot\wait;(5);
|
||||
\s; }
|
||||
\n;
|
||||
\b;Для специалистов
|
||||
Синтаксис:
|
||||
\s;\c;if ( условие )
|
||||
\s;{
|
||||
\s; \n;Инструкции A ...\c;
|
||||
\s;}
|
||||
\s;else
|
||||
\s;{
|
||||
\s; \n;Инструкции B ...\c;
|
||||
\s;}
|
||||
\n;
|
||||
Данной условной структурой вы можете выполнить \l;блок\u cbot\bloc; A или \l;блок\u cbot\bloc; B в зависимости от \l;условия\u cbot\cond;. Если условие выполняется, блок A выполняется. Если условие не выполняется, то выполняется блок B.
|
||||
Part \c;else { }\n; is not compulsory.
|
||||
|
||||
\t;Внимание
|
||||
Не следует ставить двоеточие \l;semicolon\u cbot\term; в конце строки \c;if ( )\n;.
|
||||
|
||||
\t;См. также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,20 @@
|
|||
\b;Тип \c;int\n;
|
||||
Используйте этот тип для переменных содержащих только целые числа, положительные и отрицательные. Например:
|
||||
\c;
|
||||
\s; 12
|
||||
\s; 1000
|
||||
\s; -4
|
||||
\n;
|
||||
Чтобы представить числа подобные 12.05 или -0.005, исползуйте тип \c;\l;float\u cbot\float;\n;.
|
||||
|
||||
\t;Внимание
|
||||
Не ставьте пробел или запятую внутри числа.
|
||||
|
||||
\t;Для специалистов
|
||||
Числа типа \c;int\n; представлены в 32 битах.
|
||||
Наибольшее число, которое можно представить (2^31)-1, это 2'147'483'647.
|
||||
Наименьшее число, которое можно представить -(2^31), this is -2'147'483'648.
|
||||
|
||||
\t;См. также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
\b;Инструкция \c;jet\n;
|
||||
Синтаксис:
|
||||
\s;\c;jet ( сила );\n;
|
||||
|
||||
Прямое управление реактивным двигателем \l;крылатого бота\u object\botgj;. Именно двигатель заставляет бот перемещаться. Используйте эту инструкцию, чтобы подыматься, опускаться или приземляться.
|
||||
|
||||
\t;power: \c;\l;float\u cbot\float;\n;
|
||||
Сила двигателся, варьируется между \c;-1\n; и \c;+1\n;. \c;jet(1);\n; приказывает боту подняться как можно выше, \c;jet(-1);\n; опускается как можно быстрее, \c;jet(0);\n; стабилизирует высоту. Чтобы изменять высоту медленее, используйте средние значения, наприер \c;jet(0.3);\n;.
|
||||
|
||||
|
||||
\t;Возвратное значение: \c;\l;void\u cbot\void;\n;
|
||||
Нет.
|
||||
|
||||
\t;См. также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
\b;Инструкция \c;message\n;
|
||||
Синтаксис:
|
||||
\s;\c;message ( text, type );\n;
|
||||
|
||||
Выводит сообщение сверху экрана. Через несколько секунд сообщение автоматически исчезает.
|
||||
|
||||
\t;text: \c;\l;string\u cbot\string;\n;
|
||||
Текст, который требуется отобразить. Возможно присоединять несколько кусков текста и/или значение с оператором \c;+\n;:
|
||||
\c;message("не найден");\n;
|
||||
\c;message(angle);\n;
|
||||
\c;message(n + " обьект(ы) найден");\n;
|
||||
\c;message("Расстояние = " + расст + " метров");\n;
|
||||
|
||||
\t;type: \c;\l;int\u cbot\int;\n; (default value \c;DisplayMessage\n;)
|
||||
ТИп сообщения, определяющий фоновый цвет.
|
||||
o \c;DisplayMessage\n; Стандартное сообщение нажелтом фоне.
|
||||
o \c;DisplayInfo \n; Информация на зеленом фоне.
|
||||
o \c;DisplayWarning\n; Предупреждение на синем фоне.
|
||||
o \c;DisplayError \n; Ошибка на красном фоне.
|
||||
|
||||
\t;возвратное значение: \c;\l;void\u cbot\void;\n;
|
||||
Нет.
|
||||
|
||||
\t;См. также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,39 @@
|
|||
\b;Инструкция \c;motor\n;
|
||||
Инструкция \c;motor( , );\n; устанавливает скорости для правого и левого двигателей бота.
|
||||
|
||||
\b;Основное использование
|
||||
Указанная моторам скорость будет оставаться постоянной во время выполнения последующих инструкций. Благодаря этой характеристике можно выполнять вращение во время выполнения инструкции \c;\l;fire\u cbot\fire;();\n;. Это позволит накрыть целую зону местности одной очередью. Вот пример того, как можно накрыть зону перед ботом:
|
||||
\c;
|
||||
\s; \l;turn\u cbot\turn;(45); // поворачивает на 45 градусов влево
|
||||
\s; motor(0.5, -0.5); // медленное вращение вправо
|
||||
\s; \l;fire\u cbot\fire;(2); // огонь
|
||||
\s; motor(0,0); // остановка вращения
|
||||
\n;
|
||||
Так как левый двигатель на половине скорости поворачивается вперед, а правый двигатель на половине скорости поворачивается назад, так что бот медленно поворачивается во время 2-секундной очереди.
|
||||
|
||||
\b;Для специалистов
|
||||
Синтаксис :
|
||||
\s;\c;motor ( налево, направо );\n;
|
||||
|
||||
Дает инструкции о скорости движения правому и левому двигателям робота. Двигатели будут поддерживать постоянную скорость до тех пор. пока двигателям не будет отдана новая инструкция, или пока не будут отданы инструкции \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n; или \c;\l;goto\u cbot\goto;\n;.
|
||||
|
||||
\t;налево: \c;\l;float\u cbot\float;\n;
|
||||
Дает инструкцию о скорости левого двигателя; значение должно быть в пределах от -1 до 1.
|
||||
|
||||
\t;направо: \c;\l;float\u cbot\float;\n;
|
||||
Дает инструкцию о скорости правого двигателя; значение должно быть в пределах от -1 до 1.
|
||||
|
||||
Примеры :
|
||||
\c;motor(1, 1);\n; Двигается вперед с наибольшей возможной скоростью.
|
||||
\c;motor(-0.5, -0.5);\n; двигается назад на половине скорости.
|
||||
\c;motor(1, -1);\n; со всей возможной скоростью поворачивается направо.
|
||||
|
||||
Замечание :
|
||||
\c;motor(2, 2);\n; будет двигаться вперед не быстрее, чем \c;motor(1, 1)\n;
|
||||
\c;motor(-2, -2);\n; будет двигаться назад не быстрее, чем \c;motor(-1, -1)\n;
|
||||
|
||||
\t;Возвращаемое значение: \c;\l;void\u cbot\void;\n;
|
||||
Нет.
|
||||
|
||||
\t;Смотри также
|
||||
\l;Инструкции\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,22 @@
|
|||
\b;Инструкция \c;move\n;
|
||||
Инструкция \c;move();\n; приказывает боту двигаться вперед или назад, придерживаясь той же ориентации. В скобках вы должны указать дальность перемещения в метрах.
|
||||
|
||||
\b;Основное использование
|
||||
Если вы хотите, чтобы бот переместился вперед на 30 метро, то напишите \c;move(30);\n;. Чтобы отправить бота назад после того, как он бросил кусок \l;титаниумовой руды\u object\titanore; в \l;преобразователь\u object\convert;, напишите \c;move(-2.5);\n;.
|
||||
|
||||
\b;Для специалистов
|
||||
Синтаксис:
|
||||
\s;\c;move ( дальность );\n;
|
||||
|
||||
Двигается вперед или назад на указанное расстояние, всегда выдерживая текущую ориентацию бота.
|
||||
|
||||
\t;дальность: \c;\l;float\u cbot\float;\n;
|
||||
Дальность перемещения в метрах. Отрицательное значение заставляет его двигаться назад.
|
||||
|
||||
\t;Возвращаемое значение: \c;\l;int\u cbot\int;\n;
|
||||
Обычно ошибка останавливает выполнение программы. Вы можете предотвратить остановку работы программы при появлении ошибок, используя инструкцию \c;\l;errmode\u cbot\errmode;(0)\n;. В том случае, если возникла ошибка, \c;move()\n; возвращает значение, отличное от нуля.
|
||||
\c;== 0 \n;Произведено передвижение
|
||||
\c;!= 0 \n;ошибка, инструкция не была выполнена соответствующим образом
|
||||
|
||||
\t;Смотри также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,16 @@
|
|||
\b;Тип \c;nan\n;
|
||||
Это особое значение показывает, что \l;переменная\u cbot\var; типа \c;\l;int\u cbot\int;\n; или \c;\l;float\u cbot\float;\n; не содержит число, она не содержит "ничего".
|
||||
Например если инструкция \c;\l;receive\u cbot\receive;\n; не может получить запрашиваемую информацию, то она возвращает \c;nan\n; :
|
||||
\c;
|
||||
\s; value = receive("Length");
|
||||
\s; if ( value == nan ) // не найдена ?
|
||||
\s; {
|
||||
\s;
|
||||
\s; }
|
||||
\n;
|
||||
\t;Словарь
|
||||
\c;nan\n; = Не число
|
||||
|
||||
\t;Смотри также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
\b;Инструкция \c;new\n; (для специалистов)
|
||||
Оператор \c;new\n; создает новый \l;класс\u cbot\class;:
|
||||
\c;\s; MyClass item; // переменная item пуста
|
||||
\s; item = new MyClass(); // теперь item - это ссылка
|
||||
\s; // в новый экземпляр класса
|
||||
\n;
|
||||
Если вы хотите создать новый экземпляр для объявления \c;new\n;, то на время можно опустить () после объявления:
|
||||
|
||||
Вместо:
|
||||
\c;\s; MyClass item = new MyClass();
|
||||
\n;вы можете написать:
|
||||
\c;\s; MyClass item();
|
||||
\n;
|
||||
Если ваш класс имеет конструктор с параметрами, то вы можете написать так:
|
||||
\c;\s; MyClass item = new MyClass(2, 3);
|
||||
\n;или:
|
||||
\c;\s; MyClass item(2, 3);
|
||||
\n;
|
||||
\t;См. также
|
||||
\c;\l;class\u cbot\class;\n;, \c;\l;reference\u cbot\pointer;\n;
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,6 @@
|
|||
\b;Тип \c;null\n;
|
||||
Это особое значение показывает, что объект не существует.
|
||||
|
||||
\t;Смотри также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
\b;Тип \c;object\n;
|
||||
Используйте этот тип для переменных, которые должны содержать характеристики объекта, это может быть бот, здание, какие природные ископаемые, враг и так далее.
|
||||
|
||||
\c;\l;int\u cbot\int; object.category \n;\l;Категория\u cbot\category; объекта
|
||||
\c;\l;point\u cbot\point; object.position \n;Положение объекта (x,y,z)
|
||||
\c;\l;float\u cbot\float; object.orientation \n;Ориентация объекта (0..360)
|
||||
\c;\l;float\u cbot\float; object.pitch \n;Передний/задний угол объекта
|
||||
\c;\l;float\u cbot\float; object.roll \n;Правый/левый угол объекта
|
||||
\c;\l;float\u cbot\float; object.energyLevel \n;Уровень энергии (0..1)
|
||||
\c;\l;float\u cbot\float; object.shieldLevel \n;Уровень полей (0..1)
|
||||
\c;\l;float\u cbot\float; object.temperature \n;Температура двигателя (0..1)
|
||||
\c;\l;float\u cbot\float; object.altitude \n;Высота над землей
|
||||
\c;object object.energyPack \n;Энергетические ячейки бота
|
||||
\c;object object.load \n;Объект, который несет бот
|
||||
|
||||
\s;\c;category\n;
|
||||
\n;\l;Категория\u cbot\category; объекта позволяет вам узнать, что это такое, то есть например какой это вид бота, здания, врага и так далее.
|
||||
|
||||
\s;\c;position\n;
|
||||
Положение объекта на планете в метрах. Координаты \c;x\n; и \c;y\n; соответствуют положению на карте, а координата \c;z\n; соответствует высоте над (и соответственно под) уровнем моря.
|
||||
|
||||
\s;\c;orientation\n;
|
||||
Ориентация объекта в градусах. Ориентация говорит вам о том, в каком направлении смотрит объект. Ориентация \c;0\n; соответствует объекту. который смотрит на восток, таким образом следуя положительному направлению оси \c;x\n;. Ориентация измеряется против часовой стрелки.
|
||||
|
||||
\s;\c;pitch\n;
|
||||
Передний/задний угол робота. Уклон равный \c;0\n; означает, что бот стоит на ровно поверхности. Положительный наклон означает, что он смотрит вверх, а отрицательный, что он смотрит вниз.
|
||||
|
||||
\s;\c;roll\n;
|
||||
Левый/правый угол бота в градусах. Положительное значение значит, что бот наклонен на левый бок, а отрицательное, что он клонится на правый бок.
|
||||
|
||||
\s;\c;energyLevel\n;
|
||||
Уровень энергии может быть от 0 до 1. Обычная \l;энергетическая ячейка\u object\power;, которая полностью заряжена, будет возвращать значение \c;1\n;. \l;Ядерная энергетическая ячейка\u object\atomic; тоже не будет возвращать значение больше 1, просто это значение будет держаться дольше. Внимание: энергетический уровень бота всегда равен нулю, так как энергия содержится не в боте, а в энергетической ячейке. Чтобы определить энергетический уровень энергетической ячейки бота, вы должны написать \c;energyPack.energyLevel\n;.
|
||||
|
||||
\s;\c;shieldLevel\n;
|
||||
Уровень полей робота или здания. Уровень \c;1\n; показывает, что поля превосходны. Каждый раз, когда по боту или зданию попадает пуля или же он сталкивается с другим объектом, уровень полей уменьшается. Когда уровень становится равным \c;0\n;, первая же пуля или столкновение приведут к уничтожению бота или здания.
|
||||
Боты могут перезаряжать свои поля в \l;центре починки\u object\repair;. Поля здания восстанавливаются, если оно помещается внутрь защитной сферы \l;полевика\u object\botshld;.
|
||||
|
||||
\s;\c;temperature\n;
|
||||
Температура реактивной струи \l;летающих ботов\u object\botgj;. \c;0\n; соответствует холодной струе. При их использовании температура растет по прогрессии. Когда она достигает значения \c;1\n;, двигатель перенагревается и прекращает работать до тех пор, пока немного не остынет.
|
||||
|
||||
\s;\c;altitude\n;
|
||||
Координата положения \c;z\n; показывает высоту над уровнем моря, то есть \c;высота\n; показывает высоту над землей. Это значение имеет смысл только для \l;летающих ботов\u object\botgj; и для \l;ос\u object\wasp;. Для всех остальных объектов это значение равно нулю.
|
||||
|
||||
\s;\c;energyPack\n;
|
||||
Это особая информация, так как она возвращает информацию о другом объекте, в данном случае о энергетическом заряде. Это означает, что energyPack содержит все характеристики обычного объекта, например \c;категорию\n; (PowerCell или NuclearCell), \c;положение\n; (положение ячейки) и так далее.
|
||||
Если вы хотите определить энергетический уровень робота, то вы должны проверить не \c;energyLevel\n;, а \c;energyPack.energyLevel\n;.
|
||||
Если у бота нет энергетической ячейки, то \c;energyPack\n; вернет \c;null\n;.
|
||||
|
||||
\s;\c;load\n;
|
||||
Эта информация также вернет описание целого объекта: описание объекта, который несет \l;несущий\u object\botgr;. Если он ничего не несет, то \c;load\n; вернет \c;null\n;.
|
||||
|
||||
\b;Примеры
|
||||
Тип \c;object\n; возвращает особое значение \c;\l;null\u cbot\null;\n;, когда объект не существует. Например:
|
||||
\c;
|
||||
\s; object a;
|
||||
\s; a = radar(BotGrabberRoller);
|
||||
\s; if ( a == null ) // объект не существует ?
|
||||
\s; {
|
||||
\s; }
|
||||
\s; if ( a.position.z > 50 ) // он на горе ?
|
||||
\s; {
|
||||
\s; }
|
||||
\n;
|
||||
\t;Смотри также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
\b;Инструкция \c;open\n;
|
||||
Открывает текстовой файл. Это метод класса \c;\l;file\u cbot\file;\n;. Это причина, почему мы всегда пишем \c;handle.open()\n;¦:
|
||||
\c;
|
||||
\s; handle.open("test.txt", "w");
|
||||
\n;
|
||||
Для открытия файла необходимо выполнить¦:
|
||||
\c;
|
||||
\s; file handle();
|
||||
\s; handle.open("filename", "w");
|
||||
\s; handle.writeln("abc");
|
||||
\s; handle.close();
|
||||
\n;
|
||||
\c;"r"\n; mode: открыть для чтения.
|
||||
\c;"w"\n; mode: открыть для записи.
|
||||
|
||||
Файлы могут находиться только в папке с установленной игрой.
|
||||
|
||||
\t;См. также
|
||||
\c;\l;file\u cbot\file;\n;, \c;\l;close\u cbot\close;\n;, \c;\l;readln\u cbot\readln;\n;, \c;\l;writeln\u cbot\writeln;\n; and \c;\l;eof\u cbot\eof;\n;.
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,11 @@
|
|||
\b;Инструкция \c;openfile\n;
|
||||
\c;openfile();\n; открывает файл. Это не метод класса \c;\l;file\u cbot\file;\n;, однако openfile возвращает \l;ссылку\u cbot\pointer; для нового экземпляра класса. Вы должны указать два параметра - имя файла и режим открытия.
|
||||
\c;
|
||||
\s;file handle = openfile("filename", "r");
|
||||
\n;
|
||||
\c;"r"\n; mode: открыть для чтения.
|
||||
\c;"w"\n; mode: открыть для записи.
|
||||
|
||||
|
||||
\t;См. также
|
||||
\l;Инструкции\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,36 @@
|
|||
\b;Тип \c;point\n;
|
||||
Переменные этого типа содержат координаты точки в пространстве. Этот тип состоит из трех значений, которые представляют собой \c;x\n;, \c;y\n; и \c;z\n; координаты.
|
||||
\c;x\n; и \c;y\n; соответствуют месту на поверхности. Положительная ось \c;x\n; смотрит на восток, положительная ось \c;y\n; смотрит на север.
|
||||
Значение \c;z\n; соответствует высоте над уровнем моря.
|
||||
|
||||
Если вы хотите объявить переменную типа point, вы должны написать:
|
||||
\c;
|
||||
\s; point a (10, 20, 30);
|
||||
\n;
|
||||
Вы также можете присвоить переменной значение поочередным присвоением значений:
|
||||
\c;
|
||||
\s; point b;
|
||||
\s; b.x = 10;
|
||||
\s; b.y = 20;
|
||||
\s; b.z = 30;
|
||||
\n;
|
||||
После этого примера следующее \l;условие\u cbot\cond; будет правдивым:
|
||||
\c;
|
||||
\s; if ( a == b )
|
||||
\s; {
|
||||
\s; }
|
||||
\n;
|
||||
Следующее объявление:
|
||||
\c;
|
||||
\s; point c (4, 7);
|
||||
\n;
|
||||
Эквивалентно:
|
||||
\c;
|
||||
\s; point c;
|
||||
\s; c.x = 4;
|
||||
\s; c.y = 7;
|
||||
\s; c.z = 0;
|
||||
\n;
|
||||
|
||||
\t;Смотри также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,53 @@
|
|||
\b;Ссылки (для специалистов)
|
||||
CBOT использует ссылки для \l;классов\u cbot\class; и \l;массивов\u cbot\array;. Любой класс содержит в себе ссылку на данный экземпляр. Экземпляр на самом деле содержит в себе ячейки классов. Некоторые ссылки могут ссылаться на ту же функцию. \c;\l;null\u cbot\null;\n; ссылка не ссылается ни на что. Например, каждый раз, когда нам нужет новый чемодан, мы создаем новый экземпляр перевозчика. Но чемодан может перевозиться более чем на одном носителе. Перевозчик, не имеющий груза имеет \c;\l;null\u cbot\null;\n; ссылку.
|
||||
|
||||
Например:
|
||||
\c;\s;{
|
||||
\s; MyClass item1(); // создать новый экземпляр
|
||||
\s; // ссылающийся на item1
|
||||
\s; MyClass item2; // создаем нулевую ссылку
|
||||
\s; item2 = item1; // копируем ссылку,
|
||||
\s; // item2 and item1 теперь ссылки
|
||||
\s; // какого-то экземпляра
|
||||
\s; item1.a = 12; // изменяем экземпляр
|
||||
\s; // ссылающийся на item1 (и item2)
|
||||
\s; message(item2.a);// выводим 12
|
||||
\s;}
|
||||
\n;
|
||||
Если вы передадите функции \l;класс\u cbot\class; как параметр, то функция получит только ссылку на экземпляр. Это означает, что если изменить значение ссылки в функции, то изменение на самом деле произойдет.
|
||||
|
||||
\c;\s;void Test( MyClass item )
|
||||
\s;{
|
||||
\s; item.a = 12; // изменяем локальный экземпяр
|
||||
\s; item = new MyClass(); // создаем новый
|
||||
\s; item.a = 33; // изменяем локальный экземпяр
|
||||
\s;}
|
||||
\n;
|
||||
Вызов функции \c;Test()\n;¦:
|
||||
\c;\s;{
|
||||
\s; MyClass toto();
|
||||
\s; Test(toto);
|
||||
\s; message(toto.a); // выводим 12
|
||||
\s;}
|
||||
\n;
|
||||
Экземпляр, содержащий поле \c;a = 33\n; ссылается на более новый экземпляр \c;item\n; внутри функции \c;Test\n;. В конце функции \c;Test\n; недавно созданная ссылка \c;item\n; будет автоматически удалена.
|
||||
|
||||
Функция может возвратить экземпляр¦:
|
||||
\c;\s;MyClass Test2( )
|
||||
\s;{
|
||||
\s; MyClass item = new MyClass();
|
||||
\s; item.x = 33;
|
||||
\s; return item;
|
||||
\s;}
|
||||
\n;
|
||||
Вызов функции, как здесь:
|
||||
\c;\s;{
|
||||
\s; MyClass toto;
|
||||
\s; toto = Test2(); // toto содержит ссылку на
|
||||
\s; // созданный экземпляр Test2()
|
||||
\s; message(toto.a); // выводим 33
|
||||
\s;}
|
||||
\n;
|
||||
\t;См. также
|
||||
\c;\l;class\u cbot\class;\n;, \c;\l;new\u cbot\new;\n;
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,19 @@
|
|||
\b;Инструкция \c;private\n; (for specialists)
|
||||
Члены \l;класса\u cbot\class; могут быть \l;общедоступны\u cbot\public; (по-умолчанию) или личными. Член может быть объявлен частным, если поставить \c;private\n; до объявления элемента. Личные(локальные) члены не доступны извне для других классов.
|
||||
\c;
|
||||
\s;public class MyClass
|
||||
\s;{
|
||||
\s; int b; // общедоступна по-умолчанию
|
||||
\s; public int a; // всегда общедоступна
|
||||
\s; private point position; // локальная/личная
|
||||
\s;}
|
||||
\s;void Test()
|
||||
\s;{
|
||||
\s; MyClass item;
|
||||
\s; item.a = item.b = 12; // ок
|
||||
\s; message( item.position ); // это ошибка
|
||||
\s;}
|
||||
\n;
|
||||
\t;См. также
|
||||
\c;\l;class\u cbot\class;\n;, \c;\l;public\u cbot\public;\n;
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,50 @@
|
|||
\b;Инструкция \c;public\n; (для специалистов)
|
||||
Эта команда имеет две различные цели¦:
|
||||
|
||||
1) Сделать функцию доступной для других ботов.
|
||||
2) Сделать член класса доступным извне для других классов.
|
||||
|
||||
\b;Инструкция \c;public\n; для функций
|
||||
Еслы вы напишете \c;public\n; перед определением \l;функциии\u cbot\function;, то вы сможете сделать эту программу доступной для других ботов.
|
||||
Например, вот программа первого бота¦:
|
||||
\c;
|
||||
\s;public void object::Segment(float dist, float angle)
|
||||
\s;{
|
||||
\s; move(dist);
|
||||
\s; turn(angle);
|
||||
\s;}
|
||||
\n;
|
||||
А в другом боте мы имеем¦:
|
||||
\c;
|
||||
\s;extern void object::Square( )
|
||||
\s;{
|
||||
\s; for ( int i=0 ; i<4 ; i++ )
|
||||
\s; {
|
||||
\s; Segment(10, 90);
|
||||
\s; Fire(1);
|
||||
\s; }
|
||||
\s;}
|
||||
\n;
|
||||
Если вы объявили функцию \c;общедоступной\n;, то вы сможете использовать ее в других миссиях.
|
||||
|
||||
Если бот, содержащий \c;общедоступную\n; функцию будет уничтожен, то другие боты, использовавшие ее будут остановлены с ошибкой.
|
||||
|
||||
\b;Инструкция \c;public\n; для классов
|
||||
Член \l;класса\u cbot\class; может быть общедоступен (по-умолчанию) или \l;быть личным\u cbot\private;. Член может быть объявлен локальным с помощью \c;private\n;, написав это перед самим членом. Закрытые члены будут недоступны извне для других классов.
|
||||
\c;
|
||||
\s;public class MyClass
|
||||
\s;{
|
||||
\s; int b; // общедоступно по-умолчанию
|
||||
\s; public int a; // всегда общедоступно
|
||||
\s; private point position; // личная
|
||||
\s;}
|
||||
\s;void Test()
|
||||
\s;{
|
||||
\s; MyClass item;
|
||||
\s; item.a = item.b = 12; // ок
|
||||
\s; message( item.position ); // это ошибка
|
||||
\s;}
|
||||
\n;
|
||||
\t;См. также
|
||||
\c;\l;class\u cbot\class;\n;, \c;\l;private\u cbot\private;\n;, \c;\l;functions\u cbot\function;\n;
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,60 @@
|
|||
\b;Инструкция \c;radar\n;
|
||||
С помощью инструкции \c;radar()\n; вы можете следить за такими объектами как \l;враги\u object\mother;, боты, здания или природные ископаемые.
|
||||
|
||||
\b;Основное использование
|
||||
В скобках напишите \l;название объекта\u cbot\category;, который вы ищете. Поместите результат в переменную \l;типа\u cbot\type; \c;объекта\n;. Вот пример поиска ближайшего муравья:
|
||||
\c;
|
||||
\s;// В начале программы:
|
||||
\s;object item; // объявление переменной
|
||||
\s;
|
||||
\s;// Поиск ближайшего муравья
|
||||
\s;item = radar(AlienAnt);
|
||||
\n;
|
||||
\b;Для специалистов
|
||||
Синтаксис:
|
||||
\s;\c;radar ( категория, угол, фокус, мин, макс, путь );\n;
|
||||
|
||||
Обнаруживает объект в соответствии с несколькими параметрами.
|
||||
|
||||
\image radar1 8 8;
|
||||
Как видно выше, пурпурная зона соответствует зоне, где будут обнаружены объекты.
|
||||
|
||||
\t;категория: \c;\l;int\u cbot\int;\n;
|
||||
\l;Категория\u cbot\category; объекта, который нужно обнаружить. Например когда вы ищете муравья, напишите \c;radar (AlienAnt)\n;.
|
||||
|
||||
\t;угол: \c;\l;float\u cbot\float;\n; (значение по умолчанию\c;0\n;)
|
||||
Направление, в котором смотрит радар, в градусах.
|
||||
\c; 0\n; -> радар смотрит прямо вперед
|
||||
\c;-90\n; -> радар смотрит на четверть круга вправо
|
||||
\c; 90\n; -> радар смотрит на четверть круга влево
|
||||
|
||||
\t;фокус: \c;\l;float\u cbot\float;\n; (значение по умолчанию\c;360\n;)
|
||||
Угол раскрытия радара в градусах.
|
||||
|
||||
\t;мин: \c;\l;float\u cbot\float;\n; (значение по умолчанию \c;0\n;)
|
||||
Минимальное расстояние обнаружения в метрах. Объекты, которые находятся на расстояниях меньших, чем минимальное расстояние, обнаружены не будут.
|
||||
|
||||
\t;макс: \c;\l;float\u cbot\float;\n; (Значение по умолчанию\c;1000\n;)
|
||||
Максимальное расстояние обнаружения в метрах. Объекты, которые находятся на расстояниях, больше максимального расстояния, обнаружены не будут.
|
||||
|
||||
\t;путь: \c;\l;float\u cbot\float;\n; (значение по умолчанию\c;1\n;)
|
||||
Определяет каким образом будут обнаруживаться объекты. Если его значение \c;1\n;, то будет возвращен ближайший объект в указанной зоне. Если значение \c;-1\n;, то будет возвращен самый дальний объект в зоне обнаружения.
|
||||
|
||||
\t;Возвращаемое значение: \c;\l;object\u cbot\object;\n;
|
||||
Возвращает первый найденный объект, который соответствует указанной категории в указанной зоне. Если объект найден не был, то возвращается значение \c;\l;null\u cbot\null;\n;.
|
||||
|
||||
\t;Замечание
|
||||
Вы не должны указывать все параметры. Вот два примера эквивалентных инструкций:
|
||||
\c;
|
||||
\s; radar(Titanium, 0, 360, 0, 1000);
|
||||
\s; radar(Titanium); // эквивалентна предыдущей
|
||||
|
||||
\s; radar(Titanium, 0, 90, 0, 1000);
|
||||
\s; radar(Titanium, 0, 90); // эквивалентна предыдущей
|
||||
\n;
|
||||
Когда не определен один или более параметров, то используются указанные выше значения по умолчанию; обязателен только первый параметр.
|
||||
Обычно указывается только первый параметр: например \c;radar (AlienAnt)\n; обнаружит ближайшего муравья, где бы он ни был.
|
||||
|
||||
\t;Смотри также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
\b;Инструкция \c;readln\n;
|
||||
Читает одну строку из файла. это метод класса \c;\l;file\u cbot\file;\n;. Это причина, почему мы всегда пишем \c;handle.readln()\n;¦:
|
||||
\c;
|
||||
\s; s = handle.readln();
|
||||
\n;
|
||||
Файл должен быть октрыть на чтение (\c;"r"\n;) с помощью инструкции \c;\l;open\u cbot\open;\n;. \c;readln\n; возвращает строку, содержащую линию, но юез символа конца линии 0x0D (CR) и 0x0A (LF).
|
||||
|
||||
Синтаксис¦:
|
||||
\s;\c;string = handle.readln ( );\n;
|
||||
|
||||
Пример¦:
|
||||
\c;
|
||||
\s; string s;
|
||||
\s; s = handle.readln();
|
||||
\s; if ( s == "abc" )
|
||||
\s; ...
|
||||
\n;
|
||||
\t;См. также
|
||||
\c;\l;file\u cbot\file;\n;, \c;\l;open\u cbot\open;\n;, \c;\l;close\u cbot\close;\n;, \c;\l;writeln\u cbot\writeln;\n; and \c;\l;eof\u cbot\eof;\n;.
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,14 @@
|
|||
\b;Инструкция \c;receive\n;
|
||||
Синтаксис:
|
||||
\s;\c;receive ( имя );\n;
|
||||
|
||||
Получает информацию от ближайшего \l;поста обмена информацией\u object\exchange;.
|
||||
|
||||
\t;имя: \c;string\n;
|
||||
Вид информации, которая нужна от поста обмена. Имя это строка: при написании его нужно брать в пометки " ".
|
||||
|
||||
\t;Возвращаемое значение: \c;\l;float\u cbot\float;\n;
|
||||
Значение полученной информации. Если вблизи нет ни одного поста обмена, или на посте обмена нет вида запрошенной информации, то возвращается значение \c;nan\n;.
|
||||
|
||||
\t;Смотри также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,14 @@
|
|||
\b;Инструкция \c;recycle\n;
|
||||
Синтаксис:
|
||||
\s;\c;recycle ( );\n;
|
||||
|
||||
Превращает брошенного бота перед \l;превращающим\u object\botrecy; в \l;титановый куб\u object\titan;.
|
||||
|
||||
\t;Возвращаемое значение: \c;\l;int\u cbot\int;\n;
|
||||
Если все нормально, то возвращает ноль, если же возникла ошибка, то какое-то число.
|
||||
\c;== 0 \n;брошенный бот был превращен
|
||||
\c;!= 0 \n;ошибка, брошенного бота нельзя переработать
|
||||
|
||||
\t;Смотри также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
\b;Инструкция \c;retobject\n;
|
||||
Синтаксис:
|
||||
\s;\c;retobject ( число );\n;
|
||||
|
||||
Возвращает объект, соответствующий указанному числу.
|
||||
|
||||
\t;число: \c;\l;int\u cbot\int;\n;
|
||||
Номер объекта может быть от 0 до n. "n" представляет собой общее количество объектов на сцене.
|
||||
|
||||
\t;Возвращаемое значение: \c;\l;object\u cbot\object;\n;
|
||||
Объект соответствует числу. Если возвращаемое значение \c;\l;null\u cbot\null;\n;, то это означает, что этому числу не соответствует никакой объект, так как число слишком велико и на сцене нет такого количества объектов.
|
||||
|
||||
\t;Смотри также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
\b;Инструкция \c;return\n;
|
||||
Синтаксис:
|
||||
\s;\c;void function ( )
|
||||
\s;{
|
||||
\s; return;
|
||||
\s;}
|
||||
\n;
|
||||
С помощью этой функции вы можете немедленно выйти за пределы функции.
|
||||
|
||||
\t;Смотри также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
\b;Инструкция \c;search\n;
|
||||
Синтаксис:
|
||||
\s;\c;search ( категория, позиция );\n;
|
||||
|
||||
Обнаруживает объект указанной категории, который ближе всего к указанной позиции.
|
||||
|
||||
\t;категория: \c;\l;int\u cbot\int;\n;
|
||||
\l;Категория\u cbot\category; нужного объекта.
|
||||
|
||||
\t;позиция: \c;\l;point\u cbot\point;\n;
|
||||
\c;search\n; возвращает объект указанной категории, который ближе всего к указанной здесь позиции.
|
||||
|
||||
\t;Возвращаемое значение: \c;\l;object\u cbot\object;\n;
|
||||
Характеристики объекта, который был найден. Значение \c;\l;null\u cbot\null;\n; означает, что объект этой категории найден не был.
|
||||
|
||||
\t;Смотри также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
\b;Инструкция \c;send\n;
|
||||
Синтаксис¦:
|
||||
\s;\c;send ( name, value, power );\n;
|
||||
|
||||
Передает информуцию на ближайший \l;пост обмена информации\u object\exchange;.
|
||||
|
||||
\t;name: \c;string\n;
|
||||
Название информации, которая будет отправлена на пост обмена. Имя - это строка: она должна быть написана в кавычках "¦".
|
||||
Если есть информация с таким же названием, то новая запись будет создана, также общее количество записей не должно превышать 10. Если же такое же имя уже имеет информацию, то оно будет перезаписано.
|
||||
|
||||
\t;value: \c;float\n;
|
||||
Значения для отправки.
|
||||
|
||||
\t;power: \c;float\n;
|
||||
Сигнал. подающийся для отправки информации, от которого зависит и дистанця. Стандартное значение - это 10 метров.
|
||||
|
||||
\t;См. также
|
||||
\c;\l;receive\u cbot\receive;\n;, \c;\l;testinfo\u cbot\testinfo;\n; and \c;\l;deleteinfo\u cbot\delinfo;\n;.
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,19 @@
|
|||
\b;Инструкция \c;shield\n;
|
||||
Синтаксис:
|
||||
\s;\c;shield ( опер );\n;
|
||||
|
||||
Активизирует или деактивизирует поля \l;полевика\u object\botshld;. Вы можете конечно передвигать полевика при активных щитах. Оно защищает от вражеского огня все объекты, которые находятся в сфере поля. Радиус сферы может меняться от 10 до 25 метров.
|
||||
|
||||
\t;опер: \c;\l;float\u cbot\float;\n;
|
||||
\c;1\n; активизирует поле.
|
||||
\c;0\n; деактивизирует поле
|
||||
Обычная полностью заряженная \l;энергетическая ячейка\u object\power; может поддерживать поля на протяжении 20 секунд. Когда энергия заканчивается, поле снимается.
|
||||
|
||||
\t;радиус: \c;\l;float\u cbot\float;\n;
|
||||
Радиус поля, который меняется от 10 до 25 метров.
|
||||
|
||||
\t;Возвращаемое значение: \c;\l;void\u cbot\void;\n;
|
||||
Нет.
|
||||
|
||||
\t;Смотри также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,22 @@
|
|||
\b;Инструкция \c;sizeof\n;
|
||||
Фунция sizeof позволяет узнать количестов элементов. содержащихся в \l;массиве\u cbot\array;.
|
||||
Т.е. индекс последнего элемента +1 ("пустые" элементы тоже считаются).
|
||||
\c;
|
||||
\s;{
|
||||
\s; int a[12];
|
||||
\s; a[5] = 345;
|
||||
\s; message( sizeof(a) ); // will display 6
|
||||
\s;}
|
||||
\n;
|
||||
В этом примере у нас есть 6 элементов в массиве после \c;a[5]=345\n;. Не инициализированные элементы - \c;[0]\n;, \c;[1]\n;, \c;[2]\n;, \c;[3]\n; и \c;[4]\n; будут посчитаны.
|
||||
|
||||
С многомерными массивами вы можете получить размер суб массива:
|
||||
\c;
|
||||
\s;float xy[][]; // 2 одномерных массива
|
||||
\s;xy[5][10] = 67;
|
||||
\s;message( sizeof(xy) ); // выведем 6
|
||||
\s;message( sizeof(xy[5]) ); // выведем 11
|
||||
\s;
|
||||
\n;
|
||||
\t;См. также
|
||||
\l;Инструкции\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,17 @@
|
|||
\b;Инструкция \c;sniff\n;
|
||||
Синтаксис:
|
||||
\s;\c;sniff ( );\n;
|
||||
|
||||
Проверяет землю перед \l;проверяющим\u object\botsr;. В зависимости от того, какие были обнаружены природные ископаемые, будут созданы следующие объекты:
|
||||
|
||||
\c;TitaniumSpot\n; -> \l;Красный крест\u object\stonspot;
|
||||
\c;UraniumSpot \n; -> \l;Желтый круг\u object\uranspot;
|
||||
\c;PowerSpot \n; -> \l;Зеленый крест\u object\enerspot;
|
||||
|
||||
\t;Возвращаемое значение: \c;\l;int\u cbot\int;\n;
|
||||
Если все нормально, то будет возвращен ноль, если же возникла ошибка, то будет возвращено другое значение.
|
||||
\c;== 0 \n;проверка выполнена
|
||||
\c;!= 0 \n;проверка невозможна
|
||||
|
||||
\t;Смотри также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,23 @@
|
|||
\b;Инструкция \c;space\n;
|
||||
Синтаксис :
|
||||
\s;\c;space ( центр, рмин, рмакс, раст );\n;
|
||||
|
||||
Определяет положение ближайшего свободного места возле указанной точки.
|
||||
|
||||
\t;центр: \c;\l;point\u cbot\point;\n; (по умолчанию: положение бота)
|
||||
Интересующая вас точка в пространстве.
|
||||
|
||||
\t;рмин: \c;\l;float\u cbot\float;\n; (значение по умолчанию: \c;8\n;)
|
||||
Минимальное расстояние от интересующей точки.
|
||||
|
||||
\t;рмакс: \c;\l;float\u cbot\float;\n; (значение по умолчанию: \c;50\n;)
|
||||
Максимальное расстояние от интересующей точки.
|
||||
|
||||
\t;раст: \c;\l;float\u cbot\float;\n; (значение по умолчанию: \c;4\n;)
|
||||
Требуемое расстояние между двумя свободными местами.
|
||||
|
||||
\t;Возвращает: \c;\l;point\u cbot\point;\n;
|
||||
Положение свободного места.
|
||||
|
||||
\t;Смотри также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,22 @@
|
|||
\b;Инструкция \c;static\n; (для специалистов)
|
||||
Члены \l;класса\u cbot\class;, объявленные как \c;static\n;, являются общими для всех экземпляров класса.
|
||||
\c;
|
||||
\s;public class MyClass
|
||||
\s;{
|
||||
\s; static int nb = 1;
|
||||
\s; static string [ ] list = null;
|
||||
\s;}
|
||||
\s;void Test ()
|
||||
\s;{
|
||||
\s; MyClasse item1();
|
||||
\s; MyClasse item2();
|
||||
\s; item1.nb = 3;
|
||||
\s; item1.list[item1.nb] = "Hello";
|
||||
\s; message( item2.list[item2.nb] ); // вывести "Hello"
|
||||
\s;}
|
||||
\n;
|
||||
\c;Статичные\n; члены могут быть объявлены как \c;\l;private\u cbot\private;\n;, таким образов они будут доступны только внутри членов класса (including constructors and destructors).
|
||||
|
||||
\t;См. также
|
||||
\c;\l;class\u cbot\class;\n;, \c;\l;synchronized\u cbot\synchro;\n;
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,20 @@
|
|||
\b;Инструкция \c;strfind\n;
|
||||
Поиск подстроки в строче и возвращение ее позиции (если найдена) или \l;nan\u cbot\nan;, если поиск не дал результатов.
|
||||
|
||||
Синтаксис¦:
|
||||
\s;\c;strfind ( string, sub );\n;
|
||||
|
||||
\t;string: \c;\l;string\u cbot\string;\n;
|
||||
Строчка, в которой будем искать.
|
||||
|
||||
\t;sub: \c;\l;string\u cbot\string;\n;
|
||||
Подстрока для поиска.
|
||||
|
||||
Примеры¦:
|
||||
\s;\c; int pos = strfind("abcdef", "ab"); // позиция будет 0
|
||||
\s; int pos = strfind("abcdef", "de"); // позиция будет 3
|
||||
\s; int pos = strfind("abcdef", "xy"); // позиция будет \l;nan\u cbot\nan;
|
||||
\n;
|
||||
\t;См. также
|
||||
\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,15 @@
|
|||
\b;Тип \c;string\n;
|
||||
Используйте переменные этого типа для хранения строки, которая может состоять как из одного символа, так и из целого предложения. Например:
|
||||
\s;\c; "Привет!"
|
||||
\s; "Это строка"
|
||||
\s; "х"
|
||||
\s; "" // пустая строка
|
||||
\n;
|
||||
Чтобы соединить две строки, используйте оператор \c;+\n; :
|
||||
\s;\c; "Доброе утро," + " " + "сер"
|
||||
|
||||
Получится строка:
|
||||
\s;\c; "Доброе утро, сер"
|
||||
|
||||
\t;Смотри также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,16 @@
|
|||
\b;Инструкция \c;strleft\n;
|
||||
Извлекает первый (тот. что слева) символов в строке.
|
||||
|
||||
Синтаксис¦:
|
||||
\s;\c;strleft ( string, len );\n;
|
||||
|
||||
\t;len: \c;\l;int\u cbot\int;\n;
|
||||
Количество символов для извлечения
|
||||
|
||||
Примеры¦:
|
||||
\s;\c; string s = strleft("abcdef", 2); // s будет "ab"
|
||||
\s; string s = strleft("abc", 10); // s будет "abc"
|
||||
\n;
|
||||
\t;См. также
|
||||
\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,14 @@
|
|||
\b;Инструкция \c;strlen\n;
|
||||
Возвращает длину строки.
|
||||
|
||||
Синтаксис¦:
|
||||
\s;\c;strlen ( string );\n;
|
||||
|
||||
Примеры¦:
|
||||
\s;\c; int len = strlen("abc"); // длина = 3
|
||||
\s; int len = strlen(""); // длина = 0
|
||||
\s; if ( strlen(s) == 0 ) // строка пуста ?
|
||||
\n;
|
||||
\t;См. также
|
||||
\c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,12 @@
|
|||
\b;Инструкция \c;strlower\n;
|
||||
Переписывает все символы в нижнем регистре.
|
||||
|
||||
Синтаксис¦:
|
||||
\s;\c;strlower ( string );\n;
|
||||
|
||||
Пример¦:
|
||||
\s;\c; string s = strlower("Abc"); // s будет "abc"
|
||||
\n;
|
||||
\t;См. также
|
||||
\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,20 @@
|
|||
\b;Инструкция \c;strmid\n;
|
||||
Извлекает подстроку заданной длины, начиная с выбранной позиции строчки.
|
||||
|
||||
Синтаксис¦:
|
||||
\s;\c;strmid ( string, pos, len );\n;
|
||||
|
||||
\t;pos: \c;\l;int\u cbot\int;\n;
|
||||
Индекс первого символа (начало считывания)
|
||||
|
||||
\t;len: \c;\l;int\u cbot\int;\n;
|
||||
Длина извлекаемой подстроки.
|
||||
|
||||
Примеры¦:
|
||||
\s;\c; string s = strmid("abcdef", 1, 2); // s = "bc"
|
||||
\s; string s = strmid("abcdef", 4, 5); // s = "ef"
|
||||
\s; string s = strmid("abcdef", 9, 2); // s = ""
|
||||
\n;
|
||||
\t;См. также
|
||||
\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,16 @@
|
|||
\b;Инструкция \c;strright\n;
|
||||
Извлекает последние символы из строки..
|
||||
|
||||
Синтаксис¦:
|
||||
\s;\c;strright ( string, len );\n;
|
||||
|
||||
\t;len: \c;\l;int\u cbot\int;\n;
|
||||
Количество извлекаемых символов.
|
||||
|
||||
Примеры¦:
|
||||
\s;\c; string s = strright("abcdef", 2); // s = "ef"
|
||||
\s; string s = strright("abc", 10); // s = "abc"
|
||||
\n;
|
||||
\t;См. также
|
||||
\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,12 @@
|
|||
\b;Инструкция \c;strupper\n;
|
||||
Преобразует все символы в верхний регистр
|
||||
|
||||
Синтаксис¦:
|
||||
\s;\c;strupper ( string );\n;
|
||||
|
||||
Пример¦:
|
||||
\s;\c; string s = strupper("Abc"); // s is "ABC"
|
||||
\n;
|
||||
\t;См. также
|
||||
\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strval\u cbot\strval;\n;, \c;\l;strlower\u cbot\strlower;\n;
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,19 @@
|
|||
\b;Инструкция \c;strval\n;
|
||||
Преобразует строку в число. Не путайте строку \c;"45"\n;, которая содержит в себе на самом деле два символа - \c;4\n; и \c;5\n;, и число \c;45\n;.
|
||||
|
||||
Примеры¦:
|
||||
\s;\c; string s = "45"+"12"; // s содержит "4512"
|
||||
\s; float n = 45 + 12; // n содержит 67
|
||||
\n;
|
||||
Синтаксис¦:
|
||||
\s;\c;strval ( string );\n;
|
||||
\n;
|
||||
Примеры¦:
|
||||
\s;\c; float n = strval("1.23"); // n станет 1.23
|
||||
\s; float n = strval("12abc45"); // n станет 12
|
||||
\s; float n = strval("abc"); // n станет 0
|
||||
\s; float n = strval("100")+2; // n станет 102
|
||||
\n;
|
||||
\t;См. также
|
||||
\c;\l;strlen\u cbot\strlen;\n;, \c;\l;strleft\u cbot\strleft;\n;, \c;\l;strright\u cbot\strright;\n;, \c;\l;strmid\u cbot\strmid;\n;, \c;\l;strfind\u cbot\strfind;\n;, \c;\l;strupper\u cbot\strupper;\n;, \c;\l;strlower\u cbot\strlower;\n;
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,25 @@
|
|||
\b;Инструкция \c;synchronized\n; (для специалистов)
|
||||
Метод \l;класса\u cbot\class; может быть объявлен с помощью \c;synchronized\n;. Данный метод помогает убедиться в том, что какая-либо функция никогда не выполняется более чем одним ботом.
|
||||
|
||||
Проиллюстрируем проблему:
|
||||
\c;
|
||||
\s;class blocking
|
||||
\s;{
|
||||
\s; static int nb = 33;
|
||||
\s; synchronized int inc( )
|
||||
\s; {
|
||||
\s; int val = nb;
|
||||
\s; wait ( 2 ); // ждать 2 секунды.
|
||||
\s; nb = nb + 1;
|
||||
\s; return val;
|
||||
\s; }
|
||||
\s;}
|
||||
\n;
|
||||
Что произойдет. если два боту будут выполнять метод \c;inc\n; в одно время¦?
|
||||
Оба она будут выполнять \c;val=nb\n; и ждать две секунды, так что один из них будет иметь \c;val=33\n;. С помощью \c;synchronized\n; первый бот начнет выполнение с \c;val=33\n; и подождет 2 секунды, а затем вернет значение. Только после того, как первый бот вернет значение из метода \c;inc\n;, второй бот начнет выполнять метод \c;inc\n; и, следовательно, второй бот будет всегда иметь \c;val=34\n;.
|
||||
|
||||
Вы можете иметь больше синхронизаций \l;классов\u cbot\class; для того, чтобы предотвратить выполнение одного метода более чем одним ботом. Другими словами: до тех пор, пока один бот не закончит работу, другие боты не смогут выполнить этот класс.
|
||||
|
||||
\t;См. также
|
||||
\c;\l;class\u cbot\class;\n;, \c;\l;static\u cbot\static;\n;
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,31 @@
|
|||
\b;Точка с запятой
|
||||
После простого выражения всегда ставьте точку с запятой \c;;\n;. Например:
|
||||
\c;
|
||||
\s; int counter = 0;
|
||||
\n;
|
||||
Тем не менее после \l;блока\u cbot\bloc; точка с запятой никогда не ставятся:
|
||||
\c;
|
||||
\s; {
|
||||
\s; float dist;
|
||||
\s; dist = distance(p1, p2);
|
||||
\s; } \n;// здесь точки с запятой нет!\c;
|
||||
\n;
|
||||
Также не используйте точку с запятой сразу же после инструкций \c;\l;while\u cbot\while;\n;, \c;\l;if\u cbot\if;\n; и \c;\l;for\u cbot\for;\n;:
|
||||
\c;
|
||||
\s; if ( a < b ) \n;// здесь нет точки с запятой!\c;
|
||||
\s; {
|
||||
\s; b = 100-a;
|
||||
\s; }
|
||||
\n;
|
||||
Инструкции всегда заканчиваются точкой с запятой, а не концом строки. Поэтому вы можете спокойно поместить в одну строку несколько инструкций:
|
||||
\c;
|
||||
\s; int d=20;
|
||||
\s; move(d);
|
||||
\s; turn(90);
|
||||
\n;
|
||||
Это эквивалентно:
|
||||
\c;
|
||||
\s; int d=20; move(d); turn(90);
|
||||
\n;
|
||||
\t;Смотри также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,18 @@
|
|||
\b;Инструкция \c;testinfo\n;
|
||||
Синтаксис¦:
|
||||
\s;\c;testinfo ( name, power );\n;
|
||||
|
||||
Проверяет, существует ли информация в ближайшем \l;посту обмена информацией\u object\exchange;.
|
||||
|
||||
\t;name: \c;string\n;
|
||||
Имя информации, которое будет тестироваться на посту. Это имя представляет из себя строку: оно должно быть написано в кавычках "¦".
|
||||
|
||||
\t;power: \c;float\n;
|
||||
Мощность передатчика, которая соответствует максимальному расстоянию между передатчиком и постом. Если дистанция большая, то функция вернет \c;false(ложь)\n;. Стандартное значение 10 метров.
|
||||
|
||||
\t;Return: \c;\l;bool\u cbot\bool;\n;
|
||||
Возвращает \c;true(правда)\n;, если информация существует. Возвращает \c;false\n;, если пост слишком далеко или на нем не записана такая информация..
|
||||
|
||||
\t;См. также
|
||||
\c;\l;receive\u cbot\receive;\n;, \c;\l;send\u cbot\send;\n; and \c;\l;deleteinfo\u cbot\delinfo;\n;.
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,54 @@
|
|||
\b;Инструкция \c;this\n;
|
||||
Иногда, методы \l;класса\u cbot\class; должны знать ссылку уже действующего экземпляра. Например, экземпляр, возможно, захочет передать свои ссылки другой функции. Неявное имя ссылки \c;this\n; доступно для методов, а также \c;this\n; это ссылка на текущий экземпляр.
|
||||
\c;
|
||||
\s;public class MyClass
|
||||
\s;{
|
||||
\s; int m_int;
|
||||
\s; string m_str;
|
||||
\s; void MyFunction()
|
||||
\s; {
|
||||
\s; OtherFunction(this);
|
||||
\s; m_int = 2;
|
||||
\s; }
|
||||
\s;}
|
||||
\s;
|
||||
\s;void OtherFunction(MyClass obj)
|
||||
\s;{
|
||||
\s; message(obj.m_str);
|
||||
\s;}
|
||||
\s;
|
||||
\s;extern void object::Test()
|
||||
\s;{
|
||||
\s; MyClass item();
|
||||
\s; item.m_str = "Hello";
|
||||
\s; item.MyFunction(); // вывести "Hello"
|
||||
\s;}
|
||||
\n;
|
||||
Вы можете написать \c;this\n; перед методом, но в этом нет необходимости. В приведенном ниже примере мы видим две строго одинаковых строки:
|
||||
\c;
|
||||
\s; m_int = 2;
|
||||
\s; this.m_int = 2; // они идентичны
|
||||
\n;
|
||||
В методе класса \c;\l;object\u cbot\object;\n;, вы можете использовать \c;this.\n; перед именем поля.
|
||||
\c;
|
||||
\s;extern void object::Display()
|
||||
\s;{
|
||||
\s; message(orientation);
|
||||
\s; message(this.orientation); // тоже самое, но
|
||||
\s; // более четко
|
||||
\s;}
|
||||
\n;
|
||||
Однако, если имя поля неизвестно, то объявление параметра или переменной необходимо использовать вместе с \c;this\n;. В следущем примере имя параметра \c;value\n; такое же, как и имя поля \c;value\n; \l;класса\u cbot\class; \c;MyClass\n;, поэтому мы должны написать \c;this.value\n; для того, чтобы отличить поле от параметра.
|
||||
\c;
|
||||
\s;public class MyClass
|
||||
\s;{
|
||||
\s; int value;
|
||||
\s; void Put( int value )
|
||||
\s; {
|
||||
\s; this.value = value;
|
||||
\s; }
|
||||
\s;}
|
||||
\n;
|
||||
\t;См. также
|
||||
\c;\l;class\u cbot\class;\n;
|
||||
\l;Программирование\u cbot;, \l:типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,13 @@
|
|||
\b;Инструкция \c;thump\n;
|
||||
Синтаксис:
|
||||
\s;\c;thump ( );\n;
|
||||
|
||||
Активизирует системы вооружения \l;тампера\u object\bottump;, которые заставляют мучиться пауков и муравьев, что делает их на некоторое время совершенно безвредными.
|
||||
|
||||
\t;Возвращаемое значение: \c;\l;int\u cbot\int;\n;
|
||||
Если все нормально, то значение будет равно нулю, если же оно не равно нулю, то это значит, что возникла ошибка.
|
||||
\c;== 0 \n;Удар нанесен
|
||||
\c;!= 0 \n;Операция невозможна
|
||||
|
||||
\t;Смотри также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,14 @@
|
|||
\b;Инструкция \c;topo\n;
|
||||
Синтаксис:
|
||||
\s;\c;topo ( положение );\n;
|
||||
|
||||
Возвращает высоту земли в указанной точке. Высота, равная нулю, соответствует уровню моря. Отрицательное значение показывает, что к этой точке земля покрыта водой.
|
||||
|
||||
\t;положение: \c;\l;point\u cbot\point;\n;
|
||||
Координаты точки, высоту которой вам нужно узнать.
|
||||
|
||||
\t;Возвращаемое значение: \c;\l;float\u cbot\float;\n;
|
||||
Высота земли в указанной точке.
|
||||
|
||||
\t;Смотри также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,5 @@
|
|||
\b;Тип \c;true\n;
|
||||
Это значение означает, что условие выполняется; это одно из двух значений, которые может принимать \l;булевая\u cbot\bool; \l;переменная\u cbot\var;.
|
||||
|
||||
\t;Смотри также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,33 @@
|
|||
\b;Инструкция \c;turn\n;
|
||||
Используйте инструкцию \c;turn();\n; для того, чтобы выполнять вращение на определенное количество градусов.
|
||||
|
||||
\b;Основное использование
|
||||
90 градусов означают поворот на четверть круга, 180 означают поворот на половину круга. Положительный угол приведет к вращению против часовой стрелки, а отрицательный угол приведет к вращению по часовой стрелке. Вот несколько примеров использования \c;turn();\n;:
|
||||
|
||||
\c;turn(90);\n; поворот на четверть круга налево
|
||||
\c;turn(-90);\n; поворот на четверть круга направо (отрицательный угол)
|
||||
\c;turn(180);\n; половина оборота
|
||||
|
||||
Для того, чтобы повернуть бота в направлении объекта, который был обнаружен с помощью инструкции \c;\l;radar\u cbot\radar;();\n;, вы должны вычислить угол поворота с помощью инструкции \c;\l;direction\u cbot\direct;()\n;:
|
||||
\c;
|
||||
\s; item = \l;radar\u cbot\radar;(AlienSpider);
|
||||
\s; turn(\l;direction\u cbot\direct;(item.position));
|
||||
\n;
|
||||
После выполнения этих строк просто стреляйте из пушки и у вас будет на одного врага меньше.
|
||||
|
||||
\b;Для специалистов
|
||||
Синтаксис:
|
||||
\s;\c;turn ( угол );\n;
|
||||
|
||||
Поворачивает бота на указанный угол направо или налево, при этом не передвигая его ни вперед, ни назад.
|
||||
|
||||
\t;угол: \c;\l;float\u cbot\float;\n;
|
||||
Угол требуемого поворота в градусах. Положительное значение означает поворот налево, а отрицательное направо. \c;turn(180)\n; повернет вас на половину круга.
|
||||
|
||||
\t;Возвращаемое значение: \c;\l;int\u cbot\int;\n;
|
||||
Если все нормально, то значение будет равно нулю, если же возникла ошибка, то оно будет отлично от нуля.
|
||||
\c;== 0 \n;вращение выполнено
|
||||
\c;!= 0 \n;вращение невозможно
|
||||
|
||||
\t;Смотри также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,33 @@
|
|||
\b;Типы переменных
|
||||
Когда вы определяете \l;переменную\u cbot\var;, вы должны дать ей два атрибута:
|
||||
|
||||
1) имя
|
||||
2) и тип
|
||||
|
||||
После того, как вы определили переменную, вы можете использовать ее для хранения информации. Тем не менее информация, которую может хранить переменная, должна быть правильного типа: переменная типа \l;float\u cbot\float; не может содержать и так далее.
|
||||
|
||||
В программе имя типа всегда пишется на \type;зеленом фоне\norm;. Если имя типа не окрашено, то это означает, что оно неправильно написано. Имя типа всегда пишется маленькими буквами. Вот список различных типов:
|
||||
|
||||
\s;\c;\l;int\u cbot\int;\n;
|
||||
Для целых чисел (12, -500 и так далее.).
|
||||
|
||||
\s;\c;\l;float\u cbot\float;\n;
|
||||
Для дробных чисел (12, 3.14, 0.2, -99.98 и так далее.).
|
||||
|
||||
\s;\c;\l;bool\u cbot\bool;\n;
|
||||
Для булевых переменных, которые могут принимать только два значения \c;true\n; или \c;false\n;, то есть правда или ложь.
|
||||
|
||||
\s;\c;\l;string\u cbot\string;\n;
|
||||
Для текста ("Привет!", "Объект не найден" и так далее.)
|
||||
|
||||
\s;\c;\l;point\u cbot\point;\n;
|
||||
Для координат точки в пространстве; переменная этого типа состоит из трех частей с именами x, y и z.
|
||||
|
||||
\s;\c;\l;object\u cbot\object;\n;
|
||||
Переменная этого типа содержит информацию об объекте (боте, здании, враге и так далее.).
|
||||
|
||||
\s;\c;\l;void\u cbot\void;\n;
|
||||
Этот тип это "пустой тип", который используется тогда, когда вы не хотите определять тип.
|
||||
|
||||
\t;Смотри также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,67 @@
|
|||
\b;Переменные
|
||||
Переменная похожа на ящик, куда вы можете положить какую-то информацию. Во время выполнения программы содержимое переменной может меняться.
|
||||
|
||||
Например вы можете использовать переменную для того, чтобы сосчитать количество единиц титановой руды, которое сборщик собрал и отнес в переработчик. Вначале вы должны придумать для нее имя: имя должно быть не очень длинным и при этом говорить о том, для чего используется эта переменная. Давайте назовем ее \c;countTit\n;. Эта переменная может содержать только целые числа, поэтому выберем тип \c;int\n;. Переменную нужно объявить в начале программы. Затем нужно сохранить в переменной значение \c;0\n; и каждый раз, когда вы будете подбирать титановую руду, увеличивать ее значение на \c;1\n;. В каждый момент времени переменная будет содержать количество единиц титановой руды, которую собрал сборщик.
|
||||
|
||||
Для объявления переменной напишите следующую строку:
|
||||
\c;\s; int countTit;\n;
|
||||
|
||||
Чтобы записать в переменную \c;0\n;, напишите:
|
||||
\c;\s; countTit = 0;\n;
|
||||
|
||||
При каждом поднятии титановой руды пишите:
|
||||
\c;\s; countTit = countTit + 1\n;
|
||||
|
||||
В выборе имени для переменной у вас есть довольно много возможностей, вы можете называть их как угодно, например: \c;dist\n;, \c;direct\n;, \c;p2\n;, \c;a\n;, \c;x\n;, \c;nothing_2_shoot_at\n; и так далее.
|
||||
Имя всегда должно начинаться с латинской буквы. За ней может следовать любая комбинация латинских букв, символов или символа подчеркивания \c;_\n;. Вы конечно не можете использовать для их названий ключевые слова языка CBOT, как например \c;\l;for\u cbot\for;\n;, \c;\l;while\u cbot\while;\n;, \c;\l;break\u cbot\break;\n;, \c;\l;continue\u cbot\continue;\n;, \c;do\n; и так далее.
|
||||
При выборе имен для переменных вы должны быть осторожны; написание программы может стать очень сложным, если вы забудете имена переменных или если вы не сможете вспомнить для чего они используются. Разработайте свою собственную систему для придумывания имен переменных, но не используйте такие имена как \c;Bmo45\n;, \c;a\n; или \c;tgBinX\n;.
|
||||
|
||||
В приведенном выше примере ключевое слово \c;int\n; показывает, что эта переменная может содержать только целые числа, которые соответствуют подсчитываемым объектам. Если вы хотите измерить расстояние, то лучше используйте переменную, которая может содержать и дробные числа с дробной частью (например 3.45 или 0.034): в этом случае используйте тип \c;float\n;.
|
||||
|
||||
Фактически переменная состоит из трех частей:
|
||||
1) имени
|
||||
2) типа хранимой в ней информации
|
||||
3) и содержимого, то есть самой информации
|
||||
|
||||
\t;имя
|
||||
Имя вам нужно для того, чтобы различать разнообразные переменные.
|
||||
|
||||
\t;тип
|
||||
\l;Тип\u cbot\type; определяет какой вид информации может содержать переменная. В зависимости от типа переменная может содержать целое число, дробное число, строку, координаты точки, информацию об объекте и так далее.
|
||||
Вот список наиболее часто используемых типов переменных:
|
||||
o \c;\l;int\u cbot\int;\n; для целого числа (12, -500 и так далее.)
|
||||
o \c;\l;float\u cbot\float;\n; для дробного числа (3.14, 0.2, -99.98 и так далее.)
|
||||
o \c;\l;string\u cbot\string;\n; для строки символов ("Привет!", "Объект не найден" и так далее.)
|
||||
o \c;\l;point\u cbot\point;\n; для x,y и z-координат в пространстве
|
||||
o \c;\l;object\u cbot\object;\n; для информации об объекте (бот, здание и так далее.)
|
||||
|
||||
\t;Содержимое
|
||||
Содержимое переменной это информация того вида, который определен в типе. Во время выполнения программы оно может меняться.
|
||||
|
||||
После того, как вы объявили переменную, она еще не содержит никакого значения. Что вы смогли ее использовать, нужно поместить в нее значение:
|
||||
\c;\s; int i, j;
|
||||
\s; j = 25; // j принимает значение, равное 25
|
||||
\s; j = i; // так писать нельзя, так как i еще ничего не содержит.
|
||||
\n;
|
||||
Вы также можете в одной строке одновременно объявить переменную и записать в нее значение, написав:
|
||||
\c;\s; int countTit = 0;
|
||||
\n;
|
||||
Когда вы присваиваете значение переменной с помощью знака равенства \c;=\n;, значение с правой стороны копируется в переменную с левой стороны. Изучите следующий пример:
|
||||
\c;\s; int i, j;
|
||||
\s; i = 5+2; // i принимает значение, равное 7
|
||||
\s; j = i+6; // j принимает значение i плюс 6, то есть 13
|
||||
\s; i = j; // i принимает значение j, то есть 13
|
||||
\n;
|
||||
В конце этого примера обе переменные \c;i\n; и \c;j\n; содержат значение \c;13\n;.
|
||||
|
||||
Последующее присвоение неправильно, так как с левой стороны знака равенства \c;=\n;, может быть только имя переменной:
|
||||
\c;\s; i+2 = j; // невозможно
|
||||
\n;
|
||||
Если вы хотите поменять местами значения двух переменных, то вы должны использовать третью переменную. Вот пример обмена содержимого двух переменных, \c;a\n; и \c;b\n; :
|
||||
\c;\s; int temp;
|
||||
\s; temp = a; // temp принимает значение a
|
||||
\s; a = b; // содержимое b копируется в a
|
||||
\s; b = temp; // содержимое temp копируется в b
|
||||
\n;
|
||||
\t;Смотри также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,5 @@
|
|||
\b;Тип \c;void\n;
|
||||
Используйте этот тип, когда вы не хотите определять тип переменной, например когда функция ничего не возвращает.
|
||||
|
||||
\t;Смотри также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,22 @@
|
|||
\b;Инструкция \c;wait\n;
|
||||
Инструкция \c;wait();\n; заставляет бота ждать несколько секунд, в соответствии со значением, написанным внутри скобок.
|
||||
|
||||
\b;Основное использование
|
||||
Для того, чтобы подождать, пока на энергетической станции зарядится \l;энергетическая ячейка\u object\power;, подождите 5 секунд с помощью команды \c;wait(5);\n;.
|
||||
|
||||
Чтобы подождать, пока \l;преобразователь\u object\convert; закончит преобразовывать \l;титановую руду\u object\titanore; в \l;титановый куб\u object\titan;, подождите 15 секунд с помощью команды \c;wait(15);\n;.
|
||||
|
||||
\b;для специалистов
|
||||
Синтаксис:
|
||||
\s;\c;wait ( время );\n;
|
||||
|
||||
Ждет некоторое время.
|
||||
|
||||
\t;время: \c;\l;float\u cbot\float;\n;
|
||||
Определяет время, которое должен ждать бот.
|
||||
|
||||
\t;Возвращаемое значение: \c;\l;void\u cbot\void;\n;
|
||||
Нет.
|
||||
|
||||
\t;Смотри также
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,47 @@
|
|||
\b;Инструкция \c;while\n;
|
||||
Инструкция \c;while () {}\n; используется для того, чтобы несколько раз повторять один и тот же набор инструкций.
|
||||
|
||||
\b;Основное использование
|
||||
Наиболее часто \c;while\n; используется для того, чтобы снова и снова повторять набор инструкций. Для того, чтобы добиться этого, напишите \c;while (true) {}\n; и впишите инструкции, которые нужно повторять, в скобки \c;{}\n;. Как пример здесь представлена программа, которая снова и снова повторяет следующие действия:
|
||||
o ищет паука,
|
||||
o поворачивается к нему,
|
||||
o стреляет.
|
||||
\c;
|
||||
\s; while (true)
|
||||
\s; {
|
||||
\s; item = \l;radar\u cbot\radar;(AlienSpider);
|
||||
\s; \l;turn\u cbot\turn;(direction(item.position));
|
||||
\s; \l;fire\u cbot\fire;(1);
|
||||
\s; }
|
||||
\n;
|
||||
Запустите эту программу один раз и с ее помощью вы убьете всех пауков вокруг вас.
|
||||
|
||||
\b;Для специалистов
|
||||
Синтаксис :
|
||||
\s;\c;while ( условие )
|
||||
\s;{
|
||||
\s; \n;Инструкции ...\c;
|
||||
\s;}
|
||||
\n;
|
||||
Эта инструкция позволит вам выполнять инструкции внутри \l;блока\u cbot\bloc; несколько раз.
|
||||
|
||||
Будьте внимательны и не путайте инструкцию \c;while( ) { }\n; с инструкцией \c;\l;do\u cbot\do; { } while( );\n;; последняя проверяет условие только после того, как инструкции внутри блока были один раз выполнены.
|
||||
|
||||
\t;\c;условие\n;
|
||||
Инструкции в блоке будут выполняться снова и снова, пока \l;условие\u cbot\cond; будет выполняться, то есть будет правдивым.
|
||||
|
||||
Вот пример :
|
||||
\s;\c;int i = 0;
|
||||
\s;while ( i < 10 )
|
||||
\s;{
|
||||
\s; \n;Инструкцияs ...\c;
|
||||
\s; i = i+1;
|
||||
\s;}
|
||||
\n;
|
||||
\t;Внимание
|
||||
Не вставляйте \l;точку с запятой\u cbot\term; в конец строки \c;while ( )\n;.
|
||||
|
||||
Внутри блока, следующего за инструкцией \c;while { }\l; могут быть полезны инструкции \u cbot\break;\n;break\c;\l; и \u cbot\continue;\n;continue\c;\n;.
|
||||
|
||||
\t;Смотри также
|
||||
\l;Инструкции\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,21 @@
|
|||
\b;Инструкция \c;writeln\n;
|
||||
Написать одну строку текаста в файл. Это метод класса \c;\l;file\u cbot\file;\n;. Это причина, по которой мы пишем так - \c;handle.writeln()\n;¦:
|
||||
\c;
|
||||
\s; handle.writeln("abc");
|
||||
\n;
|
||||
Файл должен быть открыт для записи (\c;"w"\n;) с помощью инструкции \c;\l;open\u cbot\open;\n;. Линия автоматически заканчивается сиволами 0x0D (CR) и 0x0A (LF).
|
||||
|
||||
Синтаксис¦:
|
||||
\s;\c;handle.writeln ( string );\n;
|
||||
|
||||
Примеры¦:
|
||||
\c;
|
||||
\s; writeln("Line of text");
|
||||
|
||||
\s; string s1 = "abc";
|
||||
\s; string s2 = "def";
|
||||
\s; writeln(s1 + " " + s2);
|
||||
\n;
|
||||
\t;См. также
|
||||
\c;\l;file\u cbot\file;\n;, \c;\l;open\u cbot\open;\n;, \c;\l;close\u cbot\close;\n;, \c;\l;readln\u cbot\readln;\n; and \c;\l;eof\u cbot\eof;\n;.
|
||||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,7 @@
|
|||
Команда разработчиков: Главные бета-тестеры:
|
||||
|
||||
- Даниэль Рукс - Адриен Рукс - Майкл Джубин
|
||||
- Денис Думалин - Дидьер Рабуд - Даниэль Сутьер
|
||||
- Отто Килбл - Николас Бучат - Николас Стуби
|
||||
- Майкл Вальз - Джоуль Рукс - Патрик Твоз
|
||||
- Дидьер Герч
|
|
@ -0,0 +1,91 @@
|
|||
\b;Язык программирования CBOT
|
||||
Язык программирования CBOT по структуре и синтаксису очень напоминает C++ и Java. Он был приспособлен для специфических возможностей COLOBOT, и для эффективного метода обучения.
|
||||
Этот язык состоит из инструкций (см. ниже), \l;блоков\u cbot\bloc;, \l;переменных\u cbot\var;, \l;выражений\u cbot\expr; и \l;условий\u cbot\cond;.
|
||||
|
||||
o \c;\token;Инструкции\norm;\n;
|
||||
В редакторе программы инструкции языка программирования CBOT всегда отображены на оранжевом фоне. Если для инструкции не появляется оранжевый фон, это значит, что она неправильно написана. Имена инструкций должны всегда быть написаны в нижнем регистре.
|
||||
|
||||
o \c;\type;Тип\norm;\n;
|
||||
\l;Тип\u cbot\type; переменной выводится на зеленом фоне.
|
||||
|
||||
o \c;\const;Константы\norm;\n;
|
||||
Константы, например \l;категории\u cbot\category;, выводятся на красном фоне.
|
||||
|
||||
\t;Инструкции языка программирования CBOT:
|
||||
\c;\l;extern\u cbot\extern; \n;Объявление главной программы
|
||||
\c;\l;if\u cbot\if; \n;Выбор структуры(если)
|
||||
\c;\l;else\u cbot\if; \n;Альтернативный выбор структуры(то)
|
||||
\c;\l;for\u cbot\for; \n;Цикл с заданым значением и условием
|
||||
\c;\l;while\u cbot\while; \n;Цикл с предусловием
|
||||
\c;\l;do\u cbot\do; \n;Цикл с постусловием
|
||||
\c;\l;break\u cbot\break; \n;Выход из цикла
|
||||
\c;\l;continue\u cbot\continue; \n;Продолжение цикла
|
||||
\c;\l;return\u cbot\return; \n;Выход из функции
|
||||
\c;\l;sizeof\u cbot\sizeof; \n;Размер массива
|
||||
|
||||
\t;Особенные инструкции для ботов:
|
||||
\c;\l;radar\u cbot\radar; \n;Поиск объекта
|
||||
\c;\l;direction\u cbot\direct; \n;Расчет угла поворота
|
||||
\c;\l;distance\u cbot\dist; \n;Расчет расстояния
|
||||
\c;\l;distance2d\u cbot\dist2d; \n;Расчет расстояния
|
||||
\c;\l;wait\u cbot\wait; \n;Ожидание
|
||||
\c;\l;move\u cbot\move; \n;Движение вперед или назад
|
||||
\c;\l;turn\u cbot\turn; \n;Поворот
|
||||
\c;\l;goto\u cbot\goto; \n;Переход к указанной позиции
|
||||
\c;\l;motor\u cbot\motor; \n;Прямое управление двигателем
|
||||
\c;\l;jet\u cbot\jet; \n;Прямое управление реактивным двигателем
|
||||
\c;\l;message\u cbot\message; \n;Выводит сообщение
|
||||
\c;\l;retobject\u cbot\retobj; \n;Возвращает объект из функции
|
||||
\c;\l;errmode\u cbot\errmode; \n;Устранение ошибок
|
||||
\c;\l;abstime\u cbot\abstime; \n;Возвращает абсолютное время
|
||||
|
||||
\t;Инструкции, относящиеся к топологии:
|
||||
\c;\l;topo\u cbot\topo; \n;Возвращает высоту точки
|
||||
\c;\l;flatground\u cbot\flatgrnd; \n;Возвращает радиус плоской поверхности
|
||||
\c;\l;space\u cbot\space; \n;Расчет свободного места
|
||||
|
||||
\t;Особенные инструкции для некоторых ботов:
|
||||
\c;\l;grab\u cbot\grab; \n;Поднять объект
|
||||
\c;\l;drop\u cbot\drop; \n;Положить объект
|
||||
\c;\l;sniff\u cbot\sniff; \n;Просканировать подпочву
|
||||
\c;\l;thump\u cbot\thump; \n;Удар
|
||||
\c;\l;recycle\u cbot\recycle; \n;Переработать бота
|
||||
\c;\l;shield\u cbot\shield; \n;Поднять или опустить щит
|
||||
\c;\l;fire\u cbot\fire; \n;Стрельба из орудия
|
||||
\c;\l;aim\u cbot\aim; \n;Угол наведения
|
||||
|
||||
\t;Особенные инструкции для постов обмена информацией:
|
||||
\c;\l;receive\u cbot\receive; \n;Получить информацию
|
||||
\c;\l;send\u cbot\send; \n;Передать информацию
|
||||
\c;\l;testinfo\u cbot\testinfo; \n;Проверка на существование информации
|
||||
\c;\l;deleteinfo\u cbot\delinfo; \n;Удаление информации с поста
|
||||
|
||||
\t;Особенные инструкции для классов:
|
||||
\c;\l;class\u cbot\class; \n;Объявление класса
|
||||
\c;\l;public\u cbot\public; \n;Объявить общедоступную функцию
|
||||
\c;\l;private\u cbot\private; \n;Объявить защищенный член класса
|
||||
\c;\l;static\u cbot\static; \n;Объявить статичный член класса
|
||||
\c;\l;synchronized\u cbot\synchro; \n;Предотвращение одновременного выполнения
|
||||
\c;\l;new\u cbot\new; \n;Создать новый экземпляр
|
||||
\c;\l;this\u cbot\this; \n;Ссылка на текущий экземпляр
|
||||
|
||||
\t;Особенные инструкции для строк:
|
||||
\c;\l;strlen\u cbot\strlen; \n;Получить длину строки
|
||||
\c;\l;strleft\u cbot\strleft; \n;Взять левую часть строки
|
||||
\c;\l;strright\u cbot\strright; \n;Взять правую часть строки
|
||||
\c;\l;strmid\u cbot\strmid; \n;Взять центральную часть строки
|
||||
\c;\l;strfind\u cbot\strfind; \n;Найти подстрочку
|
||||
\c;\l;strval\u cbot\strval; \n;Конвертировать строку в число
|
||||
\c;\l;strupper\u cbot\strupper; \n;Конвертировать в большой регистр
|
||||
\c;\l;strlower\u cbot\strlower; \n;Конвертировать в маленький регистр
|
||||
|
||||
\t;Специальные инструкции для файлов:
|
||||
\c;\l;open\u cbot\open; \n;Открыть файл
|
||||
\c;\l;close\u cbot\close; \n;Закрыть файл
|
||||
\c;\l;writeln\u cbot\writeln; \n;записать строку в файл
|
||||
\c;\l;readln\u cbot\readln; \n;Прочитать строку из файла
|
||||
\c;\l;eof\u cbot\eof; \n;Проверить конец файла
|
||||
\c;\l;deletefile\u cbot\deletef; \n;Удалить файл
|
||||
|
||||
\t;См. также
|
||||
\l;Типы\u cbot\type; и \l;категории\u cbot\category;.
|
|
@ -0,0 +1,46 @@
|
|||
\b;Управление
|
||||
Советуем играть, держа одну руку на кнопках со стрелками, а вторую - на мыши.
|
||||
|
||||
\t;Боты
|
||||
\key;\key left;\norm; = поворот влево
|
||||
\key;\key right;\norm; = поворот вправо
|
||||
\key;\key up;\norm; = вперед
|
||||
\key;\key down;\norm; = назад
|
||||
Эти клавиши управления недоступны при работе с \l;учебными ботами\u object\bottr;.
|
||||
|
||||
\key;\key gup;\norm; = взлет и подъем \button 28;
|
||||
\key;\key gdown;\norm; = спуск и посадка \button 29;
|
||||
Конечно же, этими клавишами могут пользоваться только \l;астронавт\u object\human; и различные \l;летающие боты\u object\botgj;.
|
||||
|
||||
|
||||
Мышь вперед = поднять прицел
|
||||
Мышь назад = опустить прицел
|
||||
Мышь вправо = прицел вправо
|
||||
Мышь влево = прицел влево
|
||||
Эти движения доступны только для \l;стрелков\u object\botfr;, \l;орга-стрелков\u object\botor; и \l;фазерного стрелка\u object\botphaz;.
|
||||
|
||||
\key;\key action;\norm; = основное действие для выбранного объекта (человек или бот)
|
||||
Эта клавиша, например, управляет рукой \l;сборщика\u object\botgr; или производит \l;выстрел\u object\botfr; \button 42;.
|
||||
|
||||
\t;Выделения
|
||||
\key;\key next;\norm; = выбрать следующий объект
|
||||
\key;\key human;\norm; = выбрать астронавта
|
||||
\key;\key desel;\norm; = предыдущий объект \button 10;
|
||||
|
||||
\t;Камера
|
||||
\key;\key camera;\norm; = переключения между бортовой и задней камерой \button 13;
|
||||
\key;\key near;\norm; = увеличение
|
||||
\key;\key away;\norm; = уменьшение
|
||||
\key;\key visit;\norm; = останавливает игру и показывает место, откуда появилось последнее сообщение. Нажмите еще раз, чтобы увидеть место, где появилось предыдущее сообщение.
|
||||
|
||||
\t;Помощь
|
||||
\key;\key help;\norm; = инструкции миссии
|
||||
\key;\key prog;\norm; = помощь в программировании
|
||||
|
||||
\t;Игра
|
||||
\key;\key speed10;\norm; = нормальная скорость x1
|
||||
\key;\key speed15;\norm; = средняя скорость x1.5
|
||||
\key;\key speed20;\norm; = высокая скорость x2
|
||||
\key;\key quit;\norm; = выход из миссии \button 11;
|
||||
|
||||
Все эти клавиши можно переназначить в меню опции/управление.
|
|
@ -0,0 +1,3 @@
|
|||
Фотография туманности NGC3606, освещающей небо Орфея и программа установки были получены с помощью космического телескопа Хаббл. Она используется с лоюбезного разрешения авторов Вольфганга Бранднера (JPL/IPAC), Эвы K. Гребель (Вашингтонский университет), Ю-Хуа Чу (Университет Иллинойса) и NASA.
|
||||
|
||||
Звук грома на Орфее используется по ограниченному разрешению CREATIVE.
|
|
@ -0,0 +1,22 @@
|
|||
\b;Навигация
|
||||
Три клавиши, размещенные в левом верхнем углу экрана, позволяют вам перемещаться по разнообразному тексту файла помощи:
|
||||
|
||||
\button 30; Домой
|
||||
Возврат к домашней странице, то есть к первой отображенной странице. Например, когда вы нажимаете клавишу \key;\key help;\norm; или \key;\key prog;\norm; .
|
||||
|
||||
\button 55; Назад
|
||||
Возврат к предыдущей странице, то есть к той странице, которая была отображена в то время, когда вы щелкнули на ссылке.
|
||||
|
||||
\button 48; Дальше
|
||||
Снова перейти на следующую страницу, после того, как вы нажимали кнопки "Домой" или "Назад".
|
||||
|
||||
\t;Комментарий
|
||||
Когда цвет кнопки серый, это означает, что ее нельзя использовать в этот момент. Например, когда вы находитесь на домашней странице, серой будет кнопка "Домой", так как в ее использовании нет смысла.
|
||||
|
||||
Этот комментарий может быть применен для всех кнопок игры COLOBOT.
|
||||
|
||||
\t;Прокрутка текста
|
||||
Если на вашей мышке есть колесо, вы можете использовать его для прокрутки текста вверх или вниз. Если же колеса нет, воспользуйтесь клавишами со стрелками или полосой прокрутки в правой части экрана.
|
||||
|
||||
\t;Размер шрифта
|
||||
Курсор в верхней части экрана позволяет вам менять размер шрифта.
|
|
@ -0,0 +1,3 @@
|
|||
|
||||
Хьюстон поздравляет вас от имени всего человечества с успешным выполнением миссии.
|
||||
Большое переселение на Терра Нову начнется очень скоро.
|
|
@ -0,0 +1,11 @@
|
|||
\b;Муравей
|
||||
\image ant 8 8;
|
||||
Муравьи выстреливают маленькие едкие шарики, которые в конце концов прогрызают защитное покрытие ботов и зданий, заставляя их взрываться.
|
||||
|
||||
\l;Вы\u object\human; можете сопротивляться их атакам намного дольше чем большинство зданий и ботов, а ваш щит будет восстановлен когда залечатся ваши раны. Впрочем, если вы слишком долго будете оставаться с ними или их будет слишком много, ваша жизнь будет в большой опасности.
|
||||
|
||||
\t;Объект \l;Категория\u cbot\category;
|
||||
\c;AlienAnt\n;
|
||||
|
||||
\t;Смотрите также
|
||||
\l;Язык CBOT\u cbot;, \l;Переменные\u cbot\type; и \l;Категории\u cbot\category;.
|
|
@ -0,0 +1,15 @@
|
|||
\b;Ядерная батарея
|
||||
\image atomic 4 4;
|
||||
Ядерная батарея обеспечивает энергией ботов и некоторые здания.
|
||||
Она в 10 раз более мощная, чем \l;обычная батарея\u object\power;.
|
||||
|
||||
Ядерные батарея нельзя перезаряжать или перерабатывать. \l;Ядерный завод\u object\nuclear; и \l;урановая руда\u object\uranore; необходимы, чтобы произвести новую полностью заряженную ядерную батарею.
|
||||
|
||||
\t;Транспорт
|
||||
Все \l;сборщики\u object\botgr; и \l;астронавт\u object\human;.
|
||||
|
||||
\t;Объект \l;Категория\u cbot\category;
|
||||
\c;NuclearPowerCell\n;
|
||||
|
||||
\t;Смотрите также
|
||||
\l;Язык CBOT\u cbot;, \l;Переменные\u cbot\type; и \l;Категории\u cbot\category;.
|
|
@ -0,0 +1,8 @@
|
|||
\b;Барьер
|
||||
Барьер это просто препятствие, которое используется для тренировок.
|
||||
|
||||
\t;Объект \l;Категория\u cbot\category;
|
||||
\c;Barrier\n;
|
||||
|
||||
\t;Смотрите также
|
||||
\l;Язык CBOT\u cbot;, \l;Переменные\u cbot\type; и \l;Категории\u cbot\category;.
|
|
@ -0,0 +1,11 @@
|
|||
\b;\button 171; Космический корабль
|
||||
\image base 8 8;
|
||||
\lЕдинственный путь безопасно путешествовать по космосу и выполнять свои миссии - это космический корабль.
|
||||
|
||||
Также он способен нести ботов и необработанные материалы. Когда заканчивается миссия, вы должны выбрать космический корабль, затем кликнуть на команде <взлет> \button 28;.
|
||||
|
||||
\t;Объект \l;Категория\u cbot\category;
|
||||
\c;SpaceShip\n;
|
||||
|
||||
\t;Смотрите также
|
||||
\l;Язык CBOT\u cbot;, \l;Переменные\u cbot\type; и \l;Категории\u cbot\category;.
|
|
@ -0,0 +1,15 @@
|
|||
\b;Черный Ящик
|
||||
\image bbox 4 4;
|
||||
Черный ящик на самом деле оранжевого цвета, чтобы его было легче найти. Каждый \l;космический корабль\u object\base; оборудован черным ящиком, который записывает и хранит информацию о полете.
|
||||
|
||||
Черный ящик также можно использовать, чтобы оставлять важную информацию. На каждой планете первая экспедиция оставила черный ящик, содержащий координаты следующей планеты, на которую они направлялись.
|
||||
|
||||
|
||||
\t;Транспорт
|
||||
Все \l;сборщики\u object\botgr; и \l;астронавт\u object\human;.
|
||||
|
||||
\t;Объект \l;Категория\u cbot\category;
|
||||
\c;BlackBox\n;
|
||||
|
||||
\t;Смотрите также
|
||||
\l;Язык CBOT\u cbot;, \l;Переменные\u cbot\type; и \l;Категории\u cbot\category;.
|
|
@ -0,0 +1,21 @@
|
|||
\b;\button 144; Гусеничный Стрелок
|
||||
\image botfc 8 8;
|
||||
Гусеничный бот оборудованный пушкой, выстреливающей огненные шары.
|
||||
|
||||
Эта пушка является эффективным оружием против большинства \l;врагов\u object\mother;. Используйте ее разумно, так как она требует много энергии. \l;Обычная батарея\u object\power; позволит вам сделать всего 4 выстрела.
|
||||
|
||||
Совет : вы можете двигать мышь пока стреляете, чтобы покрыть большую территорию.
|
||||
|
||||
Гусеничные боты могут спускаться по крутым склонам, но они довольно медленны и используют много энергии. На плоской поверхности и небольших дистанциях лучше использовать \l;колесного стрелка\u object\botfr;. Если можно построить \l;летающих ботов\u object\botfj;, то они лучше всего подходят для больших расстояний.
|
||||
|
||||
|
||||
\t;Программирование
|
||||
Чтобы запрограммировать движение бота, используйте следующие команды : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
|
||||
|
||||
Чтобы запрограммировать пушку, используйте \c;\l;fire\u cbot\fire;\n;. Чтобы поднимать или опускать прицел, используйте \c;\l;aim\u cbot\aim;\n;.
|
||||
|
||||
\t;Объект \l;Категория\u cbot\category;
|
||||
\c;TrackedShooter\n;
|
||||
|
||||
\t;Смотрите также
|
||||
\l;Язык CBOT\u cbot;, \l;Переменные\u cbot\type; и \l;Категории\u cbot\category;.
|
|
@ -0,0 +1,22 @@
|
|||
\b;\button 145; Летающий Стрелок
|
||||
\image botfj 8 8;
|
||||
Оснащенный реактивными двигателями летающий бот, оборудованный пушкой.
|
||||
|
||||
Эта пушка является эффективным оружием против большинства \l;врагов\u object\mother;. Используйте ее разумно, так как она требует много энергии. \l;Обычная батарея\u object\power; позволит вам сделать всего 4 выстрела.
|
||||
|
||||
Совет : вы можете двигать мышь пока стреляете, чтобы покрыть большую территорию.
|
||||
|
||||
Дисплей внизу вашего экрана показывает температуру реактора. Следите за ней. Если реактор перегревается, двигатель остановится и бот упадет.
|
||||
|
||||
Летающие боты могут перелетать через естественные препятствия, такие как горы или озера, но их энергия быстро заканчивается. На земле они медленны. Чтобы покрыть небольшую дистанцию, где не требуется летать, лучше использовать \l;колесного стрелка\u object\botfr;.
|
||||
|
||||
\t;Программирование
|
||||
Чтобы запрограммировать движение бота, используйте следующие команды : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;jet\u cbot\jet;\n;, \c;\l;goto\u cbot\goto;\n;.
|
||||
|
||||
Чтобы запрограммировать пушку, используйте \c;\l;fire\u cbot\fire;\n;. Чтобы поднимать или опускать прицел, используйте \c;\l;aim\u cbot\aim;\n;.
|
||||
|
||||
\t;Объект \l;Категория\u cbot\category;
|
||||
\c;WingedShooter\n;
|
||||
|
||||
\t;Смотрите также
|
||||
\l;Язык CBOT\u cbot;, \l;Переменные\u cbot\type; и \l;Категории\u cbot\category;.
|
|
@ -0,0 +1,20 @@
|
|||
\b;\button 143; Колесный Стрелок
|
||||
\image botfr 8 8;
|
||||
Колесный бот оборудованный пушкой, которая стреляет огненными шарами.
|
||||
|
||||
Эта пушка является эффективным оружием против большинства \l;врагов\u object\mother;. Используйте ее разумно, так как она требует много энергии. \l;Обычная батарея\u object\power; позволит вам сделать всего 4 выстрела.
|
||||
|
||||
Совет : вы можете двигать мышь пока стреляете, чтобы покрыть большую территорию.
|
||||
|
||||
Колеса это обычный, быстрый и экономный режим передвижения, что великолепно подходит для относительно плоской поверхности. Если поверхность идет под уклон, лучше использовать \l;летающего стрелка\u object\botfj;, или, если это невозможно, то \l;гусеничного стрелка\u object\botfc;.
|
||||
|
||||
\t;Программирование
|
||||
Чтобы запрограммировать движение бота, используйте следующие команды : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
|
||||
|
||||
Чтобы запрограммировать пушку, используйте \c;\l;fire\u cbot\fire;\n;. Чтобы поднимать или опускать прицел, используйте \c;\l;aim\u cbot\aim;\n;.
|
||||
|
||||
\t;Объект \l;Категория\u cbot\category;
|
||||
\c;WheeledShooter\n;
|
||||
|
||||
\t;Смотрите также
|
||||
\l;Язык CBOT\u cbot;, \l;Переменные\u cbot\type; и \l;Категории\u cbot\category;.
|
|
@ -0,0 +1,20 @@
|
|||
\b;\button 151; Шагающий Стрелок
|
||||
\image botfs 8 8;
|
||||
Пресмыкающийся бот с муравьиными ногами оборудован пушкой, которая стреляет огненными шарами.
|
||||
|
||||
Эта пушка является эффективным оружием против большинства \l;врагов\u object\mother;. Используйте ее разумно, так как она требует много энергии. \l;Обычная батарея\u object\power; позволит вам сделать всего 4 выстрела.
|
||||
|
||||
Совет : вы можете двигать мышь пока стреляете, чтобы покрыть большую территорию.
|
||||
|
||||
Шагающий стрелок использует в два раза меньше энергии чем \l;колесный стрелок\u object\botfr;. Шагающий бот также отлично подходит для карабканья на самые крутые склоны.
|
||||
|
||||
\t;Программирование
|
||||
Чтобы запрограммировать передвижение бота, используйте следующие команды : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
|
||||
|
||||
Чтобы запрограммировать пушку, используйте \c;\l;fire\u cbot\fire;\n;. Чтобы поднимать или опускать прицел, используйте \c;\l;aim\u cbot\aim;\n;.
|
||||
|
||||
\t;Объект \l;Категория\u cbot\category;
|
||||
\c;LeggedShooter\n;
|
||||
|
||||
\t;Смотрите также
|
||||
\l;Язык CBOT\u cbot;, \l;Переменные\u cbot\type; и \l;Категории\u cbot\category;.
|
|
@ -0,0 +1,33 @@
|
|||
\b;\button 138; Гусеничный cборщик
|
||||
\image botgc 8 8;
|
||||
Гусеничный бот оборудованный рабочей рукой.
|
||||
|
||||
\button 32; Берет объект или кладет его в место, определенное одной из следующих опций :
|
||||
\button 33; Объект лежит перед ботом, на земле или на втором боте.
|
||||
\button 35; Объект это личный аккумулятор бота.
|
||||
\button 34; Объект лежит за ботом, на земле.
|
||||
|
||||
Следующие объекты могут быть транспортированы :
|
||||
o \l;Титановая руда\u object\titanore;.
|
||||
o \l;Урановая руда\u object\uranore;.
|
||||
o \l;Титановый куб\u object\titan;.
|
||||
o \l;Обычный аккумулятор\u object\power;.
|
||||
o \l;Ядерный аккумулятор\u object\atomic;.
|
||||
o \l;Черный Ящик\u object\bbox;.
|
||||
o \l;Ключи A, B, C, и D\u object\key;.
|
||||
o \l;Органическая материя\u object\bullet;.
|
||||
|
||||
Гусеничные боты могут взбираться на крутые склоны, но они довольно медленны и используют много энергии. На плоской поверхности и для небольших расстояний лучше использовать \l;колесный сборщик\u object\botgr;. Если это возможно, то для больших расстояний лучше построить \l;летающего бота\u object\botgj;.
|
||||
|
||||
Сборщик не работает под водой. Там вам понадобится \l;саббер\u object\botsub;.
|
||||
|
||||
\t;Программирование
|
||||
Чтобы запрограммировать передвижение бота, используйте следующие команды : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
|
||||
|
||||
Чтобы запрограммировать рабочую руку, используйте \c;\l;grab\u cbot\grab;\n; и \c;\l;drop\u cbot\drop;\n;.
|
||||
|
||||
\t;Объект \l;Категория\u cbot\category;
|
||||
\c;TrackedGrabber\n;
|
||||
|
||||
\t;Смотрите также
|
||||
\l;Язык CBOT\u cbot;, \l;Переменные\u cbot\type; и \l;Категории\u cbot\category;.
|
|
@ -0,0 +1,35 @@
|
|||
\b;\button 139; Летающий cборщик
|
||||
\image botgj 8 8;
|
||||
Летающий бот оборудованный реактивным двигателем и рабочей рукой.
|
||||
|
||||
\button 32; Берет объект или кладет его в место, определенное одной из следующих опций :
|
||||
\button 33; Объект лежит перед ботом, на земле или на втором боте.
|
||||
\button 35; Объект это личный аккумулятор бота.
|
||||
\button 34; Объект лежит за ботом, на земле.
|
||||
|
||||
Следующие объекты могут быть транспортированы :
|
||||
o \l;Титановая руда\u object\titanore;.
|
||||
o \l;Урановая руда\u object\uranore;.
|
||||
o \l;Титановый куб\u object\titan;.
|
||||
o \l;Обычный аккумулятор\u object\power;.
|
||||
o \l;Ядерный аккумулятор\u object\atomic;.
|
||||
o \l;Черный Ящик\u object\bbox;.
|
||||
o \l;Ключи A, B, C, и D\u object\key;.
|
||||
o \l;Органическая материя\u object\bullet;.
|
||||
|
||||
Дисплей внизу вашего экрана показывает температуру реактора. Следите за ней. Если реактор перегреется, двигатель остановится и бот упадет.
|
||||
|
||||
Крылатые боты могут перелетать через естественные препятствия, такие как горы или озера, но запас их энергии быстро заканчивается. На земле они медленны. На плоской поверхности и для небольших расстояний лучше использовать \l;колесный сборщик\u object\botgr;.
|
||||
|
||||
Сборщик не работает под водой. Там вам понадобится \l;саббер\u object\botsub;.
|
||||
|
||||
\t;Программирование
|
||||
Чтобы запрограммировать передвижение бота, используйте следующие команды : \c;\l;move\u cbot\move;\n;, \c;\l;turn\u cbot\turn;\n;, \c;\l;motor\u cbot\motor;\n;, \c;\l;goto\u cbot\goto;\n;.
|
||||
|
||||
Чтобы запрограммировать рабочую руку, используйте \c;\l;grab\u cbot\grab;\n; и \c;\l;drop\u cbot\drop;\n;.
|
||||
|
||||
\t;Объект \l;Категория\u cbot\category;
|
||||
\c;WingedGrabber\n;
|
||||
|
||||
\t;Смотрите также
|
||||
\l;Язык CBOT\u cbot;, \l;Переменные\u cbot\type; и \l;Категории\u cbot\category;.
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue