Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 08. 03. 2012 15:20

magelord
Zelenáč
Příspěvky: 10
Reputace:   
 

Hra bludiště - Pascal (Lazarus)

Zdarec, mám za úkol naprogramovat údajně jednoduchou hru bludiště, ale ve škole nás učí jen jak vypočítat nějaký obvody čtverců, kvadratický rovnice, dph, objemy nádrže atd. , prakticky nic společnýho s tou hrou.
Tak bych chtěl poprosit o nějakou radu jak postupovat, nebo jak vůbec začít.

A ještě jsem se chtěl zeptat, jestli na to bude mít vliv když to budu programovat v Lazarusu namísto v Delphi (Codegear RAD Studio)

zadání :

1. Panáček nesmí procházet stěnami bludiště ani vyjet mimo něj.
2. Bludiště bude načteno před začátkem hry z externího předem připraveného souboru. Součástí programu budou alespoň 3 vhodně členitá bludiště.
3. Nejlepší výsledky hry budou evidovány v externím souboru a zobrazeny po jejím úspěšném dokončení. Součástí evidence bude název bludiště, jméno hráče a konečný čas hry.
4. Doporučené rozměry bludiště by měly být s ohledem na rozlišení maximálně 40 sloupců a 15 řádků.
5. Pohyb panáčka bude řešen v reálném čase, nikoli postupným vykreslováním obrazovek.
6. K programu vytvořte dokumentaci dle šablony. Součástí dokumentace budou snímky obrazovky představující funkci programu a popis algoritmu kontroly pohybu panáčka (metody detekce stěn, volného místa a cíle) pomocí vývojového diagramu nebo strukturogramu.

Doporučené symboly pro zobrazení ve hře: * - panáček, $ - poklad (cíl), mezera - volný průchod, ostatní znaky jsou stěny

Offline

 

#2 08. 03. 2012 16:27

frank_horrigan
Příspěvky: 938
Reputace:   31 
 

Re: Hra bludiště - Pascal (Lazarus)

Ahoj,

k první otázce: v čem to uděláš je úplně jedno, pokud to nemáš přímo zadáno, v jakém jazyce to máš dělat, jaké prostředí použít nebo jaký compiler/linker použít. Pokud nemáš, dělej to v tom, co máš rád, co ti vyhovuje, nebo co umíš použít.

A k takovému hrubému návrhu, jak to uchopit a kde začít: Aspoň teda můj nápad -

editor map - můžeš použít i notepad, nebo něco, co ti počítá horizontální i vertikální pozici, přesto soubory ukládá jako ASCII text - nebo si udělat vlastní editor map, který mapy bude ukládat do souboru se svým vlastním vnitřním formátem, který si pak program bude umět přečíst.

Jak bude známá použitelná mapa (nebo nevím jak to má být složité, já bych to asi řešil levelově, ale pokud to má být jednoduchý, stačí pro začátek jedna mapa).

Po startu programu si tento přečte obsah souboru, a vykreslí jej, a také si tento soubor vezme do dvourozměrného pole, a na počáteční pozici vykreslíš značku panáčka

Program bude odchytávat eventy z klávesnice nebo myši (ovládání), a testovat tyto eventy na platnost (zda se ve směru postupu nenachází "bílý" znak - případě, že ano, event se odmítne, zahodí, případně třeba pošleš na spíkr nebo operačnímu systému událost "přehraj zvuk". Pokud je pohyb platný, změní se hodnoty na jakých souřadnicích se nachází panáček, a ze skóre se odečte 1 (předpokládám skóre systémem "čím více pohybů, tím hůře").
A takto neustále...

Neumím si moc dobře představit to dělat pod čistou DOSovou konzolou, určitě bude potřeba použít nějakou platformu, na které to poběží (určitě samotný DOS, resp. dnes se používá termínu "konzola" má nějaké knihovny, které to umožní, ale s tím ti nedovedu kvalifikovaně poradit, já u konzolovek grafiku nikdy neřešil, a "kdysi dávno" si to již nepamatuju, jak jsem to dělal


The only thing worse than being wrong is staying wrong
Sun Tzu - The Art of War

Offline

 

#3 08. 03. 2012 17:17

magelord
Zelenáč
Příspěvky: 10
Reputace:   
 

Re: Hra bludiště - Pascal (Lazarus)

No v tom pascalu nás to vyučuje, takže by mu možná bylo divný kdybych to přinesl v jave.
To dvourozměrný pole, to je jako, že budu mít "na sobě" dvě vrstvy? jedno bude to bludiště a druhý bude ten panáček, kterej se tam bude pohybovat? (je to kvůli tomu aby to bylo v tom realnym čase?)

Jinak díky moc, přesně tohle jsem potřeboval.

Offline

 

#4 08. 03. 2012 18:33

frank_horrigan
Příspěvky: 938
Reputace:   31 
 

Re: Hra bludiště - Pascal (Lazarus)

Nene, dvourozměrné pole (aspoň podle mé představy) bude sloužit jako strojově čitelná - ono je jednoduchý zobrazit soubor, ale taky musíš tu "mapu" testovat znak po znaku v reakci na událost stisknutí klávesy..

Neboli deklaruješ pole typu char (character, byte , teď si nevzpomínám, jak je to v pascalu), nebo int o 15 (řádků) x 40 (sloupců) a do toho pomocí nějakých dvou cyklů budeš číst soubor s mapou, a do nějaké proměnné (resp. dvou) si budeš ukládat souřadnice panáčka - a na event budeš reagovat tak, že otestuješ příslušnou souřadnici o 1 v nějakém směru větší/menší, a pokud narazíš na ASCII hodnotu "mezera", nebo znak ' ' (mezera), tak tam dovolíš jít, změníš aktuální souřadnici a provedeš úpravu skóre...

Jak technicky udělat ten pohyb v reálném čase - pomocí nějaké nadstavbových knihoven DOS, nebo nějakého API k operačnímu systému, aby ti překresloval (v reakci na platnou událost), a negeneroval novou obrazovku (i když to jde obejít zavoláním příkazu "cls" v DOSu, to se pozná jen čtením kódu :)


The only thing worse than being wrong is staying wrong
Sun Tzu - The Art of War

Offline

 

#5 10. 03. 2012 20:32

Tomas.P
Příspěvky: 648
Reputace:   22 
 

Re: Hra bludiště - Pascal (Lazarus)

↑ magelord:
Zdravím. Když budeš mít program hotový, mohl by jsi ho tady prosím prezentovat? Samého mě zajímá, jak to realizovat. Předem děkuji

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson