Изобразить движение фигуры по экрану - C (СИ)
Формулировка задачи:
#include <stdio.h> #include <math.h> #include <conio.h> main() { int x,y,k; float n; window(1,1,80,25); textbackground(7); clrscr(); x=1; y=1; n=1; for(k=1,k<78,k++){ window(1,y,x+1,y+1); textbackground(5); clrscr(); delay(50); textbackground(7); clrscr(); x=x+1; n=n+0.1; y=n; } main(); { int k; int x={1,2,3,4,5,6}; int y={1,2,3,4,5,6}; for(k=0,k<6, k++){ window(x[k],y[k],x[k],y[k]); textbackground(2); clrscr(); } windiw(x[k],y[k],x[k],y[k]); textbackground(5); clrscr(); telay(50); window(x[k],y[k],x[k],y[k]); textbackground(2); clrscr(); } return 0; }
Решение задачи: «Изобразить движение фигуры по экрану»
textual
Листинг программы
#include <stdio.h> /* для задержки в винде нужно включить windows.h и использовать Sleep(milliseconds) вместо usleep(microseconds)*/ #include <unistd.h> #define ROWS (24) #define COLUMNS (80) #define PAUSE (50000) int main(void) { int posX, posY, dX, dY, curX, curY; posX = posY = 0; dX = dY = 1; while ( 1 ) { for ( curY = 0; curY < ROWS; ++curY ) { for ( curX = 0; curX < COLUMNS; ++curX ) printf("%c", ( curX == posX && curY == posY ) ? 'X' : ' '); printf("\n"); } if ( ( posX + dX >= COLUMNS ) || ( posX + dX < 0 ) ) dX *= -1; if ( ( posY + dY >= ROWS ) || ( posY + dY < 0 ) ) dY *= -1; posX += dX; posY += dY; usleep(PAUSE); } return 0; }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы:
и - Определяются константы: ROWS, COLUMNS, PAUSE
- Объявляются переменные: posX, posY, dX, dY, curX, curY
- Инициализируются переменные: posX, posY, dX, dY равными 0
- Запускается бесконечный цикл while (1)
- Внутренний цикл for (curY = 0; curY < ROWS; ++curY) и вывод на экран символа 'X' при совпадении координат с текущими координатами posX, posY, иначе пробел
- Вывод на экран символа новой строки \n
- Проверка условия для изменения значения dX, при выходе за границы экрана (posX + dX)
- Проверка условия для изменения значения dY, при выходе за границы экрана (posY + dY)
- Изменение значения posX на dX
- Изменение значения posY на dY
- Задержка в выполнении программы на заданное количество миллисекунд с помощью функции usleep(PAUSE)
- Цикл продолжается до тех пор, пока условие while (1) не будет ложным
- Возврат значения 0, означающий успешный конец работы программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д