colobot-data/help/R/tproc1.txt

60 lines
4.6 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

\b;Упражнение
\l;Бот\u object\bottr; должен пройти через все \l;синие кресты\u object\waypoint; на земле. Путь, который следует преодолеть, состоит из двух квадратов. Первый - 15 метров, второй - 25 метров.
\image tproc1a 8 8;
\b;Общий принцип
Чтобы решить эту задачу, вы должны создать функцию, которая приказывает боту двигаться по квадрату с указанной стороной. Поэтому основная программа оказывается очень простой:\c;
\s;extern void object::Function1( )
\s;{
\s; Square(15);
\s; Square(25);
\s;}
\n;
Вам все еще нужно определить функцию, которая называется \c;Square\n;. Чтобы это сделать, вы должны написать несколько инструкций, вне \l;блока\u cbot\bloc; , которые до этого времени были фреймом каждой из ваших программ. В самом конце программы после последней закрывающей скобки мы определим функцию \c;Square\n;. Тогда программа примет следующий вид:
\c;
\s;extern void object::Function1( )
\s;{
\s; \n;главная функция ...\c;
\s;}
\s;
\s;void object::Square(float length)
\s;{
\s; \n;новая функция ...\c;
\s;}
\n;
Теперь давайте детально разберем различные элементы задания функции \c;Square\n;:
\c;\l;void\u cbot\void;\n;
Это значит, что эта функция не будет возвращать значение.
\c;\l;object\u cbot\object;::\n;
Если вы напишите это перед именем функции, то сможете с ее помощью получить доступ ко всем характеристикам бота, таким как \c;позиция\n;, \c;ориентация\n;, и т.п. В этом упражнении этот элемент не обязателен, так как нам для функции характеристики ботов не нужны.
\c;Square ( )\n;
Это имя функции. Вы можете назвать ее Square, или дать любое другое имя.
\c;\l;float\u cbot\float; length\n;
Здесь вы задаете параметры, которые получит функция после того как функция будет вызвана. При первом вызове функции с помощью \c;Square(15)\n;, переменная \c;length\n; будет содержать значение \c;15\n;. При втором вызове, \c;length\n; будет \c;25\n;.
Вот детальное описание того, что произойдет после запуска программы:
- Сначала будет запущена главная функция \c;Function\n;.
- В строке \c;Square(15)\n; программа будет следовать за красной стрелкой и перейдет в функцию \c;Square\n; в первый раз, \c;length\n; содержит \c;15\n;.
- При завершении функции \c;Square\n; программа следует за оранжевой стрелкой и возвращается к главной функции.
- В строке \c;Square(25)\n; программа следует за синей стрелкой и переходит в функцию \c;Square\n; во второй раз.
- При окончании функции \c;Square\n;, программа следует за голубой стрелкой и возвращается к главной функции.
\image tproc1b 17 12;
В функции \c;Square\n; используйте инструкции \c;\l;move\u cbot\move;\n; и \c;\l;turn\u cbot\turn;\n;. Чтобы сделать ее покороче, вы можете использовать цикл \c;\l;for\u cbot\for;\n;, который повторит инструкции \c;\l;move\u cbot\move;\n; и \c;\l;turn\u cbot\turn;\n; 4 раза; но это не обязательно.
\c;
\s;void object::Square(float length)
\s;{
\s; for ( int i=0 ; i<4 ; i=i+1 )
\s; {
\s; move(length);
\s; turn(90);
\s; }
\s;}
\n;
\t;См. также
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.