Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Adom tyylinen liikkuminen (QB) (VBA)

Sivun loppuun

tgunner [02.11.2004 12:47:02]

#

Tervehdys taas täältä nyyppälästä.
Olen jo kauan aikaa miettinyt oman roolipelin tekoa. Mutta nyt se on kaatumassa pieneen onkelmaan :P.
Siis ajattelin, että miten saisin @-merkin liikkumaan (se on siis hahmo.) Saattaa muuten olla tuttu liikkumis-tyyli ADOM peliä pelanneille.
Olen yrittänyt etsiä erilaisilta roolipeleille suunnatuilta sivuila, mutta turhaan.
Olette viimeinen toivoni.

- NyhvöLandian lippulaiva kuittaa

Blaze [02.11.2004 13:18:20]

#

Hausta ei voi olla löytymättä aikasempaa keskustelua aiheesta.

Koodivinkeissäkin saattaa olla. En muista QB-vinkkejä.

maka78 [02.11.2004 13:36:41]

#

Olikonhan joku locate(x,y) millä siirretään kursori johonkin kohtaan näytölle. eli liikuttaessa poistetaan merkki edellisestä kohdasta ja piirretään uuteen.

hunajavohveli [02.11.2004 13:47:22]

#

LOCATE y, x

Tosiaan määrittää, mihin kohtaan PRINT tulostaa tekstiä. Noita koordinatteja voit sitten vaihdella ja saada siten merkin liikkumaan.

tgunner [03.11.2004 13:03:52]

#

No kyllä mä sentään ton tiesin :P. Mutta en oikein osaa liikuttaa sitä @-merkkiä.
Mutta muutenkin miten se LOCATE tulee, meneekö se jotenkin LOCATE y, x
x = 122
y = 122
PRINT "@"
Noinko?

hunajavohveli [03.11.2004 13:10:44]

#

Öh, siis ensin asetetaan ne koordiaatit x,y ja vasta sitten LOCATE:lla määrätään kirjoituskohta koordinaateiksi x,y. :)
Ja sitä merkkiä liikutat muttamalla niitä koordinaatteja x,y ja sitten piirrät sen merkin uudestaan kohtaan x,y.

tgunner [03.11.2004 15:16:58]

#

No saattaisi toimia :|. Mutta kuinka PELAAJA voi ohjata sitä XD. En oikeen osaa kuten huomaatte.
Mutta silti veikaan INKEY$-jutun liittyvän asiaan.
Älkää ottako pultteja alituisesta kyselemisestäni.

-NyhvöLandian lippulaiva kuittaa

rndprogy [03.11.2004 15:24:25]

#

Ei oteta pulttia. Näihinän on kivan helppo vastata
Tässä on yksin kertainen vinkki kun alanuolta painaa niin menee alas.

X = 10:Y = 10
DO
A$ = INKEY$
LOCATE Y, X: PRINT "@"
IF A$ = CHR$(0) + "P" THEN X=X+1: LOCATE X-1, Y: PRINT " "  'Toi pee on ala nuolelle
LOOP

Latska [03.11.2004 15:24:30]

#

No jos w,s,a ja d olisivat näppäimet, niin koodi olisi tällainen.

maxx = 100
maxy = 100

ukko$ = "@"

DIM x(maxx)
DIM y(maxy)

x = 10
y = 10

DO
LOCATE y,x
PRINT ukko$
nappi$ = INKEY$
IF nappi$ = "w" THEN x = x - 1
LOOP UNTIL INKEY$ = CHR$(27)

Sorruin taas valmiin koodin antamiseen...

hunajavohveli [03.11.2004 16:08:43]

#

R.Nyrhinen kirjoitti:

Mutta kuinka PELAAJA voi ohjata sitä XD.

No kuinka nyt yleensä haluat sitä ohjattavan. Näppäimistöllä luultavasti, joten luet näppäimen INKEY$:llä ja INPUT$(1):llä, ja sitten tarkistat, että jos painettiin oikeaa nappia, niin sitten muutetaan koordinaatteja.
Latska: Mitä nuo taulukot tuossa oikein tekee? Tuossa on muuten typo: UNIL = UNTIL.

Latska [03.11.2004 16:22:11]

#

Noin mä olen aina yleensä tehnyt. En tiedä miksi. :) Siis tarkoitan taulukkoja. Tuo ainakin ekoissa räpellyksissä ehkäisi erroreita, joten se jäi voimaan.

hunajavohveli [03.11.2004 16:38:57]

#

En kyllä oikein usko, että tuo ehkäisisi mitään ongelmia, kun ei tuossa ole oikein mitään järkeäkään. :) Luot taulukot nimeltä x, ja y, etkä kuitenkaan koskaan käytä niitä? Eivät ne mitenkään liity noihin muuttujiin x ja y. Tietysti ne voit määritellä:

DIM x AS INTEGER
DIM y AS INTEGER

Mutta ei tuossa taulukoita tarvita.

tgunner [03.11.2004 20:41:48]

#

Öhöm. En haluaisi olla niuho, muttaa

maxx = 100
maxy = 100

ukko$ = "@"

DIM x(maxx)
DIM y(maxy)

x = 10
y = 10

DO
LOCATE y,x
PRINT ukko$
nappi$ = INKEY$
IF nappi$ = "w" THEN x = x - 1
LOOP UNTIL INKEY$ = CHR$(27)

Tuossa kun painoin "w" niin @-merkki liikkui vasemmalle :P.
Mutta kyllä mä taas tänään opin jotain uutta. Kannatti elää tämäkin päivä.

-NyhvöLandian lippulaiva kuittaa (Viimeisen kerran tänään [3.11])

Blaze [03.11.2004 20:50:34]

#

R.Nyrhinen kirjoitti:

Tuossa kun painoin "w" niin @-merkki liikkui vasemmalle :P

Koska sulla on locatessa x ja y väärinpäin.

hunajavohveli [03.11.2004 21:06:24]

#

Blaze: LOCATE:ssa ne tuleekin nimenomaan noin päin, ensin rivi, sitten sarkain. Vika on tuossa:

IF nappi$ = "w" THEN x = x - 1

Pitäisi olla tietysti:

IF nappi$ = "w" THEN y = y - 1

Ja R.Nyrhinen: Ota nuo taulukot pois, niitä ei tarvita.

Blaze [03.11.2004 21:23:51]

#

hunajavohveli kirjoitti:

Blaze: LOCATE:ssa ne tuleekin nimenomaan noin päin, ensin rivi, sitten sarkain.

Pöh, QB on ihan tyhmää :P

hunajavohveli [03.11.2004 21:40:22]

#

No, PRINT:hän onkin tarkoitettu tekstin tulostamiseen, eikä @-merkkien piirtelyyn, joten on se kai ihan loogista olla noin päin. Kyllä minä ainakin, kun johonkin tekstin kohtaan pitää viitata, ilmoitan ensin rivin ja sitten sarakkeen.

Antti Laaksonen [04.11.2004 00:56:24]

#

Siis tekstitilaan liittyvissä aliohjelmissa ja funktioissa (LOCATE, SCREEN) ilmoitetaan ensin rivi ja sitten vasta sarake. Sitä vastoin grafiikkatilan aliohjelmissa ja funktioissa (PSET, PRESET, LINE, CIRCLE...) ilmoitetaan ensin x-koordinaatti ja vasta sen jälkeen y-koordinaatti.

Tekaisin muuten taannoin esimerkin tekstitilassa liikkuvasta hahmosta: https://www.ohjelmointiputka.net/keskustelu/6505-qb-näppis

tgunner [08.11.2004 09:09:06]

#

No niin se taisi olla sitten tämän jutun loppu.


Sivun alkuun

Vastaus

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

Tietoa sivustosta