Графика - перевести код с 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;
}

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

  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