Csináljunk egy bagel
Létrehozása bagel magában némi tervezési, de van egy dolog, amit tehetünk a legelején: létrehozni egy cím képernyőn. Ez lehetővé teszi számunkra, hogy indítsa el a projekt, amely néha nagyon nehéz lehet. Könnyen istálló lépésben „Hol is kezdjem?”, De a kódoló a képernyőkímélő lehetővé teszi a labdát gördülő. Ez egyszerű, lehetővé teszi számunkra, hogy hozzon létre több fájlt egy jövőbeli projekt, valamint beállítani a gondolkodás, a jövőbeli programozási.
A képernyővédő, szükségünk nyilvánvalóan fejlécet. Szóval hogyan lehet létrehozni egy klasszikus bagel, a cselekvés kerül sor a börtönben. Dungeon. mi? Meg kell neve hangzott veszélyes és fenyegető. Legyen Dungeon of Doom (Dungeon of Doom)! Úgy hangzik, elég jó. Ez lesz a neve.
Az első dolog, amit meg kell dönteni - milyen típusú ablakot fogunk használni. Jól jönne normális konzolt, de akkor kellene csak azon 16 Tew virágok. Nincs oka. Ez a játék, akkor használja a grafikus kijelző 32 bites módban, amely használja a teljes RGB paletta. A mi szempontunkból elég a képernyő felbontását 640x480, és a használata a 32-bites paletta ad nekünk nagyobb rugalmasságot adatokat jelenítsen meg. Felbontása 640x480, tudjuk meg a szöveges módú Akár 80 oszlop 60 sorok, ami megadja nekünk egy csomó helyet, és a 8x8 font, akkor egy kompakt, de jól olvasható kijelző.
Ha már elkészítette a képet, meg kell átalakítani, hogy egy tömbben a színek.
- Betölteni a képet grafikus módban.
- Végighaladni az összes pontot a kép, és mentse a színértékét tömb előjel nélküli egész szám. Csak használni a Point funkciót, mert sebesség nem fontos, és ez a legegyszerűbb módja.
- Mentse el a kapott fájlt tömbbe.
Ennek eredményeként, mi kell egy fájlt, a következőhöz hasonló soderdimogo:
Mint látható, a szín kódokat hexadecimális. Ez azért van, hogy helyet takaríthat meg a fájlt.
Hogy megmutassa a szükségességét, hogy írjon egy rutin, hogy szöveges módban fog rajzolni szögletes blokk színét meg ezt a fájlt.
Két FOR-NEXT ciklus, mi végighaladni a tömb a színek és a segítségével zsinórral csapatok felhívni ASCII 219 előre beállított állandó acBlock. Zsinórral használ pixeles képernyő koordináták x és y, így tudjuk megjeleníteni szöveget bárhol a képernyőn, és nem csak a konkrét sorok és oszlopok. De ebben az esetben is szeretnénk használni, csak sorok és oszlopok, így tolódik a koordinátákat a szélessége és magassága a betűtípust, és a meghatározott állandók charw charh.
Első pillantásra, a kód Dim CLR Ahogy UInteger = cím (x + y * titlew) úgy néz ki, egy kicsit furcsa, de ha megnézed title.bi fájlt, akkor láthatjuk, hogy a kép színei a mi megmarad az egydimenziós tömbben. Annak érdekében, hogy átalakítani a két-dimenziós koordináta az egydimenziós, használjuk az általános képletű cím szerinti (x + y * titlew), ahol x és y - tömb indexek és titlew - szélessége a szöveg képernyőn. Nyilvánvaló, hogy ez a munka, az szükséges, hogy a tömb tele volt ugyanúgy. Például, akkor használja a következő kódot feltölti a tömböt:
Az azonos képlet lehet használni, hogy töltse ki egy sor nagyobb felbontású segítségével további indexek.
Befejezi a rutin funkció ScreenUnlock képernyő feloldásához annak érdekében, hogy frissíteni kell az kijelzőn. Akkor várunk, hogy a felhasználó megnyom egy gombot, vagy a Sleep parancs. Az utolsó darab kód: Do: Sleep 1: Loop While Inkey <> „” Mi az elszámolási a billentyűzet puffer, mert Ma már megőrizte a minimum, hogy a kulcs, amely a felhasználó kattintott, hogy kilépjen az alvó parancsot, amely nem törli a puffert. Nem akarjuk, hogy vegye fel az összes ezt a cuccot, amikor a kulcsot fogja feldolgozni a billentyűk a menüben, így a billentyűzet van szükség, hogy törölje a puffer.
Bár a programban csak akkor jelenik meg az E-mód, a projekt már van néhány:
- dod.bas. A projekt fő fájlt.
- defs.bi. Ez egy lista állandók.
- title.bi. Ez tartalmaz egy sor színes értékeket a képernyővédők.
Míg a fájl meghatározások csak néhány állandók szükséges a képernyőn. Megjegyezzük, hogy az általunk használt iránymutatásként #define és írja Const. #define használt numerikus állandók és makrosoa és Const a számított értékeket. Nem akarjuk, hogy minden alkalommal, amikor használja fbYellow a programban kiszámításához RGB érték őt. Miért nem használjuk Const mindenhol? Mivel a használat értékének a Const program lásd a szimbólum táblát, hogy megtalálják az értéke állandó. Amikor használja #define, akkor a fordító lecseréli az összes előfordulás a programban charw 8, mintha írtunk ott, és a program számát nem kell hivatkozni a tábla neve. Azonban, ha valóban a kódot mindenütt jelzett konkrét számot, majd például a hibakeresés, meg kellene változtatni, akkor semmi sem lenne jó sült ki belőle, mert nagyon nehéz volt, hogy emlékezzen az összes helyen a programban, ahol rámutatott 8 szélességének beállításához egy karaktert. Ezért jobb, ha ez a munka számunkra készített fordító.
Minden forráskód a program (a formájában, amelyben létezik abban a pillanatban), megtalálja a chap01 könyvtárban.
Most van itt az ideje, hogy rendeljen el alkalmazás ikonjára. Mi hozzá a projekt 2 fájlokat. Ez dod.ico, ami a könyvtár a képek és dod.rc, amely azt mondja, hogy a fordító FB, ahol meg lehet venni az ikont az alkalmazás számára.
Összeállításához a könyvtár a projekt, írja be a következő parancsot:
Felhívjuk figyelmét, hogy állítson össze egy programot használ -exx fordítási kapcsolót. Ez azt mondja a fordító, hogy meg kell mondani nekünk a hibákat, például a kimenet a tömb keret vagy a rossz index. Mi mindig -exx fejlesztés során. Ez segít nekünk, hogy megtalálják legalább néhány hibát. Továbbá, ha ez a lehetőség, egy külön konzolt jön létre, és amelynek segítségével le tudjuk zárni a programot, ha bármilyen okból „lógott”.
Amikor a program terjesztésre kész, akkor fordítsd le anélkül, hogy a konzolt, és a fokozott hibaellenőrzés, mivel lassítja a végrehajtást.
Ezt megtehetjük a következő:
Keys -s gui mondja a fordító, hogy szeretnénk lefordítani a programot grafikus módban nélkül a konzol.
Befejeztük az eredeti terv - indul a projekt. Meg kell menni egy hosszú út, de legalább van egy működő kódot, és valami több, mint egy jó ötlet.