Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Работа с графикой,putimage и т.д

Автор: Andrewshkovskii 6.03.2007 20:40

Задание такое,надо фигуру сдублировать n раз..но проблема в другом.
Есле у тебя на мониторе в одно строку помешается макс. 6 изображений,то надо перейти на следующую,какраз это у меня не выходит,помогите,в чем проблема?
Вот листинг :

Program Figyri2;
uses crt,graph;
var
i,x,y,size,n,gd,gm:integer;
c:string;
pr:pointer;
begin
gd:=0;
initgraph(gd,gm,'D:\pascal\tp7\bgi');
cleardevice;
arc(50,80,210,150,40);
line(50,80,17,60);
line(50,80,17,100);
setfillstyle(1,yellow);
floodfill(53,80,white);
setcolor(blue);
circle(50,55,10);
setfillstyle(1,blue);
floodfill(50,55,blue);
outtextxy(5,5,'Skolko figyr sdyblirovat ot 1 do 9?');
writeln;
readln(n);
if n>9 then
n:=9;
str(n,c);
outtextxy(350,5,c);
size:=imagesize(10,20,120,120);
Getmem(pr,size);
GetImage(10,20,120,120,pr^);
x:=110;
y:=20;
for i:=1 to n-1 do
begin
putimage(x,y,pr^,NormalPut);
x:=x+110;
if i=6 then
y:=150;
x:=0;
end;
readkey;
end.

Автор: volvo 6.03.2007 21:04

Поменяй свой фрагмент вот на этот:

...
x:=110; y:=20;
for i:=1 to n-1 do begin
if x + 110 > getmaxx then begin { <--- Вот тут проверяешь, поместится ли ... }
{ Если НЕ поместится, то переходим ниже }
inc(y, 150);
x := 0;
end;

putimage(x,y,pr^,NormalPut);
x:=x+110;
end;
...

Автор: Andrewshkovskii 7.03.2007 0:20

спасибо!теперь новая проблема,ешё 1 пунк программы,анимация.
Не могу нормально реализовать следующее :
1.Необходимо что бы анмация началалась с нажатия клавищи и заканчивалась ею же (тут видимо что-то с repeat и keypressed?)
2. Необходимо что бы анимация,достигнув конца окна,возвратилась в начальное положение и опять выполнила цикл и т.д,до нажатия клавищи.
вот мой код :

Проблема решена полностью!=)