• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    GREAT_RChlubeníčko - Co se vám povedlo? Čím se chcete pochlubit? - Pojďte se pochválit
    Povedlo se vám něco a nemáte to komu říct, protože je to prostě váš osobní win, vaše osobní čárka? Udělali jste dobrej skutek? Dobrej koláč? Podařilo se vám úspěšně pomstít svoji čest? Dejte to sem.

    Hned po spuštění skupiny padla otázka, jaký je rozdíl oproti diskuzi [Achievement unlocked]. Tady je laťka na zemi a můžete oslavit jakkoliv malé nebo velké všední nebo nevšední úspěchy.
    rozbalit záhlaví
    ZSIS
    ZSIS --- ---
    tak, jak jsem koncem ledna povesil to ptaci budku...
    [ZSIS @ Chlubeníčko - Co se vám povedlo? Čím se chcete pochlubit? - Pojďte se pochválit]

    dneska koukam z okna, ze se tam mota jakasi sykorka. a mam radost, ze to nekomu slouzi.
    GILHAD
    GILHAD --- ---
    GILHAD: A ještě kde to vlastně roste:
    Tady zveřejňuju repozitář o tom hardwaru https://github.com/githubgilhad/MegaHomeFORTH
    současná verze je MHF-002, KiCad plánky tady https://github.com/githubgilhad/MegaHomeFORTH/tree/master/HW/KiCad/MHF-002
    (jsou tam i soubory, co poslat do Číny, aby zpátky přišly plošné spoje, pětice stojí i s dopravou asi 10$, tedy za cenu oběda radost pro pět lidí :)

    Pak je teda potřeba ještě ta atmega2560 z Arduino Mega Pro (1 z číny i sdopravou tak za 350,-kč a je v tom i krystal a pár dalších věcí) a pár dalších, ale výrazně levnějších integráčů a trochu odporů a kondíků a LEDky, což jsou položky spíš haléřové, než korunové :)

    Software teď dělám novou verzi tady https://github.com/githubgilhad/memxFORTH-asm
    vše potřebné je v adresáři SW2 https://github.com/githubgilhad/memxFORTH-asm/tree/master/SW2

    a tady je samotný program na toho hada https://github.com/githubgilhad/memxFORTH-asm/blob/master/SW2/projects/FORTH_c_003/forth_words.4th/Snake.4th
    ale potřebuje ještě knihovnu https://github.com/githubgilhad/memxFORTH-asm/blob/master/SW2/projects/FORTH_c_003/forth_words.4th/lib.4th
    WOODMAKER
    WOODMAKER --- ---
    GILHAD: wow, ty jsi uplne jak osmdesatkovi programatori!
    Preju zdar nejen pri honeni hada!
    GILHAD
    GILHAD --- ---
    WOODMAKER: Jak píše DUCATIMONSTER:

    U mě to je náhodná "tráva" (zatím buď mezera, nebo speciální znak s tečkou uprostřed).
    Stejne tak ovoce se "losuje" z několika různých znaků (hvězdička, plamínek, smajlík, šnek/myš - je vidět na tom spodním).
    Jednak to vypadá, jednak to velice pomáhá se správně strefit na řádku/sloupec, kde chci sežrat ovoce, už z dálky a pak ho o jedno pole neminout.

    U mě je ta tráva náhodně losovaná a když ji přejede had, tak se zase náhodně vylosuje - mám málo paměti a tak spousta informací je pouze ve videoRAM a nikde jinde. Například z celého hada mám uložené jen hlavu a ocas (x, y a směr), tělo nikoli. (A tělo slouží ocasu jako stopa, kudy se má pohybovat). Ovoce je taky jen v obrazovce a sežrání/nárazy se taky řeší jen z videoRAM :)

    Pro demo režim jsem to upravil tak, že tam je jen jedno ovoce, když ho sežere, vygeneruje se náhodně jiné tak, aby bylo na prázdném místě.
    Hlava se vždycky podívá, kde to ovoce je (má to uloženo od generování) a kde je ona a určí směry podle vhodnosti, pak se v tom pořadí podívá, jestli tam může jít *) a když ne, zkusí další, dokud ji nezbyde poslední možnost. A v dalším kroku zase. A to je vše :D

    *) vlastní tělo je taky překážka, čímž se řeší i couvání (kousnutí se do jazyka)

    Tohle demo je takové docela minimalistické, ale ukazuje, co to dovede s videem, takže to používám jako test.
    A taky na tom testuju ten vlastnoruční FORTH, pořád ho vylepšuju technicky uvnitř.

    Například hadí tělo bylo původně 12 písmenek v řetězci (pro každý směr, kterým může přilézt a každý, kterým může odlézt je jiný kus těla, aby ho ocas zvládnul stopovat)(teda 16, aby se to snadno počítalo).
    : body_str S" abc#de#fg#hi#jkl" ; 
    Pak jsem vymyslel binární řetězec načítaný ze zásobníku, abych mohl snadno používat znaky pod 255:
    244 245 246 '#' 247 248 '#' 249 250 '#' 251 252 '#' 253 254 255 16 BINSTR body_str
    a pak ještě lepší zápis, kde to můžu generovat po libosti a nemusím to počítat ručně
    B{ body_str 244 C, 245 C, 246 C, '#' C, 247 C, 248 C, '#' C, 249 C, 250 C, '#' C, 251 C, 252 C, '#' C, 253 C, 254 C, 255 C, }B 

    Z pohledu hada je to pořád to samé, výsledkem je řetězec použitelný jako pole 4x4, ale z pohledu programátora je poslední řešení zatím nejlepší (a nejpokročilejší). A líbí se mi, jak si ve FORTHu můžu definovat i vlastní syntaxi :)

    Taky tam používám spoustu dalších pokročilejších prvků jazyka, jako třeba proměnné pro funkce, které mi umožňují "za běhu" vyměnit vstup od uživatele za výpočet "optimální" cesty pro demo a navíc slouží jako forward deklarace

    Takhle se to udělá ve FORTHu
    : DEFER CREATE , DOES> @ EXECUTE ;
    : IS IMMEDIATE [ ' TO , ] ;
    a takhle se to použije pro deklaraci
    : nop ;
    ' KEYpress DEFER get_key
    ' nop DEFER fruit_fall 
    pak to použiju v kódu (tohle je hlavní hadí smyčka, kde je vlastně celá hra)

    BEGIN
    	0 TO grow
    	move_head
    	move_tail
    	fruit_fall
    	show_score
    	is_demo IF KEYpress IF 3 TO crash THEN THEN
    crash UNTIL
    a ono to něco dělá. A o něco později napíšu

    demo_key IS get_key
    add_fruit IS fruit_fall
    a hned to dělá něco zcela jiného

    (a aby toho chlubeníčka snad nebylo málo, tak ten DOES> by mi tam normálně vůbec neměl fungovat, protože na té atmega2560 se nedá spouštět kód v RAM, ale já si na to upravil engine, že když nastavím v adrese jeden bit, tak se provede dvojitá dereference s přídavkem a tím se dostanu zase na bezpečnou půdu a funguje mi to - podrobný popis těch kejklů mám tady: http://comp24.gilhad.cz/MHF-002/FORTH/DOES_Explained.html )

    V původním hadovi byly jen jednoduché techniky, teď tam cpu co nového vymyslím, líp se testuje správnost honěním si hada, než psaním technických testů :)
    DUCATIMONSTER
    DUCATIMONSTER --- ---
    WOODMAKER: Ty tečky jsou záměrný herní grid (mřížka).
    V klasických Snake hrách (hlavně z 80. a 90. let) se hrací plocha vykreslovala právě jako pravidelná síť bílých teček. Důvody byly tyto:
    1. Viditelná mřížka pohybu
Had se pohybuje po čtvercové mřížce (např. 20×20 nebo 30×30 políček). Tečky ukazují, kde přesně jsou ty jednotlivé pozice, takže hráč vidí, kam může had vstoupit.
    2. Estetika starých počítačů / CRT monitorů
Na starých monitorech (jako ten Belinea na fotce) to vypadalo hezky a „technicky“. Plná černá plocha byla nudná, tečky dávaly hře strukturu a retro vzhled.
    3. Technický důvod
Mnoho demo verzí Snake (jako tahle „DEMO SNAKE“) používalo jednoduchý způsob vykreslování – místo prázdného pozadí se nakreslila tečka na každé volné políčko. Když had projede, tečka zmizí (nebo zůstane, podle verze).
    Takže to není náhoda ani chyba – je to úmyslný design typický pro staré hadí hry. 😊
    WOODMAKER
    WOODMAKER --- ---
    GILHAD: a proc jsou tam ty nahodne vypadajicici tecky okolo toho hada?
    GILHAD
    GILHAD --- ---
    GILHAD: Tak jsem hada ještě vylepšil, že když ho člověk nehlídá, tak se hraje sám.

    Ale když ho i tak člověk nehlídá, tak se nudí, dělá kraviny a páchá piroteskní sebevraždy :)
    GREAT_R
    GREAT_R --- ---
    HAR4NT: no však. To má být on 🙂
    HAR4NT
    HAR4NT --- ---
    GREAT_R: to je spis ta potvurka ze strechy, ten zubatej mazlicek!;)
    ZSIS
    ZSIS --- ---
    GILHAD: "avoid yourself" je takovy prima zivotni moto. bral bych na tricko.
    GILHAD
    GILHAD --- ---
    GILHAD:
    A aby toho snad nebylo málo spřáhnul se s folkáčema, tak jsem rozšířil obraz co to dá - 50x60 znaků 8x8 pixelů (400x480 pixelů na displayi pro 320x480, ale můj monitor je tolerantní :) )

    GREAT_R
    GREAT_R --- ---
    Dana tu není, je tu jen Zool

    GREAT_R
    GREAT_R --- ---
    WOODMAKER
    WOODMAKER --- ---
    vibe coding <3

    NAMATHUR
    NAMATHUR --- ---
    NAMATHUR: ehm, tak 18., už to splývá :)
    NAMATHUR
    NAMATHUR --- ---
    15. premiéra na amatérských prknech za mnou :)
    REONA
    REONA --- ---
    ZOOM mi vrátil roční poplatek, když jsem jim během 24 hodin od stržení platby napsala ticket s žádostí o courtesy refund, protože nám skončilo grantové financování. Jupíjájej!
    LIMETA
    LIMETA --- ---
    Nevzdala jsem odmítání lékařů ve městě, kde nově působím a taky jsem se nenechala uchlácholit letními termíny a vstupem do pořadníků, aby mne vůbec vzali do ordinace. Dnes jsem se objednala tam, kde jsem bydlela, nebo pracovala a na duben!
    GILHAD
    GILHAD --- ---
    GILHAD: MHF-002
    Tak už na svém vlastnoručním počítači můžu hrát vlastnoručně napsaného hada

    (To je ten slavný počítač i s monitorem a klávesnící. Had je napsaný ve vlastnoručním FORTHu)
    LIMETA
    LIMETA --- ---
    Že jsem si do servisu s autem dojela "sama". Teda, chlap jel přede mnou a navigoval, ale i to se počítá.. ne? :).
    Tak jen doufám, že na úřadu nekecala a opravdu mohu jezdit hned.
    Kliknutím sem můžete změnit nastavení reklam