| | |
| Stránka: 1 z 1
| [ Príspevkov: 5 ] | |
Autor | Správa |
---|
Registrovaný: 07.10.18 Prihlásený: 07.10.18 Príspevky: 3 Témy: 1 |
Dobrý deň, chcel by som poprosiť niekoho, kto sa vyzná v Delphi, či by mi mohol pomôcť s príkladom: Vytvorte aplikáciu s názvom "chyť štvorec". V programe sa bude náhodne na 1 sekundu zobrazovať štvorec s rozmermi 30x30 bodov. Úlohou hráča bude kliknúť na daný štvorec. Ak sa mu podarí na daný štvorec kliknúť, získava bod. Doplňte dva výpisi - v prvom sa bude zobrazovať počet správnych klikov, v druhom počet nesprávnych. Pridajte možnosť nastaviť viac úrovní hry (rýchlosť použitím scrollbaru). Hra končí výpisom, ak dosiahne hodnotu 10 počet uhádnutých alebo neuhádnutých stlačení. Doplňte tlačidlá na ukončenie a resetovanie hry. Všetko už mám, akurát neviem, ako by som mal napísať to "kliknutie" myši na štvorec a či je kliknutie správne alebo nesprávne, pomohol by mi s tým niekto? Robím to cez Image a Timer. Ďakujem
|
|
Registrovaný: 12.10.06 Prihlásený: 19.04.24 Príspevky: 20307 Témy: 79 Bydlisko: Banska Byst... | Napísal shiro: 07.10.2018 18:38 | |
|
image.onclick udalost? tak vies detekovat, ci sa na dany prvok (image, button, alebo defakto takmer hocico v okne) kliklo a ak ano, vykona sa udalost v image.onclick procedure. inac sa vykona hocico ine, co specifikujes.
_________________ Ryzen 7 3700X | SilentiumPC Fera 3 | Asrock X570M Pro4 | Patriot Viper 4 Blackout 16GB DDR4-3600 CL17 | Gainward RTX4060 Ti Pegasus 8GB | Samsung 970evo Plus 250GB NVMe | Corsair MP510 1TB NVMe | Samsung 980 Pro 2TB NVMe | Corsair RM550x | 24" BenQ GW2470H | 3x Noctua NF-S12B redux 1200 PWM Xiaomi Mi 9 Lite 64GB |
|
Registrovaný: 07.10.18 Prihlásený: 07.10.18 Príspevky: 3 Témy: 1 | Napísal autor témy peto145: 07.10.2018 18:56 | |
|
OK, Ďakujem za radu, ospravedlňujem sa, celkovo som sa zle vyjadril ja potrebujem v tej ploche toho image aby sa ten štvorec zobrazoval náhodne a neviem ako by som mal napísať to kliknutie, keďže ten štvorec stále mení pozíciu. Resp. ako by som zameral ten obsah štvorca.
|
|
Registrovaný: 19.05.08 Prihlásený: 19.04.24 Príspevky: 664 Témy: 28 Bydlisko: Slovensko |
Vsak postni sem co mas, to je zaklad tejto sekcie. A hlavne cast kde generujes ten stvorec a zobrazujes na obrazovku na urcitu poziciu.
|
|
Registrovaný: 07.10.18 Prihlásený: 07.10.18 Príspevky: 3 Témy: 1 | Napísal autor témy peto145: 07.10.2018 19:08 | |
|
Snažím sa to nejako takto, ale je to asi zlé: Kód: unit Unit1;
{$mode objfpc}{$H+}
interface
uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls;
type
{ TForm1 }
TForm1 = class(TForm) Button1: TButton; Image1: TImage; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; ScrollBar1: TScrollBar; Timer1: TTimer; procedure Button1Click(Sender: TObject); procedure Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure ScrollBar1Change(Sender: TObject); procedure Timer1Timer(Sender: TObject);
private
{ private declarations } public { public declarations }
end;
var Form1: TForm1; x:integer; y:integer; x1:integer; y1:integer; spravne:integer; nespravne:integer;
implementation
{$R *.lfm}
{ TForm1 } procedure TForm1.Button1Click(Sender: TObject); begin Timer1.Enabled:=True; end;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin x := Mouse.CursorPos.X; y := Mouse.CursorPos.Y; Label4.Caption:='Position: '+IntToStr(X)+', '+IntToStr(Y); if shift=[ssleft] then begin if (x=x1) and (y=y1) then spravne:=spravne+1; end else nespravne:=nespravne+1; end;
procedure TForm1.Timer1Timer(Sender: TObject); procedure zmaz; begin Image1.Canvas.Brush.Color:=clWhite; Image1.Canvas.FillRect(Image1.ClientRect); end; begin Randomize; zmaz; Image1.Canvas.Brush.Color:=clRed; Image1.Canvas.Rectangle(400+x1, 400+y1,430+x1,430+y1); x1:=x1+Random(100)+30; y1:=y1+Random(100)+30; Label1.Caption:='Position: '+IntToStr(X1)+', '+IntToStr(Y1); Label2.Caption:='spravny: '+IntToStr(spravne); Label3.Caption:='nespravny: '+IntToStr(nespravne); end;
procedure TForm1.ScrollBar1Change(Sender: TObject); begin Timer1.Interval := Scrollbar1.Position+500; end;
end.
// Spojený príspevok 07.10.2018 21:12Už to mám.
|
|
| Stránka: 1 z 1
| [ Príspevkov: 5 ] | |
| 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
|
|