|
 | | |
| Autor | Správa |
martinmertel
 Užívateľ
 Založený: 05.01.2012 Príspevky: 1
 | Zaslal: Št 05.01.12 20:32 |   |
zdravim,
dostal som za ulohu spravit projekt, s ktorym mam mensie problemy:
Vytvorte program zobrazujúci padajúce červené bodky. Nová bodka sa vytvára kliknutím do kresliacej plochy a jej počiatočný polomer je 6. Ak klikneme na už existujúcu bodku, jej polomer sa zväčší o 2. Každých 200 milisekúnd sa všetky bodky posunú smerom nadol o 4 pixely. Ak pri páde nadol vyjde bodka z kresliacej plochy, objaví sa v hornej časti kresliacej plochy.
Upravte program tak, aby pri zväčšení za istú hraničnú veľkosť bodka zmizla.
A teraz moje otazky: viem, ze tam treba pouzit udalost on mouse down ale ako si mam uchovat hodnoty x,y ? treba pole alebo ako?
a este ako mam urobit to, aby sa polomer zvacsil o 2. napada ma len prikaz if Pixels[x,y]=clRed ale to sa mi zda prilis zlozite a nerobi to presne to, co by malo, lebo ked su dve gulicky cez seba a kliknem na hociktoru z nich, zvacsia sa obidve.
za kazdu radu vopred dakujem |
| |
  |
 |
Fico
 Skúsený užívateľ
 Založený: 11.01.2009 Príspevky: 1052
 | Zaslal: Št 05.01.12 21:25 |   |
Poziciu si uchovas jednoducho - staci gulicky reprezentovat ako instancie objektu, ktore budu mat poziciu ako svoj datovy clen. Ukazka:
| kód: | TGulicka = class
private
x, y: integer; // koordinaty
procedure SetX( newX: integer );
procedure SetY( newY: integer );
precedure Redraw();
public
constructor Create( x, y: integer );
property Left: integer read x write SetX;
property Top: integer read y write SetY;
end; |
( konstruktor si uz napis sam, taktiez metody SetX a SetY, tam len nastavis premenne x a y na newX a newY ). Gulicky budes jednoducho vytvarat volanim konstruktora triedy TGulicka a zmenu pozicie cez jej vlastnost Left a Top. Ukazka:
| kód: | var
gulicka1, gulicka2, gulicka3: TGulicka; // neviem, kolko ich mas mat, ak viac, jednoducho pouzi pole |
Volanie konstrutkora:
| kód: | | gulicka1 := TGulicka.Create( 100, 100 ); |
Funkcia redraw bude prekreslovat gulicku na nove pozicie. Tu si tiez dopln sam, akurat ti poradim, ze ich neznazornuj pixelmi - je to zdlhave a zbytocne. Pouzi metodu Ellipse triedy TCanvas:
| kód: | | Form1.Canvas.Ellipse( 100, 100, 120, 120 ); |
Jej prve dva parametre su x1 a x2, dalsie dve x2 a y2. To znamena, x2 - x1 dostanes priemer gulicky. Na ten som zabudol, tiez si ho predaj ako datovy clen triedy TGulicka + potrebne metody na jeho zvacsovanie/zmensovanie. |
| |
   |
 |
|
Nemôžete pridávať nové témy do tohto fóra. Nemôžete odpovedať na témy v tomto fóre. Nemôžete upravovať svoje príspevky v tomto fóre. Nemôžete mazať svoje príspevky v tomto fóre. Nemôžete hlasovať v tomto fóre.
|
| |