| | |
| Stránka: 1 z 1
| [ Príspevkov: 2 ] | |
Autor | Správa |
---|
Registrovaný: 05.01.12 Prihlásený: 05.01.12 Príspevky: 1 Témy: 1 |
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
|
|
Registrovaný: 11.01.09 Prihlásený: 20.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 05.01.2012 20: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.
|
|
| Stránka: 1 z 1
| [ Príspevkov: 2 ] | |
| Nemôžete zakladať nové témy v tomto fóre 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
|
|