Составить программу движения по экрану символа “*” под управлением некоторого набора клавиш - 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.

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

  1. Создание графического окна и инициализация графики — Объявление переменных: gd, gm, x, y, dx, dy, wx, wy (для хранения координат, размеров символа и направления движения) — Вызов функции Detect для определения доступных графических режимов — Вызов функции InitGraph для инициализации графики с использованием первого доступного режима — Вычисление центра экрана как (GetMaxX div 2, GetMaxY div 2) — Вычисление ширины и высоты символа '*' с помощью функций TextWidth и TextHeight — Установка цвета и стиля заполнения на белый цвет с черным цветом
  2. Основной цикл программы — Проверка нажатий клавиш с помощью цикла while not keypressed do — Внутренний цикл while для рисования символа '' и перемещения его по экрану — Вызов функции Bar для рисования прямоугольника (символа '') — Увеличение x и y на dx и dy соответственно — Проверка границ экрана: если x или y выходят за пределы экрана, изменение значений dx и dy на противоположные — Рисование символа '*' в текущих координатах x, y с помощью функции OutTextXY — Задержка в 10 миллисекунд с помощью функции delay — Выход из внутреннего цикла while, если была нажата клавиша
  3. Обработка нажатий клавиш — Чтение нажатой клавиши с помощью функции readkey — Использование оператора upcase для преобразования нажатой клавиши в верхний регистр — Проверка значения c и присвоение новых значений dx и dy в зависимости от нажатой клавиши
  4. Окончание программы — Проверка значения 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'

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

13   голосов , оценка 4.077 из 5
Похожие ответы