Графика - перевести код с 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д