Графика - перевести код с Pascal - C (СИ)
Формулировка задачи:
Здраствуйте! Помогите пожалуйста перевести данную задачу ( с Pascal на C ).
Листинг программы
- uses graphABC;
- var x,y:integer;
- procedure KeyDown(Key: integer);
- begin
- case Key of
- VK_Left: if x>1 then x:=x-1;
- VK_Right: if x<windowwidth-1 then x:=x+1;
- VK_Up: if y>1 then y:=y-1;
- VK_Down:if y<windowheight-1 then y:=y+1;
- end;
- end;
- begin
- x:=80;
- y:=80;
- line(0,y,windowwidth,y);
- line(x,0,x,windowheight);
- lockdrawing;
- repeat
- clearwindow;
- OnKeyDown:=KeyDown;
- line(0,y,windowwidth,y);
- line(x,0,x,windowheight);
- redraw
- until false
- end.
Решение задачи: «Графика - перевести код с Pascal»
textual
Листинг программы
- #include <graphics.h>
- void Move(int* x, int* y, int key)
- {
- switch (key)
- {
- case KEY_LEFT:
- if (*x > 0)
- {
- (*x)--;
- }
- break;
- case KEY_RIGHT:
- if (*x < getmaxx())
- {
- (*x)++;
- }
- break;
- case KEY_UP:
- if (*y > 0)
- {
- (*y)--;
- }
- break;
- case KEY_DOWN:
- if (*y < getmaxy())
- {
- (*y)++;
- }
- break;
- }
- }
- void Redraw(int x, int y)
- {
- clearviewport();
- line(0, y, getmaxx(), y);
- line(x, 0, x, getmaxy());
- }
- int main()
- {
- int driver = DETECT, mode = 0;
- int x = 80, y = 80;
- int key;
- initgraph(&driver, &mode, "");
- Redraw(x, y);
- while ((key = readkey()) != 27) // Press 'ESC' for exit
- {
- Move(&x, &y, key);
- Redraw(x, y);
- }
- closegraph();
- return 0;
- }
Объяснение кода листинга программы
- #include
— подключает графическую библиотеку - void Move(int x, int y, int key) — функция для обработки нажатий клавиш
- switch (key) — оператор выбора (switch) для определения нажатой клавиши
- case KEY_LEFT: — один из вариантов выбора (case) для обработки нажатия клавиши
влево
- *if (x > 0)** — условие, что значение переменной
x
больше нуля - { — начало блока кода для обработки нажатия клавиши
влево
- *(x)--;** — уменьшение значения переменной
x
на единицу - break; — выход из оператора выбора (switch)
- case KEY_RIGHT: — один из вариантов выбора (case) для обработки нажатия клавиши
вправо
- *if (x < getmaxx())** — условие, что значение переменной
x
меньше максимального значения экрана по горизонтали - { — начало блока кода для обработки нажатия клавиши
вправо
- *(x)++;** — увеличение значения переменной
x
на единицу - break; — выход из оператора выбора (switch)
- case KEY_UP: — один из вариантов выбора (case) для обработки нажатия клавиши
вверх
- *if (y > 0)** — условие, что значение переменной
y
больше нуля - { — начало блока кода для обработки нажатия клавиши
вверх
- *(y)--;** — уменьшение значения переменной
y
на единицу - break; — выход из оператора выбора (switch)
- case KEY_DOWN: — один из вариантов выбора (case) для обработки нажатия клавиши
вниз
- *if (y < getmaxy())** — условие, что значение переменной
y
меньше максимального значения экрана по вертикали - { — начало блока кода для обработки нажатия клавиши
вниз
- *(y)++;** — увеличение значения переменной
y
на единицу - break; — выход из оператора выбора (switch)
- } — конец блока кода для обработки нажатия клавиши
вниз
- int main() — функция, с которой начинается выполнение любой программы
- { — начало блока кода функции main
- int driver = DETECT, mode = 0; — инициализация переменных для настройки графического режима
- int x = 80, y = 80; — инициализация переменных для хранения координат курсора
- int key; — инициализация переменной для хранения нажатой клавиши
- initgraph(&driver, &mode, ``); — вызов функции для инициализации графического режима
- Redraw(x, y); — вызов функции для отображения курсора на экране
- while ((key = readkey()) != 27) — цикл, выполняющийся до нажатия клавиши
ESC
- { — начало блока кода цикла
- Move(&x, &y, key); — вызов функции для обработки нажатия клавиши и изменения координат курсора
- Redraw(x, y); — вызов функции для обновления изображения курсора на экране
- } — конец блока кода цикла
- closegraph(); — вызов функции для завершения работы с графическим режимом
- return 0; — возврат значения, означающего успешный конец работы программы
- } — конец функции main
- } — конец блока кода функции Move
- } — конец блока кода функции Redraw
- } — конец блока кода функции main
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д