Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: FreeBASIC: Freebasic: Nuolista liikkuminen

Sivun loppuun

Syntty [26.08.2008 11:32:41]

#

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...

Grez [26.08.2008 12:18:23]

#

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)

Metabolix [26.08.2008 12:27:04]

#

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. ;)

Grez [26.08.2008 12:29:18]

#

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.

Metabolix [26.08.2008 12:34:08]

#

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$. :)

Grez [26.08.2008 12:36:09]

#

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.

Syntty [26.08.2008 15:44:37]

#

Juu, eli siirryin WASD ohjauksen käyttöön mutta yritän tuota nuolinäppäin ohjausta kokeilla saamaan toimimaan.

hunajavohveli [26.08.2008 15:54:20]

#

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.

Syntty [26.08.2008 15:55:14]

#

Juu tuo numpadi onkin mulla jo käytössä :)

Syntty [26.08.2008 21:10:29]

#

Noniin eli sain tuon toimimaan kun katsoin läpi yhden Putkan koodivinkeistä!


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta