Program editor umoznuje vytvaret, ukladat i nacitat z disku graficke soubory s priponou gra

Delphi & Pascal (česká wiki)
Přejít na: navigace, hledání
Kategórie: KMP (Programy mladých programátorů)

Program: Graeditor.pas
Soubor exe: Graeditor.exe

Program editor umoznuje vytvaret, ukladat i nacitat z disku graficke soubory s priponou gra. Jedna se o muj vlastni format ve kterem je zakodovana grafika 160x200 pixelu s barevnou hloubkou 16 barev vybranych ze 65535ti. Vysledny graficky soubor zabira 9048 bajtu takze je vhodny pro prilinkovavani napr. do her v assembleru.

prvnich 8000 bajtu je grafika 160x200 (viz rozkodovani) obsahuje same hodnoty 0 1 2 3

dalsich 1000 bajtu obsahuje ctverice bajtu pro kazdy ctverecek 8x8 pixelu - zde uz jsou nahrany barvy 0-15

poslednich 48 bajtu obsahuje barevnou paletu pro prvnich 16 barev.

V programu je pouzito zakodovani a rozkodovani. Po rozkodovani zabira stranka 160x200x16 32KB zakodovana 9KB.

K zakodovani je pouzito prevodu decadickych cisel na binarni . Takze 4 pixely zabiraji presne jeden bajt. 00 01 10 11 b

Program obsahuje napovedu ve ktere je ovladani editoru. Vse je na klavesnici.

Zname chyby: kdyz se otevira soubor a zada se jmeno neexistujuciho souboru nebo nejak spatne dojde k padu programu (chybi File not found funkce) druha znama chyba: v casti editoru kde se pracuje se schrankou se obsah schranky napravo zobrazuje spatne ale jinak schranka funguje
{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}
Manual k programu Editor
 
{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}
Obsah:
 
  1. Vyznam editoru
  2. Graficky format gra
  3. Prace s editorem
  4. Kontaktni adresa
 
{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}
1. VYZNAM EDITORU
 
  Editor je primarne urceny ke generovani souboru s priponou gra ktere se
  daji prilinkovat k programum/hram napsanym v Assembleru. Je vsak docela
  snadno mozne i pouziti v Pascalu, staci si napsat prevodnik z desitkove
  do binarni soustavy a naopak.
 
{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}
2. GRAFICKY FORMAT GRA
 
  Soubor s priponou gra je muj vlastni format takze neni mozne s editorem
  otevirat soubory s priponou gra ktere byly pouzite napr ve starych hrach.
  Tam je struktura souboru zcela odlisna od te moji. V mem souboru jsou 3
  hlavni bloky dat:
 
  prvnich 8000 bajtu
  dalsich 1000 bajtu
  a nakonec 48 bajtu
  a jeste jeden bajt
 
  Prvnich 8000 bajtu obsahuje hodnoty 0 1 2 a 3 a to tak ze jeden bajt
  uchovava 4 hodnoty. Kazde dva bity obsahuji jednu hodnotu. Jeden bajt
  tedy 8 bitu obsahuje 4 hodnoty. (4 pul-nibbly)
  O techto cislech bude jeste psano dale. (priklad : 01 10 11 00 binarne)
 
  Dalsich 1000 bajtu obsahuje hodnoty 0..15. Kazde 4 bity obsahuji jedno
  cislo. V jednom bajtu 2 nibbly (napr. 0010 0111 binarne) Vice viz. nize.
 
  A poslednich 48 bajtu. Zde jsou jiz nezakodovane hodnoty pro paletu barev.
  Prvni 3 bajty z techto 48mi reprezentuji hodnoty Red Green Blue pro barvu
  palety cislo 0, dalsi 3 bajty obsahuji RGB pro barvu 1 atd az barva 15.
  Barvy pro paletu jsou v editoru vybirany z rozsahu 0 az 65535 barev. Pro
  jednu stranku viz. nize je mozno pouzit max 15 barev (nulta barva je
  rezervovana pro pruhlednou)
 
  Na konci souboru s priponou gra je jeste jeden bajt. Ten udava cislo
  stranky. Jednou strankou je mineno 160x200 pixelu v barevne hloubce 16
  barev vybiranych ze 65535ti. Je totiz predpokladano ze soubory gra budou
  pouzity i ve vetsim mnozstvi nez jen jeden pro cely program/hru a potom
  by nastal problem s tim ze to ma mit cele jen 16 barev a proto je s
  pouzitim tohoto posledniho bajtu umozneno nastavovat paletu barev tak
  ze se vynasobi cislo stranky*16 + cislo barvy a tak se barevna paleta
  nastavi ne vzdy na prvnich 16 barev ale treba na barvy 32 az 48 pro jinou
  stranku.
 
  Ted vysvetlim jak jsou k jednotlivym pixelum prirazena cisla barev. Pro
  snadne pochopeni je nutno uvest ze editor ma generovat grafiku podobnou
  na 8mi bitove nintendo (NES) ktere se prodavalo u Vietnamcu v 90. letech.
  Na Nintendu je maximalni velikost jednoho vykreslovaneho spritu 8x8 pixelu.
  Cela scena, vsechny objekty jsou poskladane ze ctverecku 8x8 pixelu a v
  tomhle editoru je na to bran zretel. Kazdy takovy ctverecek muze mit
  hloubku barev maximalne 4 barvy a z toho jedna je pruhledna takze 3.
  Ve druhem bloku dat (1000 bajtu) jsou obsazeny ctverice barev jednotlivych
  ctverecku. Prvni 2 bajty (4 nibbly) obsahuji cisla barev pro prvni ctverec
  8x8 pixelu na strance 160x200 pixelu. Po rozkodovani souboru s priponou
  gra dostaneme stranku zabirajici 32KB. Da se rozdelit na ctverecky 8x8
  pixelu a vyjde jich 20x25 ctvercu po 8x8 pixelech. Dohromady 500 ctverecku.
  Na jeden ctverecek tedy pripadaji 2 bajty z druheho bloku dat v souboru.
  500 x 2B = 1000B
 
  To jakou barvu ma ktery pixel v jednotlivych ctvereccich je definovano v
  prvnim bloku dat v souboru (v tom co ma 8000 bajtu). Vezmeme si prvni
  ctverecek ten co je v rohu nahore vlevo na strance 160x200. Prvni dva bajty
  z prvniho bloku dat (8000B) obsahuji 8 pul-nibblu. Po rozkodovani dostaneme
  8 bajtu s cisly 0 1 2 a 3 ktere znamenaji ktera barva z prislusne ctverice
  se ma pouzit. Prislusna ctverice tj. v nasem pripade pro prvni ctverecek
  tedy prvni dva bajty z druheho bloku dat v souboru (1000B).
 
{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}
3. PRACE S EDITOREM
 
  Po spusteni se objevi textove menu s hlavni listou nahore. Lista obsahuje:
  Napisy MENU dale EDITOR GRAFIKY pak je tam "soubor=" a sem se dosadi nazev
  souboru ktery se bude editovat, dal je na liste cislo stranky a F10=EXIT.
  Sipkami nahoru dolu vybirame polozku z menu ktere se rozbali pri stisku
  klavesy sipka dolu nebo muzeme pouzit klavesove zkratky. F4=vytvorit novy
  soubor, F3=otevrit soubor, F2=ulozit (nezapominejte ulozit, program k tomu
  sam nikde nevyzyva) F1=zobrazi napovedu kde je popsano jak se co ovlada,
  F5=spusit editor (je nutne nejdriv mit zadane jmeno souboru) F10=konec
  programu a klavesy PgUp a PgDn meni cislo stranky (pri ulozeni se toto
  cislo uklada jako posledni bajt souboru).
 
  Kdyz se zadava jmeno editovaneho souboru tak vzdy ve formatu jmeno bez
  pripony napr. soubor01 a enter. Priponu gra si editor dosazuje sam a to
  jak pri vytvoreni noveho souboru tak pri otevirani jiz existujiciho.
 
  Pokud mame zadane jmeno souboru ozve se zvuk ktery signalizuje uspesne
  otevreni nebo vytvoreni souboru. Nyni muzeme spusit graficky rezim.
  To provedeme stiskem F5 nebo z menu EDITOR a enter. Objevi se cerna
  obrazovka s obddelnikem vpravo s ctvercem uprostred a maly ctverecek vlevo
  nahore. Nachazime se v hlavnim okne editoru. Zde muzeme prohlizet celou
  editovanou stranku a taky jedine zde muzeme pracovat se schrankou 8x8
  pixelu. Sipkami pohybujeme malym ctvereckem vlevo na editovane strance
  160x200 pixelu kterou vidime celou (cela leva polovina obrazovky).
  Klavesou C se uklada obsah toho maleho ctverecku vlevo do schranky a
  klavesou V se vklada obsah schranky na editovanou stranku. Kdyz neco do
  schranky ulozime objevi se nahled toho co je ve schrance ve ctverci
  vpravo uprostred toho obdelniku a taky pod timto ctvercem se objevi
  ctverice barev toho policka 8x8 pixelu ktere mame ve schrance.
 
  Z hlavni obrazovky editoru kterou jsme spustili F5 je mozne prechazet
  na dalsi obrazovky editoru s dalsimi funkcemi. Pomoci F8 odtud spustime
  editor jednotlivych barev. Pomoci F7 spustime editor jednotlivych ctveric
  barev pro kazdy ctverecek 8x8 pixelu. A pomoci F6 spustime obrazovku kde
  se kresli jednotlive pixely grafiky. Kdyz spustime nekterou z techto
  obrazovek tak pred prechodem na jinou se musime vzdy nejprve vratit na
  hlavni obrazovku pomoci F5 nebo Esc. Doporucuji F5 protoze pomoci Esc se
  z hlavni obrazovky take vracime do textoveho menu. Preskoceni by nemelo
  nastavat ale mohlo by proto navrat na hlavni obrazovku F5. Pro jistotu
  uvedu priklad. Jsem na hlavni obrazovce s celou editovanou strankou
  vlevo a nahledem schranky vpravo a prejdu stiskem F8 na obrazovku kde
  se michaji barvy. Namicham par barev a ted chci prejit na obrazovku kde
  se nastavuji ctverice barev pro jednotlive ctverecky 8x8 pixelu. Musim se
  nejprve vratit na hlavni obrazovku stiskem F5 nebo Esc a teprve potom
  muzu stiskem F7 prejit na obrazovku kde se nastavuji ctverice barev
  jednotlivym polickum 8x8 pixelu. Obrazovky F8 F7 a F6 nereaguji samy na
  sebe navzajem, vzdy je nutne se vratit na hlavni obrazovku stiskem F5.
 
  F8 - spoustime editor barev:
  Z hlavni obrazovky editoru jsme spustili editor barev. Zde sipkami doleva
  a doprava vybirame kterou barvu chceme editovat (0 az 15) a klavesami
  Insert a Delete pridavame a ubirame hodnotu cervene  {R}
  Home a End pridavame a ubirame hodnotu zelene        {G}
  PgUp a PgDn pridavame a ubirame hodnotu modre        {B}
  Stiskem F2 muzeme zmeny barev ulozit. Pro navrat na hlavni obrazovku
  stiskneme F5 nebo Esc.
 
  F7 - spoustime editor ctveric barev pro policka 8x8 pixelu:
  Z hlavni obrazovky editoru jsme spustili editor ctveric. Kurzorovymi
  sipkami vybirame barvu z vyberu barev vpravo. Tam kde je kurzor tak ta
  barva se prirazuje. Klavesami IJKL pohybujeme malym kurzorem vlevo.
  Leva polovina obrazovky reprezentuje editovanou stranku a maly kurzor se
  po ni pohybuje po krocich 8 pixelu (po jednotlivych ctvereccich). IJKL
  pouzivame jako kurzorove sipky. Klavesami ASDF prirazujeme ctverecku jeho
  ctverici barev. Stisk A nastavi barvu 1, stisk S nastavi barvu 2, stisk D
  nastavi barvu 3 a stisk F nastavi barvu 4. Nastavi se ta barva kterou mame
  vybranou velkym ctvercem v prave casti obrazovky. Hned po stisku A,S,D nebo
  F se prislusna barva objevi v malem ctverecku vlevo coz znamena ze je pro
  dany ctverecek nastavena a zaroven se objevuji nastavene barvy v prave
  polovine obrazovky dole. Pri prechodu malym kurzorem na jiny ctverecek se
  hned meni ctverice barev na prave polovine obrazovky dole. Zmeny ulozime
  stiskem F2. Pro navrat na hlavni obrazovku stiskneme F5 nebo Esc.
 
  F6 - spoustime kreslici editor
  Z hlavni obrazovky jsme spustili pomoci F6 editor na kresleni. Predpoklada
  se ze jiz mame NAMICHANYCH 16 BAREV a MAME JEDNOTLIVYM CTVERECKUM 8x8
  PIXELU PRIRAZENY JEJICH CTVERICE BAREV takze muzeme kreslit. Kurzorovymi
  sipkami pohybujeme velkym ctvercem na leve polovine obrazovky. Tento
  ctverec predstavuje vyber toho co bude "pod lupou". Na prave polovine
  obrazovky mame malinky ctverecek ktery je kreslici kurzor. Timto kurzorem
  pohybujeme klavesami IJKL a klavesy ASDF slouzi pro vkladani pixelu. Malym
  kurzorem vpravo muzeme pohybovat v rozsahu ktery je dany velkym kurzorem.
  Velky kurzor se pohybuje po krocich 8 pixelu, maly kurzor po jednom pixelu.
  Kdyz malym kurzorem najedeme na oblast ktera nema nastavenou svou ctverici
  barev z obrazovky F7, kreslici barvy zmizi. Je nutne nejprve nastavit
  pro dany ctverecek 8x8 pixelu jeho ctverici barev. Kdyz malym kurzorem
  najedeme z jednoho ctverecku 8x8 do oblasti druheho ctverecku, kreslici
  barvy se automaticky nastavi na ctverici druheho ctverecku. Zmeny muzeme
  prubezne ukladat stiskem F2. F5 nebo Esc pro navrat na hlavni obrazovku.
 
  Jak zacit pracovat s editorem krok za krokem:
 
  1. stisk F4 = zadat jmeno noveho souboru
  2. stisk F5 = hlavni obrazovka editoru
  3. stisk F8 = namichat barvy
  4. stisk F5 = navrat na hlavni obrazovku
  5. stisk F7 = nastavit ctverice barev pro jednotlive ctverecky 8x8 pixelu
  6. stisk F5 = navrat na hlavni obrazovku
  7. stisk F6 = kreslici editor (ovladani: kurzorove sipky + IJKL + ASDF)
  8. stisk F5 = navrat na hlavni obrazovku
  9. stisk Esc = navrat do textoveho menu
  10. stisk F2 = ulozit
  11. stisk F10 = konec
 
{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}
4. KONTAKTNI ADRESA
 
  Kritiku nebo pokud potrebujete poradit s editorem nebo s mym formatem gra
  posilejte na mail kolecek.martin@email.cz
 
  Mam i unit pro Pascal ktery nacita soubory gra a vykresluje grafiku takze
  pokud jste docetli az sem a mate stale zajem muzete mi napsat a ja vam
  poslu unit pro Pascal ktery pracuje s formatem gra.
 
{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}