Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Программа на Паскале (http://www.tehnari.ru/f41/t102475/)

BerGmaN 12.05.2015 12:41

Программа на Паскале
 
Добрый день. помогите написать программу на Паскале с ассемблерными вставками. Суть задачи заключается в том что бы вывести в центре экрана квадрат желтого цвета, который можно было бы перемещать вправо и влево стрелками на клавиатуре. На Turbo Pascal. Заранее спасибо.:tehnari_ru_837::ctivo:

Vladimir_S 12.05.2015 13:04

Цитата:

Сообщение от BerGmaN (Сообщение 1129825)
с ассемблерными вставками.

К сожалению, не владею. Вот если бы без них, то - легко. А так - извините.

BerGmaN 12.05.2015 13:11

Ну да без вставок примерно выходит что то такое.
program kvadrat;
uses graph;
begin
InitGraph(9, 2, 'D:\tp7\bgi');
SetColor(3);
Rectangle(100,100,200,200);
repeat until keypressed;
CloseGraph;
end.

Vladimir_S 12.05.2015 17:07

Цитата:

Сообщение от BerGmaN (Сообщение 1129828)
Ну да без вставок примерно выходит что то такое.
program kvadrat;
uses graph;
begin
InitGraph(9, 2, 'D:\tp7\bgi');
SetColor(3);
Rectangle(100,100,200,200);
repeat until keypressed;
CloseGraph;
end.

Ну уж, положим, не так просто! А, например, так (за запуск графического режима - не отвечаю, это уж Вы сами):
Код:

Uses CRT, Graph;

Var
 C:Char;
 Color,X1,Y1,X2,Y2:Word;

Procedure Sq(Xc,Yc:Word; Clr:Word);
begin
 SetColor(Clr);
 Rectangle(Xc-50,Yc-50,Xc+50,Yc+50);
end;

Procedure ReDraw(Xold,Yold,Xnew,Ynew:Word);
var Col:Word;
begin
 Col:=GetBkColor;
 Sq(Xold,Yold,Col);
 Col:=14;
 Sq(Xnew,Ynew,Col);
end;

Begin
 InitGraph(9, 2, 'D:\tp7\bgi');
 
 SetTextJustify(CenterText,BottomText);
 OutTextXY((GetMaxX div 2),GetMaxY-6,'Press "Esc" to stop the action');
 SetLineStyle(SolidLn,0,ThickWidth);
 X1:=GetMaxX div 2;
 Y1:=GetMaxY div 2;
 Color:=14;
 Sq(X1,Y1,Color);
 Repeat
  Repeat Until KeyPressed;
  C:=ReadKey;
  Case C of
  #72: begin
        if Y1>54 then
          begin
          X2:=X1;
          Y2:=Y1-5;
          end else
          begin
          X2:=X1;
          Y2:=Y1;
          end;
        Redraw(X1,Y1,X2,Y2);
        X1:=X2;
        Y1:=Y2;
        end;
  #75: begin
        if X1>54 then
          begin
          X2:=X1-5;
          Y2:=Y1;
          end else
          begin
          X2:=X1;
          Y2:=Y1;
          end;
        Redraw(X1,Y1,X2,Y2);
        X1:=X2;
        Y1:=Y2;
        end;
  #77: begin
        if X1<GetMaxX-54 then
          begin
          X2:=X1+5;
          Y2:=Y1;
          end else
          begin
          X2:=X1;
          Y2:=Y1;
          end;
        Redraw(X1,Y1,X2,Y2);
        X1:=X2;
        Y1:=Y2;
        end;
  #80: begin
        if Y1<GetMaxY-74 then
          begin
          X2:=X1;
          Y2:=Y1+5;
          end else
          begin
          X2:=X1;
          Y2:=Y1;
          end;
        Redraw(X1,Y1,X2,Y2);
        X1:=X2;
        Y1:=Y2;
        end;
  end;
 Until C=#27;
 CloseGraph;
End.



Часовой пояс GMT +4, время: 11:10.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.