Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2009, 14:23   #1
zlobin212
Новичок
Джуниор
 
Регистрация: 21.10.2009
Сообщений: 2
По умолчанию неполучаеться закрасить квадрат

Код:
Uses Crt, Graph;

Type Location=object
              x,y:integer;
              procedure Init(x1,y1:integer);
              function Getx:integer;
              function Gety:integer;
              end;
        Square=object(Location)
              A:integer;
              procedure Init(x1,y1,A1:integer);
              function GetA:integer;
              procedure Show;
              procedure Hide;
              procedure Shift(x1,y1:integer);
              end;

Procedure Location.Init(x1,y1:integer);
Begin
x:=x1; y:=y1;
end;

Function Location.Getx:integer;
Begin
Getx:=x;
end;

Function Location.Gety:integer;
Begin
Gety:=y;
end;


Procedure Square.Init(x1,y1,A1:integer);
Begin
Location.Init(x1,y1);
A:=A1;
end;

Function Square.GetA:integer;
Begin
GetA:=A;
end;

Procedure Square.Show;
Begin
Rectangle(x- A div 2,y- A div 2,x+ A div 2,y + A div 2);
end;

Procedure Square.Hide;
Var color:word;
Begin
color:=GetColor;
SetColor(GetBkColor);
Rectangle(x- A div 2,y- A div 2,x+ A div 2,y + A div 2);
SetColor(color);
end;

Procedure Square.Shift(x1,y1:integer);
Begin
Hide;
Init(x1,y1,A);
Show;
end;


Var Gd, Gm : Integer;
    A,h : integer;
    mySquare:Square;
    x,y:integer;
    c:char;

Begin
 h:=100;

 Gd:=Detect;
 InitGraph(Gd, Gm, '');


Randomize;
A:=50;
x:=Random(640-A)+(A div 2);
y:=480-h-(A div 2)-1;

SetColor(4);
mySquare.Init(x,y,A);
mySquare.Show;

Repeat
if KeyPressed then begin
 c:=ReadKey;
 if c=#75 then begin x:=x-3; mySquare.Shift(x,y); end;
 if c=#77 then begin x:=x+3; mySquare.Shift(x,y); end;
 if c=#72 then begin y:=y-3; mySquare.Shift(x,y); end;
 if c=#80 then begin y:=y+3; mySquare.Shift(x,y); end;
                   end;
 if (x-(A div 2)<0)or(x+(A div 2)>640)or(y-(A div 2)<0)or(y+(A div 2)>480) then
    Begin
    SetColor(Random(14)+1);
    Sound(400);
    Delay(100);
    NoSound;
    end                                else SetColor(4);

Until c=#32;

 CloseGraph;
End.

Последний раз редактировалось Stilet; 21.10.2009 в 14:33.
zlobin212 вне форума Ответить с цитированием
Старый 21.10.2009, 19:02   #2
zlobin212
Новичок
Джуниор
 
Регистрация: 21.10.2009
Сообщений: 2
По умолчанию

я переделал программу,но как сделать чтобы квадрат hide тоже останавливался у границ экрана?
Uses Crt, Graph;

Type Location=object
x,y:integer;
procedure Init(x1,y1:integer);
function Getx:integer;
function Gety:integer;
end;
Square=object(Location)
A:integer;
procedure Init(x1,y1,A1:integer);
function GetA:integer;
procedure Show;
procedure Hide;
procedure Shift(x1,y1:integer);
end;

Procedure Location.Init(x1,y1:integer);
Begin
x:=x1; y:=y1;
end;

Function Location.Getx:integer;
Begin
Getx:=x;
end;

Function Location.Gety:integer;
Begin
Gety:=y;
end;


Procedure Square.Init(x1,y1,A1:integer);
Begin
Location.Init(x1,y1);
A:=A1;
end;

Function Square.GetA:integer;
Begin
GetA:=A;
end;

Procedure Square.Show;
Begin
setfillstyle(1,blue);
Rectangle(x,y,x+50,y +50);
floodfill(x+5,y+1,blue);
end;

Procedure Square.Hide;
Var color:word;
Begin
color:=GetColor;
setfillstyle(1,black);
Rectangle(x,y,x+50,y+50);
floodfill(x+5,y+1,black);
SetColor(color);
end;

Procedure Square.Shift(x1,y1:integer);
Begin
Hide;
Init(x1,y1,A);
if x1>589 then x:=589 else
if x1<0 then x:=0 else x:=x1;
if y1>429 then y:=429 else
if y1<0 then y:=0 else y:=y1;
show;

end;


Var Gd, Gm : Integer;
A,h : integer;
mySquare:Square;
x,y:integer;
c:char;

Begin
h:=100;

Gd:=Detect;
InitGraph(Gd, Gm, '');


Randomize;
A:=50;
x:=Random(640-A)+(A div 2);
y:=480-h-(A div 2)-1;

setColor(blue);
mySquare.Init(x,y,A);
mySquare.Show;

Repeat
if KeyPressed then begin
c:=ReadKey;

if c=#75 then begin x:=x-3; mySquare.Shift(x,y); end;
if c=#77 then begin x:=x+3; mySquare.Shift(x,y); end;
if c=#72 then begin y:=y-3; mySquare.Shift(x,y); end;
if c=#80 then begin y:=y+3; mySquare.Shift(x,y); end;
end;


Until c=#32;

CloseGraph;
End.
zlobin212 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Народ помогите нужно решить 2 задачки а у самого нечего неполучаеться Spectr Помощь студентам 14 03.07.2009 16:53
vba закрасить все циклы синим цветом Berckyt Помощь студентам 0 19.04.2009 14:21
Магический квадрат Anarx Паскаль, Turbo Pascal, PascalABC.NET 2 18.12.2008 13:07
Закрасить кнопку artemavd Общие вопросы Delphi 9 12.07.2008 15:37
хочу закрасить розовым цветом(си) Барби Помощь студентам 1 25.05.2008 13:58