Когда я начал лепить на свои программы марку 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;
}
Для тех, кто не читает Си, демонстрирую, что делает этот код:
Самое удивительное, что в следующем письме студент поблагодарил меня и спросил, может ли этот код двигать робота не только справа налево, но и вперед-назад, а также какой микроконтроллер я использую. Даже не знаю, что ответить парню…
