Umíte někdo programovat v lispu graficky? Potřebovala bych poradit s piškvorkama.
Fórum › Funkcionální programování
Programování v Lispu
#2 Matěj Andrle
Mám vytvořenou grafickou knihovnu a pracuji s její pomocí. Jsou v ní definovány: bod, kruh, polynom...jako třídy a pomocí tohohle. Mám dále definovanou třídu pole a její metody, které do pole zakreslí kolečko nebo křížek. Dále mám definovanou hrací desku 3x3 (která se skládá z polí). Nevím, ale jak to dál spojit dohromady?
#3 Mája
Nechápu, zda se tu bavíme o GUI, či o logice v jazyce LISP... Pokud chceš cosi v GUI - třeba GTK+/2/3 (nebylo mi odpovězeno) - pak jak jsem psal, použij designer. Pokud ne - musíš mi dát vědět, pro co mám vymýšlet kód... (Pro jaké GUI - pomocí jaké knihovny.)
#6 Matěj Andrle
Podle mě GUI nemá...jsou v ní funkce, které potom využívám při konstukci nějakého grafického objektu...V kodu jsou ty funkce využívány a volány. Chtělo by to vidět.
#4 Matěj Andrle
Mám k dispozici grafickou knihovnu, která byla vytvořena v lispu. Je to kod, který jen načteme, než začneme něco vytvářet. Mohla bych poslat kód, který mám vytvořený.
#8 Matěj Andrle
Tak teda hlavní problém... Mám vytvořenou třídu jednoho políčka v piškvorkách (tedy jeden čtvereček). A druhou třídu desky, která se skládá z 9 políček. při volání mi to vytvoří normální hrací desku. Ale neumím si poradit s tím, jakým způsobem mám v desce oindexovat jednotlivá políčka. Potřebuji pak vytvořit k desce metodu, která bude volána takto například: (player-move deska 3) a na 3 políčku se mi vykreslí buďto kolečko nebo křížek. Ještě poznámka pro informaci: políčko je tvořeno pomocí takové funkce, že v sobě má jak kolečko, tak křížek, ale oba tyto objekty jsou neviditelné, takže když pak zavolám tu fci (player-move...) tak se mi změní jenom stav políčka.
#9 Mája
Bože - to nesouvisí s GUI! Knihovnu zahodit a jít na to objektově. Tedy prvně vytvořte jádro aplikace - to musí být všude přenositelné - do jakéhokoliv projektu, na jakoukoliv platformu... Tomu se říká vrstvení objektové aplikace. Až druhá, či třetí vrstva naplní graficky onen obecný logický kód. A v tom obecném nárysu bude jen políčkové pole int. Logicky je jasné, že pole pro piškvorky bude konstantě velké - případně bude možnost zvolit si obtížnost - velikost. Tak jako tak to bude jen 2D int pole příznaků. 0 pro prázdné pole a zbytek bude indikovat přítomnost prvku hráče. 2D pole by šlo třeba takto:
http://stackoverflow.com/questions/18062016/common-lisp-how-to-set-an-element-in-a-2d-array
No a nebo to nechte na normálním listu s dalším - pomocným, kterýžto bude obsahovat šířku (horizontální počet políček) a zbytkem přiřadí k číslu hráče jeho signaturu... (kolečko, čtvereček...) V druhé vrstvě bych spojil obecný kód - herní mapu s obrázky - signaturami. Kde bude v onom poli 0, tam připadne defaultní políčko, kde bude hráč, tam jeho... Díky tomuto modulu bude snadné testovat, zda hráč spojil 4 řady - stačí projet pole a otestovat každou skupinu signatur - algoritmů je na to dost. No a až v poslední vrstvě bych všechny obrázky vykresloval do nějakého GUI. Jak píši - GTK+/... Nikde není třeba uchovávat více, než číslo, či string/... - obrázek políčka. Ačkoliv ztěžovat si toto jednoduché C++/D2/C# hraní použitím spíše funkcionálního jazyka mi přijde vcelku zbytečné. Když už, šel bych do Luy...
#3 Mája
S grafikou jsem v Lispu dosud nedělal, ale mohu to zkusit. Pokud jsou dosavadní zdrojáky velké, zkus je nahrát třeba na https://gist.github.com
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Síťové programování pod Windows a programování internet — založil Hanzis
Programování — založil Yety
Programování her — založil Michalek
Programování.. — založil Fliper
Programování 2D her — založil Lorin