Программа: клавишами управления курсором двигать фигуру по экрану - Turbo Pascal

  1. Задать цвет фона розовый, цвет фигуры - серый, фигура в виде буквы Z. Клавишами управления курсором двигать фигуру по экрану.


textual

Код к задаче: «Программа: клавишами управления курсором двигать фигуру по экрану - Turbo Pascal»

uses crt,graph;
const n=11;{10 точек-вершины фигуры, 1-я точка 2 раза, замыкаем }
type
Point=record {тип запись - точка с координатами}
           x,y:integer;
           end;
mas=array[1..n] of Point;{массив точек-фигура}
procedure Z(x,y:integer;var m:mas;c:byte);
{процедура рисования фигуры по координатам "курсора", точкам и цвету}
var i:byte;
begin
Setcolor(c);
m[1].x:=x;m[1].y:=y;
m[2].x:=x+50;m[2].y:=y;
m[3].x:=x+50;m[3].y:=y+5;
m[4].x:=x+7;m[4].y:=y+45;
m[5].x:=x+50;m[5].y:=y+45;
m[6].x:=x+50;m[6].y:=y+50;
m[7].x:=x;m[7].y:=y+50;
m[8].x:=x;m[8].y:=y+45;
m[9].x:=x+43;m[9].y:=y+5;
m[10].x:=x;m[10].y:=y+5;
m[11].x:=x;m[11].y:=y;
moveto(m[1].x,m[1].y);
for i:=1 to n do
lineto(m[i].x,m[i].y);
Setfillstyle(1,c);
Floodfill((m[1].x+m[2].x) div 2,(m[1].y+m[10].y) div 2,c);
end;
var gd,gm:integer;
    x,y,x1,y1:integer;
    p:mas;
    c1,c2:byte;
    k:char;
    move:boolean;
begin
gd:=detect;
Initgraph(gd,gm,'');
Setbkcolor(13);{цвет фона}
x:=340;y:=240;{начальное положение}
c1:=7;c2:=13;{цвет фигуры-серый, цвет фона-типа розовый}
move:=true;{рисуем}
repeat
if keypressed then{если нажата клавиша}
  begin
    k:=readkey;
    if k=#80 then {стрелка вниз}
      begin
        y1:=y;
        x1:=x;
        y:=y+5;
        move:=true;
      end;
    if k=#72 then{вверх}
      begin
        y1:=y;
        x1:=x;
        y:=y-5;
        move:=true;
      end;
    if k=#77 then{вправо}
      begin
        y1:=y;
        x1:=x;
        x:=x+5;
        move:=true;
      end;
    if k=#75 then{влево}
      begin
        y1:=y;
        x1:=x;
        x:=x-5;
        move:=true;
      end;
  end;
if move then
  begin
   Z(x1,y1,p,c2);{рисуем цветом фона, стираем}
   Z(x,y,p,c1);{рисуем заданным цветом, создаем на новом месте}
   move:=false;
  end;
until k=#27;{выход - Esc}
closegraph
end.

СДЕЛАЙТЕ РЕПОСТ

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



Похожие ответы
  1. Напишите процедуру для вычисления значения y. у = 2x^2, если x ≤ 1, y = x+1/3, если 1 ≤ x≤8, y = √sin^2 x, если x ≥ 8.

  1. Пожалуйста, срочно!((( нужна программа по блок-схеме.

  1. Напишите программу перемещающую по экрану ваше имя клавишами управления движением курсора. Каждый шаг "имени" должен быть озвучен, причём высота звука должна зависеть от направления движения. Окончание работы программы - клавиша Ins.

  1. по ребру найти площадь грани, площадь боковой поверхности и объем куба!! Заранее спасибо)

  1. Друзья помогите пожалуйста решить задачу а то препод уже достал а сам я не могу решить её))) Разработать программу, которая при нажатии клавиши выводит на экран текстовое окно. При нажатии клавиши <влево> сдвигается влево левая рамка окна, при нажатии <вправо> - вправо правая рамка окна, при нажатии <вниз> - вниз нижняя рамка окна, при нажатии <вверх> вверх верхняя рамка окна. Заранее спасибо))

  1. 1.Изобразить на экране круг, движущийся по окружности с угловой скоростью, управляймой клавишами ">" и "<". 2.Изобразить на экране прямоугольник, по периметру которого движется окружность.

  1. Напишите программу перемещающую по экрану ваше имя клавишами управления движением курсора. Каждый шаг "имени" должен быть озвучен, причём высота звука должна зависеть от направления движения. Окончание работы программы - клавиша Ins.

  1. Проблема: требуется, чтобы персонаж игры ,,Лабиринт", который обозначен номером 2 в кодовой таблице, перемещался вверх, вниз, вправо, влево по нажатию клавиш. Буду благодарен за помощь. Программа(работа над лабиринтом не завершена):

  1. спортсмен пробежал за 1 день N км каждый день он увеличевал нагрузку на K% определить через сколько дней норма пробега будет больше 50 км