Когда я начал лепить на свои программы марку Coding Robots, изредка в поддержку стали приходить странные вопросы, связанные с роботами. Логика простая — раз есть в названии слово «роботы», значит ребята делают что-то связанное с ними.

Пару дней назад пришло сообщение от студента третьего курса какого-то индийского университета. Парень написал, что занимается роботами и спросил, не могли бы ли мы прислать код на Си для того, чтобы заставить робота двигаться справа налево. И еще чтобы он поднимал и опускал руки.

Хороший вопрос! Я стараюсь отвечать на все вопросы, заданные поддержке, поэтому прислал ему следующий исходник:

/*

* Moving Robot

* Copyright (C) 2008 Coding Robots, http://www.codingrobots.com

* MIT License

*/

#include <stdio.h>

void tprintf(int n, char *line)

{

int i;

for (i = 0; i < n; i++)

printf(" ");

printf(line);

}

void clear()

{

int i;

for (i = 0; i < 30; i++)

printf("\n");

}

int main()

{

int i;

for (i = 0; i < 60; i++)

{

clear();

int t = 60-i;

if (i % 2 == 0)

{

tprintf(t, " 0 |\n");

tprintf(t, " -|- \n");

tprintf(t, "| | \n");

tprintf(t, " ^ \n");

tprintf(t, "/ \\\n");

}

else

{

tprintf(t, "| 0 \n");

tprintf(t, " -|- \n");

tprintf(t, " | |\n");

tprintf(t, " ^ \n");

tprintf(t, " \\ \\\n");

}

sleep(1);

}

return 0;

}

Для тех, кто не читает Си, демонстрирую, что делает этот код:

Самое удивительное, что в следующем письме студент поблагодарил меня и спросил, может ли этот код двигать робота не только справа налево, но и вперед-назад, а также какой микроконтроллер я использую. Даже не знаю, что ответить парню…