piatok, 03 marec 2017 15:06 Written by 2668 times
Rate this item
(1 Vote)

Delphi - Hra SEDMA

Príklad zakomponovania tzv. resources (zdrojových súborov) do spustiteľných aplikácií. Hra - sedma. Pridám opäť ďalší príspevok pre programátorov jednoduchých hier. Rozhodol som sa zverejniť ďalšie svoje kódy kartovej hry sedma napísané v DELPHI 7 Personal freeware.

Pravidlá hry popisovať nejdem, sú v aplikácii popísané v sekcii Pomoc->O hre.
Keďže popísať stratégiu hry písanú v objektovom pascale by zabralo príliš veľa miesta, toto vynechám a nechám na šikovnom programátorovi, nech si ju naštuduje sám.
Sedma
Teraz sa zameriam iba na jednoduchý popis vkladania tzv. resources (súborov obrázkov, zvukov, atď.) do aplikácií.
Poznáme niekoľko spôsobov vkladania a používania tzv. resources do aplikácie. Sú to napríklad priame zakompilovanie obrázkov do aplikácie (budú súčasťou exe súboru), alebo napr. vloženie resources do
dynamickej knižnice a následné ich nahrávanie do pameti a volanie pomocou napr. API (potreba distribúcie dll-ky spolu s exe súborom), poprípade nechať súbory mimo aplikície a nahrať ich do pamäte
štandardnými metódami nahrávania súborov konrétných objektov (napr. LoadFromFile).

V mojom programe som sa rozhodol ukázať dva spôsoby nahrávanie súborov naraz. Vytvoril som v zdrojovom súbore direktívnym príkazom {$DEFINE FROMRESOURCE} tzv. identifikátor "FROMRESOURCE" v aplikácii.
Ide o príkaz kompilátoru, ktorý hovorí, že ak existuje tento identifikátor, zakomponuj do exe súboru tieto resources,
{$IFDEF FROMRESOURCE}
{$R cards.res}
{$R sound.res}
{$ENDIF}
ak neexistuje, nahraj obrázky zo súborov obrázkov *.bmp (sú priložené k programu v Sedma.zip súbore).

Vysvetlím vytvorenie tzv *.res súboru.
Najprv čo je to vlastne *.res súbor?
Tento súbor je v podstate preložený skompilovaný súbor s obsahom obrázkov - v našom príade obrázkov kariet. Takisto máme vytvorený aj súbor sound.res, kde sú zakompilované zvuky pre hru.
Keď sú vytvorené všetky potrebné *.res súbory, po skompilovaní všetkých ostatných zdrojových súborov sa linkujú potom spoločne do jedného spustiteľného súboru sedma.exe.
Resources súbor s obrázkami vytvárame nasledovným spôsobom:
1. Zhromaždíme si najprv všetky súbory, ktoré chceme zahrnúť do resource súboru, do jedného spoločného adresára.
2. Vytvoríme cards.rc zdrojový súbor resource súboru pre kompilátor. Tento súbor je vlastne zdrojovým súborom informácií, ktoré súbory majú byť zahrnuté do resources súboru.
Náš súbor obsahuje zoznam v tvare:
00 BITMAP "C:\Program Files\Borland\Delphi4\Projects\Seven\00.bmp"
01 BITMAP "C:\Program Files\Borland\Delphi4\Projects\Seven\01.bmp"
.... atď. Pozriete si v súbore cards.rc. Prvá položka riadku je identifikátor obrazku (slúži ako parameter pre API funkcie pri čítaní obrázku), typ súboru obrázku BITMAP = bitmapa a
nakoniec cestu k súboru obrázku. Treba dať pozor na presnú absolútnu cestu k súboru.
3. Samotný cards.res súbor vytvorýme príkazovým riadkom v tvare: C:\Program Files\Borland\Delphi7\Bin\brcc32.exe cards.rc. Súbor by mal byť vytvorený v tom istom adresári, v ktorom sa nachádza cards.rc.

Nahratie obrázku do pamete som vykonal pomocou metódy objektu Picture: Picture.Bitmap.LoadFromResourceName(HINSTANCE, CardName).
V súbore seven_f.pas nájdete príkaz ako: PlayerCard[ImageNumber].Picture.Bitmap.LoadFromResourceName(HINSTANCE, CardName);
Kde "CardName" je identifikátor obrázku v cards.rc súbore.   

Analogicky som vytvoril aj sounds.res súbor.
Obidva "res" súbory potom pripojíme k nášmu hlavnému zdrojovému súboru hore spomenutým direktívnym príkazom:
{$R cards.res}
{$R sound.res}

Prajem príjemnú zábavu.

Alojz Benďák.

 

Last modified on piatok, 03 marec 2017 19:41
Alojz Benďák

Autor je administrátor webu a venuje sa programovaniu takmer 23 rokov.

  • prvý kontakt s počítačmi na strednej škole - PMD 1,2,3, PP06, Atari, Sinclair (programovanie v jazyku: strojový kód, basic a pascal):  2 roky
  • na VŠ - jazyky Turbo pascal a Turbo C: 1rok
  • programovanie databázového ekonomického širokoškálneho software v Delphi a C++ Borland (databázy Paradox): 8 rokov v Codex s.r.o. Nitra
  • programovanie webových aplikácií na databázach MySQL a MS SQL server: 1 roky na živnosť (firmy: Hermes Nitra, Schindler v Bratislave)
  • pracoval ako DBA v Homecredit Brno a vo VÚB Bratislava ako vyvojár + optimalizácie v SQL a PL/SQL na Oracle 11g (firma Accenture)
  • programoval programy pre súkromné firmy pre HW na skenovanie povrchov nádrží pre skladovanie tekutých palív (pristroj Leica)
  • momentálne pracuje ako DBA pod Oracle 11g a ako vyvojár vnútropodnikových databázových aplikacií v PHP, SQL, C++, C# a interface v PL/SQL: 11 rokov
  • ďalej programuje s HTML, CSS, Ajax, Javascript, VBA, MS visual C++ a C# malé podporné aplikácie
  • certifikát SQL expert for Oracle 11g   
  • spolupracuje a aktívne učí pre počítačové firmy: Lapis, IVIT v Nitre

More in this category: « Delphi - Hra TETRIS