|
[Grafika]
[WebTip]
[Fotografování]
[Galerie]
[MujMac]
[Printing]
|
|||||||||
|
|
||||||||||
|
|
|||||||||
|
Ano. I když se to někomu může zdát hodně divné, právě čtete
článek o tvorbě her v DELPHI. Ano, i v Delphi jdou programovat hry. Jestli
lepší, či horší než v ostatních jazycích nevim, ale rozhodně to není
zas až tak složité. Ti, kteří si mysleli, že naprogramují Quake 5 nebo něco podobného musím
hned na začátku zklamat. Pokud si ale přečtete a pochopíte všechny články
o tvorbě her, měli byste být schopni sami naprogramovat hru podobnou hře ufo ( ufo.zip 0.5 Mb).
První program v DelphiX... Nechme už ale povídání, a pusťme se do tvorby. Náš první projekt nebude umět nic jiného, než zobrazit na pozici obrázek. To ještě samozřejmě není hra, ale musíme začít něčím jednoduchým. Nejprve tedy spusťte
Delphi a vytvořte nový projekt. Z palety komponent DelphiX vložte na
formulář komponenty DXDraw (
Tato procedura prostě nakreslí obrázek x komponenty DXImageList1 na povrch Dest (v našem případě DXDraw1.surface) na pozici x, a y. PatternIndex určuje vzorek, ten zatím necháme na nule. A to je vše. Jak prosté. Zde je výpis celé procedury:
Jak vidíte, v proceduře se nám vyskytly ještě další procedury, které jsou popsány dále. Začněme tedy prvním řádkem. Vlastnost DXDraw1.CanDraw určuje, zda můžeme na povrch kreslit. Pokud tomu tak není, první řádek se postará o to, aby nedošlo k chybě a rovnou z procedury vyskočí. Procedurou Fill vyplníme povrch DXDraw danou barvou (0 = černá), čímž všechny předchozí kresby z obrázku vymažeme. Pomocí proc. Draw nakreslíme obrázek na pozici 0,0 a nakonec skrytý povrch zobrazíme proc. Flip. Nyní můžeme projekt přeložit a spustit klávesou F9, a pokud se Vám opravdu zobrazuje obrázek v levém horním rohu, udělali jste program správně a můžete všem říkat, že jste udělali program v DirectX :) Tím to ale samozřejmě nekončí, to je teprve začátek... Program druhý - trocha pohybu neuškodí... Tedy myslím pohybu obrázku, jelikož dívat se, jak se obrázek
zobrazuje pořád na stejné pozici je po chvíli...nudné. Jako základ nám může
posloužit program předchozí, do kterého pouze doplníme trochu kódu. Ten se
postará o to, aby se obrázek při každém volání proc. OnTimer zobrazil na
jiném místě (pozn. - pokud jste měli vlastnost DXTimer.Interval nastavenou
na 0, nebo jiné malé číslo, je dobré jej trochu zvětšit, aby se Vám
potom nedělali mžitky před očima). pro tvorbu náhodného čísla použijeme
procedury
a proceduru Draw změníme na:
Jak sami vidíte, x a y obrázku bude nanejvýš takové, aby se zobrazil těsně u kraje okna a tedy abychom ho vždy viděli. Program můžeme zase přeložit a spustit klávesou F9 a pokud je vše v pořádku, bude se objevovat obrázek na náhodných místech. Obrázek se již hýbe, ale jak udělat, aby létal po obrazovce a odrážel se od stěn ? Program třetí - létání a odrážení od stěn... A konečně program třetí, a pro dnešek již poslední. V tomto programu si ukážeme, jak naprogramovat, aby sprite létal sem a tam a odrážel se od krajů okna. Pro pohyb budeme používat trochu jiné techniky, než ve článku o animaci spritu v Delphi a která nám dovolí, aby sprite nelétal pouze pod úhly 45°. Princip je ale stejně jednoduchý - kromě prom. x a y si defunujeme ještě IncX a IncY a při každém volání proc. OnTimer k x přičteme IncX a k Y přičteme IncY. Teď si ale řeknete - to je sice hezké, ale v tom případě poletí sprite pouze dolů a doprava. Tak to ale není. Pokud se sprite dostane ke kraji okna, změní se IncX nebo IncY (podle toho, ke kterému kraji okna) na záporné číslo. A jelikož + a - je mínus, bude se sprite pohybovat na druhou stranu ! A pokud se dostane ke kraji doleva nebo nahoru, je to přesně naopak. Navíc k IncX a IncY přiřazujeme náhodně číslo (samozřejmě kladné, nebo záporné) o kolik se má sprite pohnout, a proto letí pod různými úhly. Vyzkoušet si to můžete ostatně sami.Do sekce public přidejte proměnné IncX a IncY typu integer. Zde je kód procedury OnTimer:
Nakonec ještě přidejte proceduru Form1.OnCreate do které přidejte následující:
To zajistí, aby se při startu programu sprite objevil na náhodném místě a pohybovat se náhodou rychlostí náhodným směrem. Download:Hra UFO (0.5 Mb) Screenshot: ![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||