Rakentelen parhaillaan ERKKI-nimistä engineä (projekteissa), ja se pohjautuu tällä hetkellä ns. paluuarvoihin. Eli kaikkea toimintaa tutkitaan funktioilla, esim.
SELECT CASE handle.map(erkki.x, erkki.y, xm, ym, SThand)
CASE happ.door.opened: PRINT "Avasit oven."
CASE happ.door.closed: PRINT "Suljit oven."
CASE happ.door.is.locked: PRINT "Ovi on lukossa!"
END SELECT
Kyseinen koodinpätkä oli suoraan erkki-pelistä. Onko kenelläkään vaihtoehtoista järjestelmää, joka olisi hieman kehitysystävällisempi?
Tässä vaiheessa perustoiminta on vielä helppo muuntaa...
Näin yhtäkkiä voisi kuvitella, että muutamiin muuttujiin määritellyillä else tai else if lausekkeilla saisi ihmeitä aikaan...
Tämä on vain villi veikkaus =)
Mitä tarkoitat kehitysystävällisemmällä? Enpä ainakaan heti keksi, miten tuota koodinpätkää voisi parantaa.
No ehhm... Katsos kun KAIKKIA funktioita kutsutaan melkein samalla tavalla. Moninaisten palautusarvojen kanssa seikkailu taasen kuluttaa ohimolohkoja, joskus jopa (melkein) tarpeettomasti. Enginessä kulkee mukana muutama universaali muuttuja, joista tietoa voi myös lukea (esim. previous.creature.link ja ftransfer), joiden kanssa sitten sompaillaan ja KUNNOLLA.
<<< Esim >>>
SELECT CASE attack.to(-1, previous.creature.link)
CASE attack.damage: PRINT "Haavoitit vastustajaa!"
END SELECT
<<< END esim >>>
Eli ylempi on vielä simppeli... Mutta jos haluaa hieman enemmän infoa tapahtumasta, niin ?? Engine käyttää tällä hetkellä juuri noita universaaleja muuttujia. attack.to:n jälkeen p.c.l on hyökätty olio, ja ftransfer olion linkki.
Eli onko tämä nyt juuri se selkein tapa käytössä, vai pitäisikö vielä kehittää?
Aihe on jo aika vanha, joten et voi enää vastata siihen.