
Delphi - jak naprogramovat hru "Hada"?
Dobrý den,
potřeboval bych někoho kdo umí s delphi a poradil by mi jak naprogramovat jednoduchou hru "Hada".
Mockrát Vám děkuji
Změna předmětu, původně: Delphi (host)
Chtěl bych se zeptat ohledně toho vykreslení hracího pole (DrawPlayfield)
Jestli jsem vlastně pochopil co se děje v proceduře.
var
pfdimention : tpoint = (x:200; y:200);\\ hrací plocha je jakýsi bod o výšce a šířce 200 pixelů
pfposition : tpoint = (x:5; y:5)\\ umístění na formuláři (jakási pomyslná zeď) je bod o výše a šířce 5 pixelů
pfcolor : tcolor = clWhite; \\ barva hrací plochy nastavena na bílou
procedure DrawPlayfield;
begin
Form1.Canvas.Brush.Color := pfcolor; \\ barva plátna nastavena na bílou
Form1.Canvas.Pen.Color := pfcolor; \\ barva pera natavena na bílou
Form1.Canvas.Rectangle(pfposition.x, pfposition.y, pfdimention.x + pfposition.x, pfdimention.y + pfposition.y);
end
\\ na form1 se vykreslí čtvercový bod který bude mít odsazení od formuláře Left/Top 5 pixelů a bude mít výšku/šířku nastavenou na 200 pixelů.
procedure TForm1.FormPaint(Sender: TObject);
begin
form1.ClientWidth := pfdimention.x + (pfposition.x * 2);
form1.ClientHeight := pfdimention.y + (pfposition.y * 2);
form1.Color := clBlack;
end
\\ Na výšku/šířku formuláře se nastaví naše hrací pole a barva formuláře je černá.
Takže tím pádem, ta naše pomyslná zeď dostane barvu černou protože to je ten formulář. ??
Kdyby Vám něco nesedělo nebo to chápu špatně byl bych moc rád kdyby jste mě opravili a dovysvětlily.
.. resp. tym ze do FormPaint (co je asi OnPaint event to musis si pozret ty v tvojom projekte) nastavuje clientwidth a height co je asi sirka a vyska okna na pevnu hodnotu, a OnPaint je volany pri kazdom prekresleni okna, by mal tym padom dosiahnut ze sa okno neda zvacsit/zmensit. Nie som si isty ptz delhi nerobim a neda sa k tomu najst poriadna referencia googlom, je to mrtve.
FormPaint je udalost, ktera se vola pri potrebe o prekresleni formulare (pohnes s nim, prekreje jej jiny formular apod.).
V teto procedure by melo probehnout veskere kresleni na Canvas formulare.
Jak psal MM, nastaveni ClientWidth a ClientHeight staci pouze jednou v OnCreate formulare. Je to oblast, na ktere muzes umistovat komponenty apod.
To same plati o nastaveni cerne barvy formulare.
V podstate to melo probehnout nasledovne:
inicializace hry - vygenerujes si pole (2 rozmerna hraci plocha) s hadem, jidlem, prekazkami, ...
V OnPaint formulare budes mit pouze vykresleni pole na plochu formulare, nic jineho - obycejne 2 cykly v sobe, ktere vykresli mrizku a hada.
Po stisku klavesy nebo v udalosti Timeru budes aktualizovat pouze pole, zadne kresleni a na konci obsluhy zavolas Form.Refresh, Form.Invalidate pripadne jinou metodu, ktera vynuti prekresleni formulare