Pascal
K Pascalu jsem se dostal v kroužku na střední škole a od té doby mě to nepustilo. Je pravda, že pokrok nezastavíme a zlatá éra DOSu skončila už před hóóódně dlouhou dobou, ale mě se šťourání na úrovni hardwaru, ruční optimalizace a pocit, že všemu vidím pod kůži, prostě líbí
Nejčastější problémy a jejich řešení
Problém: Mám M$ Windows XP a při spuštění BP7 mi
píší chybovou hlášku :
16-bitovy subsystém MS-DOS
Cestak programu, který se snažíte spustit nebo nainstalovat
C:\Windows\System32\Autoexec.nt The system file is not suitable for running
MS-DOS and Microsoft Windows applications. Choose 'Close' to terminate the
application.
Řešení: Vložte CD s M$ Windows XP do mechaniky a spus?te
(nabídka start --> spustit) následující příkaz :
expand X:\i386\autoexec.nt_ c:\windows\system32\autoexec.nt
X nahraďte písmenem vaší CD-rom jednotky.
Problém: Snažím se spustit program, co používá BGI
grafiku (jednotku GRAPH), ale píše to chybu :
BGI Error: Graphics not initialized (use InitGraph)
Řešení : Pascal zřejmě nemůže najít soubor BGI (nejčastěji
egavga.bgi). Ujistěte se, že ho máte v aktuálním adresáři a ze není
určený "jen pro čtení". Případně použijte File --> Change dir a
nastavte BGI adresář (standardně bp7\bgi).
Problém : Při používání jednotky CRT nebo při
spouštění zkompilovaných souborů z internetu mi Pascal hází hlášku
:
Runtime Error 200: Division by zero
Řešení : Tato chyba je způsobena rychlostí počítače.
Pokud máte procesor rychlejší, než 233 mhz, musíte si v BIN adresáři
přepsat pár souborů, aby jste mohli překládat. Pro spuštění již
přeložených souborů potřebujete utilitu TPPatch, které dáte jako parametr
jméno exe souboru a ona ho opraví. Všechny tyto opravy jsou obsaženy v mém
BP7 (ke stažení nahoře).
Pokud máte nějaký problém a potřebujete pomoci při programování v Borland Pascalu / Free Pascalu / Turbo Pascalu, navštivte naše fórum. |
Unity/Jednotky
Pokud byste si nevěděli rady s deklarací, unity jsou použity v našich hrách a programech. Jednotky jsou ke stažení v archivu na konci článku.
SVGA 4 - Nejlepší unity na grafiku do Pascala, co znám. Jsou rychlé, podpora rozlišení od 320x200 do 1152x864 na 256 barev, podpora průhlednosti, loading/saving PCX, funkce na změnu hranic vykreslovacího okna (clip), fonty, palety, polygony, VSync, fade, samozřejmě práce s images, elipsy a podobně. Zdrojové kódy jsou v adresáři source\borland (VGA256.pas a SVGA.pas). Tyto jednotky potřebujete k preložení téměř každého mého programu. Bohužel mohou nastat komplikace u některých novějších grafických karet (někdy se stává, že změní frekvenci monitoru mimo rozsah)
Keypres2 - Tohle je úžasná unita pro práci s klávesnicí. Také vás už štvalo, když jste psali nějakou hru a funkce readkey nezvládala více stisknutých kláves najednou ??? Tady je klávesnice pole a vy si jednoduše zjišťujete, které klávesy jsou momentálně stisknuty.
Plus system pro 2.3 - Nadstavba na Borland Pascal 7.0 umožňující rychlou grafiku, přehrávání zvuků (XMI a SND souborů) na pozdí, myš s animovanými kurzory, přehrávání FLI animací a spostu dalšího. Vsechno to zkopírujte do adresáře s Pascalem (Bp7).
- XMI pack - Sbírka 303 XMI hudebních souborů pro zkrášlení vašich her.
SBwav - Unita umožňující přehrávat nekomprimované wav soubory NA POZADÍ. Když se wav soubor upraví třeba v GoldWave, má jedna minuta něco málo přes 1 mb, kvalita ujde a velikostí si je podobný s MP3. Funguje i pod win XP a součástí ZIPu je ukázkový program.
Mouse & BMP - Unita na myš a na loading BMP souborů. BMP unita je však pomalá a je pro BGI (standardní GRAPH unitu), takže doporučuji používat spíše PCX z SVGA4. Pod SVGA4 se nezobrazí kurzor myši (256 barev) a proto ho je nutné kreslit a mazat v nějakém cyklu. Také se musí nastavit limity myši podle rozlišení, no SVGA je zkraka trochu složitější, ale použití je obsaženo v roomeditu ve hře NIGHTwalker. Obsahuje BGI ukázku.
TPMOD - Toto není unita, ale ukázkový program, co využívá objektový soubor. Unitu z něj ale uděláte za 30 sekund... Běží pouze pod čistým DOSem a dokáže přehrávat na pozadí MOD soubory (to je něco jako midi, ale má to vlastní banku, takže to umožňuje i slova atd.) a to na PC speakeru, na COVOXU či SoundBlaster nebo Adlib kompatibilní zvukové kartě. ZIP obsahuje 6 ukázkových MODů.
Mircosoftovy jednotky najdete támhle, následuje stručný výtah toho nejužitečnějšího. Většina zdrojáků je podrobně okomentovaná, takže by s pochopením principů neměly být potíže. Kdyby byly, řekněte, pokusím se to napravit.
640 KB paměti mi nestačí, chci víc! V reálném režimu (real mode), ve kterém TP pracuje, to jde přes XMS nebo EMS (nebo možná i jinak, ale to už jsem nezkoumal). Stará se o to jednotka XMS.Potřebuju urychlit přesuny dat z místa na místo.
Klíčem je využití 32bitových instrukcí. Překladač Pascalu je sice
nezná, ale vkládanému Assembleru je můžeme vnutit přes strojový kód.
Vyřešeno v jednotce Need
For Speed UnderPascal.
Chci sériovým kabelem posílat data mezi dvěma
počítači.
Žádný problém - jednotka
COM to umí.
Potřebuju si přesně načasovat cyklus, ale s Delayem to běží na
každém procesoru jinak rychle. Co s tím?
Chce to oddělit začátek měření času od volání čekací procedury a
tělo cyklu vložit mezi ně. Dá se postupovat buď přes Gettime, což je dost
těžkopádné, nebo přímo přes systémový časovač, což dělá jednotka
Čas.
Píšu hru a potřebuju detekovat několik současně stisknutých
kláves pro pohyb a střelbu. Jak?
Doporučuji vykašlat se na jednotku Crt a pověsit si na přerušení
klávesnice vlastní obsluhu. Tohle a spoustu dalších věcí týkajících se
klávesnice umí jednotka Klávesy 2.
Dostali jsme úkol z matematiky, tak sháním něco na matice,
komplexní čísla, funkce, vyhodnocování výrazů a tak.
To je mi náhoda, jednotka Matyka zrovna tohle
obsahuje.
Následující jednotky už potřebují jedna druhou nebo ty výše uvedené, takže není zaručeno, že co stáhnete, to hned půjde přeložit:
Jednotka Graph je pomalá a 16 barev mi nestačí, chci nějakou
lepší grafiku.
Na to tu máme hned dvě jednotky: VGA pro 256 barev a
rozlišení 320x200 pixelů a VESA taky pro 256 barev,
ale rozlišení od 640x480 po 1024x768.
256 barev se mi líbí, ale chci si míchat svoje vlastní, měnit
jas obrazovky a tak.
Od toho je tu Paleta 2.
Jo, a hlavně myš! Jak se používá myš?
Žádná standardní jednotka na to není, ale služby přerušení $33
naštěstí nejsou nic složitého. Jednotky na to mám dvě: Myš 3 pro VESu a VGAMyš pro VGA. Jestli
chcete něco pro Graph, vykuchejte si z nich, co uznáte za vhodné.
Mám grafiku, ale nevím, jak načíst nebo uložit obrázek.
Pomóc!
Formáty BMP, PCX, CUT a ORF zvládá jednotka Images. Stavěná je pro
spolupráci s jakoukoli 256barevnou grafikou. Kromě načítání a ukládání
umí obrázky i různě upravovat.
Už mě nebaví pípání se Soundem a Nosoundem, dalo by se hrát
normálně přes zvukovku?
Jasně, jenom se to zase musí napsat úplně od podlahy, protože nic
předdefinovaného na to není. Načítač WAVů a přehrávač s mixérem jsou
v jednotce Zvuky.
Mám grafiku a myš, teď by se hodila nějaká tlačítka,
dialogová okna a tak.
I to se dá zařídit, mám na to jednotku Woknows 4. Na první
pohled vypadá dost složitě, ale zase toho docela dost umí.
Tabulka period tónů k vestavěné proceduře sound. Třeba se to bude někomu hodit...
Tón | C | Cis | D | Dis | E | F | Fis | G | Gis | A | B | H | # |
Perioda | 131 | 138 | 147 | 156 | 165 | 175 | 184 | 196 | 208 | 220 | 233 | 248 | # |
Tón | C1 | Cis | D | Dis | E | F | Fis | G | Gis | A | B | H | # |
Perioda | 262 | 278 | 293 | 310 | 329 | 347 | 372 | 390 | 415 | 438 | 463 | 492 | # |
Tón | C2 | Cis | D | Dis | E | F | Fis | G | Gis | A | B | H | C3 |
Perioda | 524 | 551 | 592 | 627 | 666 | 695 | 743 | 780 | 841 | 888 | 940 | 999 | 1065 |
Programy a hry se zdrojovým kódem
Drobotina, pro kterou se nevyplatí psát samostatné články:
Jestli jste si stáhli některou z mých jednotek, možná se vám budou hodit editory na fonty, myší kurzory, palety a rozložení kláves.
Utilitky pro práci se soubory:
Porovnávač vám
řekne, kde přesně se dva textové soubory liší. Recoder převede
texťák z jednoho kódování češtiny do jiného. CR+- mění formát konce
řádků z LF na CRLF a naopak. Kill Read-Only hromadně
ruší atribut "jen pro čtení". Řezník dělí soubory
na kusy a Skládač
je zase slepuje.
Stavíte papírové modely? Pak by se vám mohlo hodit něco na rozvinutí kuželů, boků pneumatik, seřízlých válců a průniku dvou válců do roviny.
Pak tu ještě máme variaci na téma Mandelbrotova množina a jednoduchý řešič Sudoku.
Kdyby vás zajímal zbytek, podívejte se támhle.
Brutal sudoku solver v 1.5
MKeyB
M-Tetris
ClerkBuffer
PCX view
Puzzle
CopyFile2
TextScroll
pUsher v 1.0
Mandelbrotova množina
Housenka v 1.1
Dungeon
Želvička karetka v 1.0
Light
Nightwalker v 0.5
Bakterie (Game of life) v 1.0
Grafák v 1.0
String Replace
SinCos
Mystify
onvoH šachy v 0.1
Materiály
Palm OS Pascal compiler
COVOX - udělejte si za půl hodiny svou zvukovou kartu
Co se řeší ve škole
Většina těchto prográmků vznikla jako odpověď na časté dotazy začátečníků nebo stylem "zajímavá úloha - schválně, jestli to taky zvládnu". Ve zdrojových kódech většinou komentuju i věci, které normálně považuji za samozřejmost. K přeložení nejsou potřeba žádné jednotky.
- Hledání největšího a nejmenšího prvku pole a třídění
- Kontrola prvočíselnosti a rozklad na prvočinitele
- Slovní vyjádření čísel
- Počítání s trojúhelníky
- Šablona pro obousměrné spojové seznamy
- Třídění algoritmem Quicksort
- Textová hra o hledání potopeného pokladu
- Vyhodnocování matematických výrazů
- Vyhodnocování matematických výrazů
- Výpis ASCII tabulky a čtení kódů kláves
- Pár dalších a podrobnější anotace najdete tutam.
Návody a taháky
Sbírka textů, které by se mohly hodit. Vše ve formátu TXT bez hacku a carek.
- Základy programování v Pascalu - příručka pro začátečníky
- Jak na ukazatele - operace s ukazateli, dynamické proměnné, spojové seznamy, dynamická pole a procedurální proměnné
- Objektově orientované programování - ano, i v TP je to možné
- Chybové hlášky Pascalu - co která přesně znamená, co ji způsobuje a jak se jí zbavit
- Direktivy překladače - podrobný průvodce těmi nejužitečnějšími
- SVGA pro začátečníky - rozsáhlý text, ze kterého se naučíte hodně o Assembleru, grafice a nízkoúrovňové práci
Další texty postupně zpracuji do formy samostatných článků.
Odkazy
Zde je pár odkazu na stránky o Pascalu...
Michael Stavěla - Sbíka několika pěkných programů a her se zdrojovými kódy
Zde naleznete odkazy na freeware IDE, ve kterých můžete v daném jazyce programovat
Stáhnout
Stažením následujícího souboru souhlasíš s licenčními podmínkamiStaženo 3058x (6.56 MB)