Графика - перевести код с Pascal - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здраствуйте! Помогите пожалуйста перевести данную задачу ( с Pascal на C ).
Листинг программы
  1. uses graphABC;
  2. var x,y:integer;
  3. procedure KeyDown(Key: integer);
  4. begin
  5. case Key of
  6. VK_Left: if x>1 then x:=x-1;
  7. VK_Right: if x<windowwidth-1 then x:=x+1;
  8. VK_Up: if y>1 then y:=y-1;
  9. VK_Down:if y<windowheight-1 then y:=y+1;
  10. end;
  11. end;
  12. begin
  13. x:=80;
  14. y:=80;
  15. line(0,y,windowwidth,y);
  16. line(x,0,x,windowheight);
  17. lockdrawing;
  18. repeat
  19. clearwindow;
  20. OnKeyDown:=KeyDown;
  21. line(0,y,windowwidth,y);
  22. line(x,0,x,windowheight);
  23. redraw
  24. until false
  25. end.

Решение задачи: «Графика - перевести код с Pascal»

textual
Листинг программы
  1. #include <graphics.h>
  2.  
  3. void Move(int* x, int* y, int key)
  4. {
  5.     switch (key)
  6.     {
  7.         case KEY_LEFT:
  8.             if (*x > 0)
  9.             {
  10.                 (*x)--;
  11.             }
  12.             break;
  13.  
  14.         case KEY_RIGHT:
  15.             if (*x < getmaxx())
  16.             {
  17.                 (*x)++;
  18.             }
  19.             break;
  20.  
  21.         case KEY_UP:
  22.             if (*y > 0)
  23.             {
  24.                 (*y)--;
  25.             }
  26.             break;
  27.  
  28.         case KEY_DOWN:
  29.             if (*y < getmaxy())
  30.             {
  31.                 (*y)++;
  32.             }
  33.             break;
  34.     }
  35. }
  36.  
  37. void Redraw(int x, int y)
  38. {
  39.     clearviewport();
  40.     line(0, y, getmaxx(), y);
  41.     line(x, 0, x, getmaxy());
  42. }
  43.  
  44. int main()
  45. {
  46.     int driver = DETECT, mode = 0;
  47.     int x = 80, y = 80;
  48.     int key;
  49.     initgraph(&driver, &mode, "");
  50.  
  51.     Redraw(x, y);
  52.  
  53.     while ((key = readkey()) != 27) // Press 'ESC' for exit
  54.     {
  55.         Move(&x, &y, key);
  56.         Redraw(x, y);
  57.     }
  58.  
  59.     closegraph();
  60.  
  61.     return 0;
  62. }

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

  1. #include — подключает графическую библиотеку
  2. void Move(int x, int y, int key) — функция для обработки нажатий клавиш
  3. switch (key) — оператор выбора (switch) для определения нажатой клавиши
  4. case KEY_LEFT: — один из вариантов выбора (case) для обработки нажатия клавиши влево
  5. *if (x > 0)** — условие, что значение переменной x больше нуля
  6. { — начало блока кода для обработки нажатия клавиши влево
  7. *(x)--;** — уменьшение значения переменной x на единицу
  8. break; — выход из оператора выбора (switch)
  9. case KEY_RIGHT: — один из вариантов выбора (case) для обработки нажатия клавиши вправо
  10. *if (x < getmaxx())** — условие, что значение переменной x меньше максимального значения экрана по горизонтали
  11. { — начало блока кода для обработки нажатия клавиши вправо
  12. *(x)++;** — увеличение значения переменной x на единицу
  13. break; — выход из оператора выбора (switch)
  14. case KEY_UP: — один из вариантов выбора (case) для обработки нажатия клавиши вверх
  15. *if (y > 0)** — условие, что значение переменной y больше нуля
  16. { — начало блока кода для обработки нажатия клавиши вверх
  17. *(y)--;** — уменьшение значения переменной y на единицу
  18. break; — выход из оператора выбора (switch)
  19. case KEY_DOWN: — один из вариантов выбора (case) для обработки нажатия клавиши вниз
  20. *if (y < getmaxy())** — условие, что значение переменной y меньше максимального значения экрана по вертикали
  21. { — начало блока кода для обработки нажатия клавиши вниз
  22. *(y)++;** — увеличение значения переменной y на единицу
  23. break; — выход из оператора выбора (switch)
  24. } — конец блока кода для обработки нажатия клавиши вниз
  25. int main() — функция, с которой начинается выполнение любой программы
  26. { — начало блока кода функции main
  27. int driver = DETECT, mode = 0; — инициализация переменных для настройки графического режима
  28. int x = 80, y = 80; — инициализация переменных для хранения координат курсора
  29. int key; — инициализация переменной для хранения нажатой клавиши
  30. initgraph(&driver, &mode, ``); — вызов функции для инициализации графического режима
  31. Redraw(x, y); — вызов функции для отображения курсора на экране
  32. while ((key = readkey()) != 27) — цикл, выполняющийся до нажатия клавиши ESC
  33. { — начало блока кода цикла
  34. Move(&x, &y, key); — вызов функции для обработки нажатия клавиши и изменения координат курсора
  35. Redraw(x, y); — вызов функции для обновления изображения курсора на экране
  36. } — конец блока кода цикла
  37. closegraph(); — вызов функции для завершения работы с графическим режимом
  38. return 0; — возврат значения, означающего успешный конец работы программы
  39. } — конец функции main
  40. } — конец блока кода функции Move
  41. } — конец блока кода функции Redraw
  42. } — конец блока кода функции main

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


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

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

5   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут