Skocz do zawartości

Delphi 7 rysowanie 100 kwadratów


firepg

Rekomendowane odpowiedzi

Mam napisać procedurę, która ma rysować mi 100 kwadratów, w takim porządku jak trójkąt Pascala, tylko tutaj ma być 1 duży kwadrat i w nim mniejsze kwadraty. Ma być ich razem 100. Kompletnie nie wiem jak się do tego zabrać. Czy ktoś mi napisze gotową procedurę? Będę bardzo wdzięczny.

Odnośnik do komentarza
Udostępnij na innych stronach

Ja już zrobiłem trójkąt pascala, trochę się w tym orientuję, ale nie mogę zrobić tego samegoz kwadratami... Rysuje mi jeden duży kwadrat, w śordku jakieś 3 linie i się program zawiesza. Wydaje się wszystko dobrze zrobione, ale coś nie chodzi :(

Pracę mam mieć na jutro. Jeżeli ktoś się orientuje w trójkącie pascala, prosiłbym o to żeby napisał podobną procedurę tylko z kwadratami. Z góry dziękuję.

Odnośnik do komentarza
Udostępnij na innych stronach

Pracę mam na komputerze w pracowni. Teraz piszę na laptopie.

Z tego co pamiętam to tak:

Podstawiłem do pracy 4 punkty (x1,y1)(x2,y2)(x3,y3)(x4,y4) . Podstawilem też za nie litery w procedurze (a,B)(c,d)(e,f)(g,h). Miałem napisana procedure: If c-a>5 then (tutaj zależy mi na tym, żeby nie rysowało mi takich mini kwadracików). Wtedy podstawiam funkcję canvas. Lineto i Moveto do współrzędnych a,b,c,d,e,f,g,h, w zależności od boków. Na samym końcu mam duży kwadrat, od którego wychodzimoja procedura z punktami A(100,400), B(400,400),C (400,100) i D(100,100). Dla mnie wydaje się cała procedura dobrze zrboiona, ale tak na pewno nie jest. Gdzieś jest błąd tylko, że ja go nie widzę. Prcę wstwie jutro ok. 8:00. Będę prosił o szybką odpowiedź, bo mam czas tylko do 9:40. Wtedy już muszę oddać pracę. Licze na Was, że mi pomożecie. Do jutra :thumbsup:

Odnośnik do komentarza
Udostępnij na innych stronach

Oto procedura:

 

 

unit Unit1;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

 

type

TForm1 = class(TForm)

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

procedure sierp(a,b,c,d,e,f,g,h:integer);

var

Form1: TForm1;

x1,x2,x3,x4,y1,y2,y3,y4: integer;

 

 

implementation

 

procedure sierp(a,b,c,d,e,f,g,h:integer);

var x1,x2,x3,x4,y1,y2,y3,y4: integer;

begin

If c-a>5 then

begin

form1.Canvas.MoveTo(a, B) ;

form1.Canvas.LineTo(c,d);

form1.Canvas.LineTo(e,f);

form1.Canvas.LineTo(g,h);

form1.Canvas.LineTo(a, B) ;

 

x1:=round((a+c)*1/2);

x2:=round((c+e)*1/2);

x3:=round((e+g)*1/2);

x4:=round((g+a)*1/2);

y1:=round((b+d)*1/2);

y2:=round((d+f)*1/2);

y3:=round((f+h)*1/2);

y4:=round((h+ B) *1/2);

 

 

sierp(a,b,x1,y1,c,d,x2,y2);

sierp(c,d,x2,y2,e,f,x3,y3);

sierp(e,f,x3,y3,g,h,x4,y4);

sierp(g,h,x4,y4,a,b,x1,y1);

 

end;

 

end;

{$R *.dfm}

 

 

procedure TForm1.Button1Click(Sender: TObject);

begin

 

x1:=100;

x2:=400;

x3:=400;

x4:=100;

y1:=400;

y2:=400;

y3:=100;

y4:=100;

sierp(x1,y1,x2,y2,x3,y3,x4,y4);

 

end;

 

end.

 

 

Proszę o szybkie odpowiedzi, dotyczące tego problemu.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...