Elikkäs olen uusi jäsen täällä mutta tässä nyt olis tällänen onkelma että, kun nyt tuolla Freebasicilla olne ruvennut tekemään ASCII Roguelike peliä niin miten siihen voi tehdä nuolista liikkumisen? Koodi on tämä:
SELECT CASE a$ CASE "4", CHR$(0) + "K": x = x - 1 ' Painettiin 4, liikutaan vasemmalle CASE "6", CHR$(0) + "M": x = x + 1 ' Painettiin 6, liikutaan oikealle CASE "8", CHR$(0) + "H": y = y - 1 ' Painettiin 8, liikutaan ylöspäin CASE "5", CHR$(0) + "P": y = y + 1 ' Painettiin 5, liikutaan alaspäin CASE CHR$(27): END ' Lopetetaan ohjelman suoritus END SELECT
mutta sitä on hiukan muokattu omassa koodissani (muuttujan nimi...). Eli vaikka QBasicilla tuo CHR$(0) + "K" liikuttaisia hahmoa niin Freebasicilla hahmo ei liiku...
Voisin sanoa, että muuttujalle a$ ei aseteta missään arvoa, joten tuo ei voi tuollaisenaan toimia (qbasicissakaan)
Ehdottaisin, että katsot mitä näppäimistön lukemiseen käyttämäsi funktio palauttaa kun painelet nuolinäppäimiä, ja päivitetät CASEt käyttämään niitä arvoja.
Itse asiassa kun kerran QBasicissa toimii, niin taitaa käytetty funktio olla INKEY$ ja Freebasicissa tulisi laittaa noiden Chr$(0) tilalle vissiinkin Chr$(255)
Toimiiko ohjaus kuitenkin muilla näppäimillä? Siinä tapauksessa voisit selvittää, mitä a$ sisältää toimimattomien nappien kohdalla. Jotenkin näin siis:
SUB tulosta(a$) FOR i% = 1 to LEN(a$) IF i% > 1 THEN PRINT " + "; END IF PRINT "CHR$("; ASC(MID$(a$, i%, 1)); ")"; NEXT PRINT END SUB
(En takaa QB-koodin oikeellisuutta. ;)
Edit: Stilisoin vähän vastauksiani, mutta alla kuitenkin virheellinen kommenttini Metabolixille (kun en lukenut hänen koodiaan huolellisesti):
Itse en laittaisi tuohon tuota CHR$:ää, koska esim. juuri merkki 0 ei erotu ascii merkki 32:sta millään tavalla.
Grez kirjoitti:
Itse en laittaisi tuohon tuota CHR$:ää, koska esim. juuri merkki 0 ei erotu ascii merkki 32:sta millään tavalla.
Mitähän tarkoitat? Jos minun koodiani kritisoit, niin katso toki vielä uudestaan, mitä oikeastaan tulostan siinä. ^^ Jos tulostaisin CHR$-funktion palautusarvon, olisi tyhmää tehdä koko SUBista noin pitkä ja hankala, koska lopputulos olisi sama kuin yhdellä rivillä: PRINT a$. :)
Anteeksi, jotenkin onnistuneesti skippasin nuo ", "; ja ;") :D
Anyways, itse en laittaisi debug-funktioon tuollaisia koristeita, mutta toisaalta eipä ne nyt haittaakaan, niinkuin se mitä alunperin luulin siinä lukevan.
lainaus:
lisi tyhmää tehdä koko SUBista noin pitkä ja hankala, koska lopputulos olisi sama kuin yhdellä rivillä: PRINT a$. :)
No ei nyt ihan, tulisihan siinä nuo plussat väliin.
Juu, eli siirryin WASD ohjauksen käyttöön mutta yritän tuota nuolinäppäin ohjausta kokeilla saamaan toimimaan.
Roguelikeissä kannattaa noin yleensä suosia numpadia liikkumiseen. Kaikki kahdeksan suuntaa plus odottaminen (5) ovat helposti käytössä ja kirjaimet jäävät muihin käyttötarkoituksiin, joita saattaa kertyä paljonkin.
Juu tuo numpadi onkin mulla jo käytössä :)
Noniin eli sain tuon toimimaan kun katsoin läpi yhden Putkan koodivinkeistä!
Aihe on jo aika vanha, joten et voi enää vastata siihen.