NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

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\Sys­tem32\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\autoe­xec.nt_ c:\windows\sys­tem32\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).

 

Pascal 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).

  • Stáhnout 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
Nehodnoceno Vydáno: 2008
 289x
Mines
 1 098x
MKeyB
Nehodnoceno
 0x
M-Tetris
Nehodnoceno
 0x
ClerkBuffer
Nehodnoceno
 0x
PCX view
Nehodnoceno
 0x
Puzzle
Nehodnoceno
 0x
CopyFile2
Nehodnoceno
 0x
BioVirus
 319x
TextScroll
Nehodnoceno
 0x
pUsher
Nehodnoceno
 239x
Mandelbrotova množina
Nehodnoceno
 0x
Housenka
Nehodnoceno
 428x
Dungeon
Nehodnoceno
 278x
Želvička karetka
Vydáno: 2002
 1 080x
Light
Nehodnoceno
 0x
Nightwalker
Nehodnoceno
 1 157x
Bakterie (Game of life)
Nehodnoceno
 1 616x
Grafák
Nehodnoceno
 377x
String Replace
Nehodnoceno
 0x
Kosmostřelci
SinCos
Nehodnoceno
 0x
Mystify
Nehodnoceno
 0x
onvoH šachy v 0.1
Nehodnoceno
 346x

Materiály

 

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.


 

 

Návody a taháky

Sbírka textů, které by se mohly hodit. Vše ve formátu TXT bez hacku a carek.

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

Dev Pascal

Lazarus FreePascal


 

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 3058x (6.56 MB)

 

Aktivity