Изобразить движение фигуры по экрану - 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;
}

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы: и
  2. Определяются константы: ROWS, COLUMNS, PAUSE
  3. Объявляются переменные: posX, posY, dX, dY, curX, curY
  4. Инициализируются переменные: posX, posY, dX, dY равными 0
  5. Запускается бесконечный цикл while (1)
  6. Внутренний цикл for (curY = 0; curY < ROWS; ++curY) и вывод на экран символа 'X' при совпадении координат с текущими координатами posX, posY, иначе пробел
  7. Вывод на экран символа новой строки \n
  8. Проверка условия для изменения значения dX, при выходе за границы экрана (posX + dX)
  9. Проверка условия для изменения значения dY, при выходе за границы экрана (posY + dY)
  10. Изменение значения posX на dX
  11. Изменение значения posY на dY
  12. Задержка в выполнении программы на заданное количество миллисекунд с помощью функции usleep(PAUSE)
  13. Цикл продолжается до тех пор, пока условие while (1) не будет ложным
  14. Возврат значения 0, означающий успешный конец работы программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5
Похожие ответы