Составить программу движения по экрану символа “*” под управлением некоторого набора клавиш - Free Pascal
Формулировка задачи:
Составить программу движения по экрану символа “*” под управлением некоторого набора клавиш.
Решение задачи: «Составить программу движения по экрану символа “*” под управлением некоторого набора клавиш»
textual
Листинг программы
Uses Graph,wincrt; var gd,gm,x,y,dx,dy,wx,wy:integer; c:char; begin randomize; gd:=Detect; InitGraph(gd,gm,''); x:=GetMaxX div 2; y:=GetMaxY div 2; wx:=TextWidth('*'); wy:=TextHeight('*'); SetColor(White); SetFillStyle(SolidFill,Black); repeat while not keypressed do begin Bar(x,y,x+wx,y+wy); x:=x+dx; y:=y+dy; if x>=GetMaxX-wx then dx:=-1; if y>=GetMaxY-wy then dy:=-1; if x<wx then dx:=1; if y<wy then dy:=1; OutTextXY(x,y,'*'); delay(10); end; c:=readkey; Case upcase(c) of 'Q':begin dx:=-1;dy:=-1;end; 'W':begin dx:=0;dy:=-1;end; 'E':begin dx:=1;dy:=-1;end; 'A':begin dx:=-1;dy:=0;end; 'S':begin dx:=0;dy:=1;end; 'D':begin dx:=1;dy:=0;end; 'Z':begin dx:=-1;dy:=1;end; 'C':begin dx:=1;dy:=1;end; end; until c=#27; closegraph; end.
Объяснение кода листинга программы
- Создание графического окна и инициализация графики — Объявление переменных: gd, gm, x, y, dx, dy, wx, wy (для хранения координат, размеров символа и направления движения) — Вызов функции Detect для определения доступных графических режимов — Вызов функции InitGraph для инициализации графики с использованием первого доступного режима — Вычисление центра экрана как (GetMaxX div 2, GetMaxY div 2) — Вычисление ширины и высоты символа '*' с помощью функций TextWidth и TextHeight — Установка цвета и стиля заполнения на белый цвет с черным цветом
- Основной цикл программы — Проверка нажатий клавиш с помощью цикла while not keypressed do — Внутренний цикл while для рисования символа '' и перемещения его по экрану — Вызов функции Bar для рисования прямоугольника (символа '') — Увеличение x и y на dx и dy соответственно — Проверка границ экрана: если x или y выходят за пределы экрана, изменение значений dx и dy на противоположные — Рисование символа '*' в текущих координатах x, y с помощью функции OutTextXY — Задержка в 10 миллисекунд с помощью функции delay — Выход из внутреннего цикла while, если была нажата клавиша
- Обработка нажатий клавиш — Чтение нажатой клавиши с помощью функции readkey — Использование оператора upcase для преобразования нажатой клавиши в верхний регистр — Проверка значения c и присвоение новых значений dx и dy в зависимости от нажатой клавиши
- Окончание программы — Проверка значения c на равенство символу '#27' (это клавиша '') — Закрытие графического окна с помощью функции closegraph Вот список переменных и их значений: — gd: переменная для хранения номера доступного графического режима — gm: переменная для хранения номера доступного графического режима — x: переменная для хранения текущей координаты X символа '' — y: переменная для хранения текущей координаты Y символа '' — dx: переменная для хранения текущего изменения координаты X — dy: переменная для хранения текущего изменения координаты Y — wx: переменная для хранения ширины символа '' — wy: переменная для хранения высоты символа '' — c: переменная для хранения нажатой клавиши — Q: значение, присвоенное переменной c, если нажата клавиша 'Q' — W: значение, присвоенное переменной c, если нажата клавиша 'W' — E: значение, присвоенное переменной c, если нажата клавиша 'E' — A: значение, присвоенное переменной c, если нажата клавиша 'A' — S: значение, присвоенное переменной c, если нажата клавиша 'S' — D: значение, присвоенное переменной c, если нажата клавиша 'D' — Z: значение, присвоенное переменной c, если нажата клавиша 'Z' — C: значение, присвоенное переменной c, если нажата клавиша 'C'
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д