60 lines
4.6 KiB
Plaintext
60 lines
4.6 KiB
Plaintext
\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;.
|