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)
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)
Předmět | Autor | Datum |
---|---|---|
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls; t… Delmos 08.05.2013 20:46 |
Delmos | |
procedure DrawSnake; var i : integer; Begin if direction = dnone then exit; Form1.Canvas.Brush.Color… Delmos 08.05.2013 20:47 |
Delmos | |
Chtěl bych se zeptat ohledně toho vykreslení hracího pole (DrawPlayfield)
Jestli jsem vlastně pochop… Delmos 09.05.2013 23:07 |
Delmos | |
tpoint len uchovava dve celociselne hodnoty, nemusi to byt bod. Zmysel tych hodnot moze byt cokolvek… nový MM.. 10.05.2013 00:34 |
MM.. | |
Musím to mít v delphi...
A trochu blbě si mě pochopil... nový Delmos 10.05.2013 00:47 |
Delmos | |
.. resp. tym ze do FormPaint (co je asi OnPaint event to musis si pozret ty v tvojom projekte) nasta… nový MM.. 10.05.2013 00:49 |
MM.. | |
FormPaint je udalost, ktera se vola pri potrebe o prekresleni formulare (pohnes s nim, prekreje jej… poslední Jan Fiala 10.05.2013 12:51 |
Jan Fiala |
Zpět do poradny Odpovědět na původní otázku Nahoru
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.
tpoint len uchovava dve celociselne hodnoty, nemusi to byt bod. Zmysel tych hodnot moze byt cokolvek. Trebars v tom pripade vyska a sirka nejakej plochy.
Brush neni platno ale stetec (= Brush po anglicky), t.j. farba vyplne ak kreslim nejaky vyplnitelny objekt, napr. obdlznik.
Na form1 sa nenakresli bod, ale obdlznik (= Rectangle po anglicky).
procedura FormPaint je tam pouzita dost dementne, nastavuje to len parametre objektu form1, ta procedura je ale volana systemom (kniznicou) z uplne inych dovodov. Niekde tu sirku platna autor nastavit musel, tak to robi tam lebo ine ho nenapadlo.
Vseobecne ak sa pouziva nejaky kniznicny objekt napr. ten Form.Canvas tak si nastuduj ze jake to ma parametre a co vsetko musis tomu objektu nastavit, a jake procedury ti system bude volat a kedy. Snad k tomu delphi bol pribaleny aj nejaky help, referencna prirucka, apod. Ak nemas tak google Form.Canvas reference, apod. Alebo si googli rovno slova programovani v delphi pro zacatecniky a citaj si nejaky tutorial od zaciatku. Aby si aspon chapal jak sa strukturuje Windows program a co to je riadenie eventami apod.
P.S> a nechapem preco to nutne chces v Delphi, imho mrtva platforma.
Musím to mít v delphi...
A trochu blbě si mě pochopil...
.. 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