IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> Калейдоскоп! Помогите чем можете..., Графика...
Valkirie
сообщение 11.04.2005 14:45
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 36
Пол: Женский

Репутация: -  0  +


Началась графика и я решила, что наверное лучше было вешаться сразу, но теперь уже отступать некуда... unsure.gif

Вообщем задание у меня такое:

Калейдоскоп. PaintBox делится на 4 части. В одной из них выбирается случайно прямоугольник и закрашивается в случайно выбранный цвет. В остальных частях рисуются прямоугольники того же размера цвета, расположенные симметрично. Для восстановления запоминать 20 предыдущих прямоугольников.

И всё бы хорошо... вот только в моём понятие калейдоскоп это такая штучка наполненная осколками цветного стекла... и я смутно представляю как это будет выглядеть с помощью прямоугольников... huh.gif
Вообщем PaintBox я на 4 части разделила, и прямоугольнички сгенирировала...
А дальше... unsure.gif

Я не совсем понимаю:
1. Прямоугольники должна быть случайными по размеру или одинаковыми ?
2. Могут ли они пересекаться ? Если нет, то каково условие для того, чтобы они не пересекались ?
3. Как сгенирировать 3 симметричных прямоугольника в остальных частях ?
4. И ещё момент "Для восстановления запоминать 20 предыдущих прямоугольников" - это как ?


Help me please... :p2:
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Valkirie
сообщение 11.04.2005 18:53
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 36
Пол: Женский

Репутация: -  0  +


Вот то, что я имею на данный момент...

Код

const N=20;
type TRect=record
x,y,x1,x2,y1,y2:integer;
Color:TColor;
end;

var Mas:array[1..N] of TRect;

procedure DrawRect(Rec:TRect);
begin
Form1.PaintBox1.Canvas.Pen.color:=Rec.Color;
Form1.PaintBox1.Canvas.Brush.Color:=Rec.Color;
Form1.PaintBox1.Canvas.Rectangle(Rec.x1,Rec.x2,Rec.y1,Rec.y2);
end;

procedure HideRect (Rec:TRect);
begin
Form1.PaintBox1.Canvas.Pen.Color:=Form1.PaintBox1.Color;
Form1.PaintBox1.Canvas.Brush.Color:=Form1.PaintBox1.Color;
Form1.PaintBox1.Canvas.Rectangle(Rec.x1,Rec.x2,Rec.y1,Rec.y2);
end;

function GenerateRect(N:integer):TRect;
var
Rec:TRect;
begin
Rec.x1:=Random(200)+1;
Rec.x2:=Random(200)+1;
Rec.y1:=Random(200)+1;
Rec.y2:=Random(200)+1;
Rec.x:=Random(Form1.PaintBox1.Width div 2)-1;
Rec.y:=Random(Form1.PaintBox1.Height div 2)-1;
Rec.Color:=RGB(Random(256),Random(256),Random(256));
Result:=Rec
end;

procedure TForm1.PaintBox1Paint(Sender: TObject);
var i,x,y,w,h:integer;
begin
w:=PaintBox1.Width;
h:=PaintBox1.Height;
x:=w div 2;
y:=h div 2;
PaintBox1.Canvas.Rectangle(0,0,w,h);
PaintBox1.Canvas.MoveTo(x,0);
PaintBox1.Canvas.LineTo(y,h);
PaintBox1.Canvas.MoveTo(0,y);
PaintBox1.Canvas.LineTo(w,x);
for i:=1 to N do
DrawRect(Mas[i]);
HideRect(Mas[i]);
end;

procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
for i:=1 to N do
Mas[i]:=GenerateRect(i);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var k:integer;
begin
k:=random(n)+1;
HideRect(Mas[k]);
Mas[k]:=GenerateRect(N);
DrawRect(Mas[k]);
end;
end.


Посмотри что тут к чему... :p2: И спасибо за отзывчивость smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 26.07.2025 16:02
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"