20. Říjen 2017 - 03:27

Autor Téma: Engine pro textovku a problémy spojené s programováním.  (Přečteno 2471 krát)

Lisiak4

  • Nováček
  • *
  • Příspěvků: 43
    • Zobrazit profil
Ahoj,

Začal jsem dělat nový engine pro textovku. Mám jistý problém, kterého jsem si všiml až teď. Dělám to v Pythonu, přesněji v AmigaPythonu, tedy pro Amigu v prostředí Workbenche. Tedy bez použití GUI, protože AmigaPython pod OS 3.x GUI nemá :). Rozhodl jsem se použít proporcionální font - vypadá to lépe než s fixním fontem, který má u každého písmene stejnou šířku. Z toho vyplýva jistý problém. Prostředí Workbenche má tendenci zalamovat řádek textu dříve, než je žádoucí. Protože počíta s použitím písmen, které mají všechny stejnou šířku. Takže mi sám od sebe zalomí text asi v 3/4 šířky zobrazované části. Tohle není takový problém. Stačí změnit 1 parametr ve fontu písma a namluvit Workbenchi, že je písmo užší. Tím začne dávat písmen na celkovou šířku obrazovky více a já si už zalomení textu zadám kdy chci a potřebuji. Proporcionální text má u každého písmene paramatr své šířky, takže pokud píšu řetětez znaků, odstupy písmen jsou v pořádku. Pokud ale chci zadat co se má udělat, třeba něco prozkoumat, tak logicky se do prostředí Workbenche píše vše né po větách, ale po písmenu a tam mi už parametr, který se postará o to, aby byla věta napsána se správnymi odstupy písmen (pro každé písmeno je parametr jeho šířky) nepomůže, písmeno se tedy napíše, ale Workbench posune kurzor zpět a tedy když napíšu třeba "pom" ve výsledku to vypadá jako "pon" - "m" mi to usekne co vypadá blbě. Tohle by vyřešilo použití fixního fontu, ale já se proporcionálního nechci vzdát. Je pár možností a chci radu, jak tedy udělat ovládaní, aby jsem obešel nevzhledně vypadajíci text, který zadáva uživatel. Ostatní psaní textu, co je pro místnost není problém. Uvedu všechny možnosti i ty šílené :) Možnost použítí fixního fontu se vylučuje :). Jen ještě uvedu, že nemám přístup k testu klávesy. Tedy pro činnost musí být příkaz potvrzen klávesou Enter, jinak by jsem to udělal přes klasické menu a třeba šipky.

Možnosti:
- text, který bude zadávat uživatel nebude videť a pak se mu oznámí, co udělal, nebo co se pokusil udělat - ano tohle je ta šílenejší varianta

- smířit se s tím, že budu moci psát jen do 3/4 z celé šířky obrazovky - pak bude i text zadán od uživatele se správnym rozostupem - tohle se mi moc nelíbí

- udělat celkový princip řízení hry pomocí čísel - kdy by se následek špatného rozestupu písmen zadaných uživatelem minimalizoval - zadávalo by se jen 1 číslo, něco ve stylu:

1 - prozkoumej - 1 - koš
                       - 2 - skřín

A né nechci programovat v nečem jiném a ano chci to udělat pro Amigu :).

Díky za rady! :).

pedromagician

  • Plný člen
  • ***
  • Příspěvků: 187
    • Zobrazit profil
    • pedromagician.com
Re: Engine pro textovku a problémy spojené s programováním.
« Odpověď #1 kdy: 14. Březen 2014 - 08:05 »
co tak pouzit na command line(prikazy) iny font? neviem aký más design

z popisovaneho sa mi najviac pozdava 2ha moznost,  pisat do 3/4 obrazovky

Lisiak4

  • Nováček
  • *
  • Příspěvků: 43
    • Zobrazit profil
Re: Engine pro textovku a problémy spojené s programováním.
« Odpověď #2 kdy: 14. Březen 2014 - 21:12 »
Mám font, ktorý sa mi veľmi páči, ale včera večer som prišiel ešte na jednu možnosť. To že možem písať aj za danú 3/4 obrazovky viem, ale nejako ma včera nenapadlo, ako zistit, kde sa text presne nachádza pred nechceným zalomením riadku - písmená majú roznu šírku... . Až neskor ma napadlo, že si vlastne možem urobit nejakú tabulku, kde budem mať info, ktoré písmeno má presne akú šírku. Na základe toho si budem vedieť spočítať presne polohu časti konkrétneho textu. Ja už potom len udám dalšiu polohu textu, ktorá bude navezovať na tú predošlú. Toto budem robiť pri každej skončenej vete, poprípade slove podľa situácie. Takto okno Workbencha donútim, aby písal aj v danej 4/4 obrazovky a nebudem musieť zmeniť parameter fontu, ktorý mi zabezpečí, že aj písaný text od užívateľa sa bude zobrazovať správne.

Inak díky za tvoj názor :)

panprase

  • Administrátor
  • Superčlen
  • *****
  • Příspěvků: 565
    • Zobrazit profil
Re: Engine pro textovku a problémy spojené s programováním.
« Odpověď #3 kdy: 15. Březen 2014 - 08:39 »
Mno tak na todle sem se vyloženě Lišáku chtěl zeptat, jestli jsi zkoušel si zjistit šířku znaků, buď nějakou funkcí, kterou tedy určitě AmiPython nemá a nebo ručně, prostě zvesela spočítat podle znaků délku řádku, pak zalomit a začít na novém.

Pak bych měl další otázku, jak načítáš ten font, počítám, že ho máš nastavený rovnou ve WB, takže nezapomeň až budeš hru šířit, že ne každý bude mít ten font který používáš.

Vstup z konzole bych nechal prostě vyloženě na zadávání příkazů, žádné volby 1 - prozkoumej 2 - cihlu 3 - vápno atd... to se tak pak ta hra fakt kurevsky blbě hraje.
První den přiletěli, druhý den uděřili, třetí den zvítězili

Lisiak4

  • Nováček
  • *
  • Příspěvků: 43
    • Zobrazit profil
Re: Engine pro textovku a problémy spojené s programováním.
« Odpověď #4 kdy: 15. Březen 2014 - 09:39 »
Ten font načítám přímo pomocí AmigaPythonu. Pomocí AmigaPythonu mám přístup k AmigaDosu. Takže si načítám font, který vyberu já. No spíše jde o to, že mi při použití proporcionálního fontu Workbench zalamuje řádky předčasně. Pokud ale vím, kde se jaké slovo nachází na obrazovce, tak pak v kritickém místě tedy ve 4/4 části obrazovky zadám pozici textu pomocí ESCape sekvence právě v oblasti 4/4 obrazovky (a tím ho donutím pokračovat nejaký úsek textu v oblasti, kde by jinak již text Workbench nepsal) a i jiných oblastí, které budu chtít, aby měl celý text místnosti rovnoměrný vzhled - nebo aby to vypadalo co nejlépe.

Jo tohle vše dělám, aby vstup zadával uživatel :)

lanex

  • Nováček
  • *
  • Příspěvků: 8
    • Zobrazit profil
Re: Engine pro textovku a problémy spojené s programováním.
« Odpověď #5 kdy: 18. Březen 2014 - 12:19 »
Na funkci zjištování šířky textu nemusíš dělat žádné tabulky. Navíc za týden se ti začne líbit jiný font a tvoje tabulka bude k prdu :) V AmigaDOSu tahle funkce je. Pošleš jí konkrétní text a ona ti vrátí šířku v pixlech. Funkce je schovaná v graphics.library (2.0>), funkce TextLength (offset -$36). Třeba ti to pomůže :)
>> Amiga 1200, ZX Spectrum+, Didaktik Gama, http://www.ilnx.cz <<

panprase

  • Administrátor
  • Superčlen
  • *****
  • Příspěvků: 565
    • Zobrazit profil
Re: Engine pro textovku a problémy spojené s programováním.
« Odpověď #6 kdy: 18. Březen 2014 - 12:27 »
Pochybuju ze amiga python dokaze zavolat amiga knihovnu.
První den přiletěli, druhý den uděřili, třetí den zvítězili

lanex

  • Nováček
  • *
  • Příspěvků: 8
    • Zobrazit profil
Re: Engine pro textovku a problémy spojené s programováním.
« Odpověď #7 kdy: 18. Březen 2014 - 13:34 »
Lisak4 píše že jo :) ("Pomocí AmigaPythonu mám přístup k AmigaDosu") Samozřejmě přiipouštim, že Python u mě nemá skoro žádnou důvěru k takovým akcím...
« Poslední změna: 18. Březen 2014 - 13:39 od lanex »
>> Amiga 1200, ZX Spectrum+, Didaktik Gama, http://www.ilnx.cz <<

Lisiak4

  • Nováček
  • *
  • Příspěvků: 43
    • Zobrazit profil
Re: Engine pro textovku a problémy spojené s programováním.
« Odpověď #8 kdy: 19. Březen 2014 - 21:28 »
Tak daleko nejsem, aby jsem volal pomocí AmigaPythonu (AmigaDosu) Amiga knihovnu. Mám za to, že by to asi nešlo, ale nejsem si jist. Zatím si napíšu svoji vlastní tabulku, kterou mám z 1/3 hotovou. S tím přidaním proměnné na šířku textu jsem si hezky dal. Jsem to musel skoro celé přepsat. A ještě pořád to není uplně hotové. Taky již můžu napsat, že Workbench nemá problém psát do 4/4 (pravé části obrazocky) při proporcionálním fontu. Včera jsem na to šel špatně. Nejdříve jsem si říkal, že když budu mít vypočtenou šířku textu, za kterým bych pak chtěl psát dál (a tak donutit WB aby psal i na místo, kde tomu tak nebylo) že vozík dám na začátek obrazovky a pak skočím na vypočtenou šířku ale ani omylem. Tak jsem si říkal, že to udělám udaním pozce horizontálu a vertikálu - tomu jsem se moc nevěnoval a pak jsem zjistil, že se mi vlastně jen stačí s vozíkem vrátit o požadovanou šířku, po tom co WB předčasně zalomí řádek a vesele pak již můžu psát i na míste obrazovky, kde to bez tohodle návratu vozíku nebylo možný. Takže k tomu využiju ESCape sekvenci s pohybem vozíku smerem doleva. To jsou ale hovadiny, co se někdy musí řešit (nebo co se musí člověk naučit)... :)