Eli olen tekemässä QB:llä peliä jossa on rata joka pitää suorittaa läpi. Liikkumisen vielä onnistui, mutta sitten kun esteet pitäsisi saada pitäviksi, niin tuli ongelmia.
Periaattessahan se menn näin:
IF ukonedessä = jotain THEN eiliikute ELSE liikutaan END IF
mutta mitenkäs toi kävisi käytännössä?
siis toihan on VB:tä
Voih. Tuliko mieleen, että sen ehkä voisi portata Qb:lle?
no tuohan oli ihan maailmaa mullistava ajatus... hmmm...
siis tuota tarkoitin etten osaa (varsinaisesti) yhtään VB:tä
No ei ne nyt niin erilaisia kieliä ole, etteikö tuosta pystyisi sisäistämään sitä ideaa. Korvaat vaan mielessäs ne PictureBoxien koordinaatit paikkamuuttujilla.
:D seuraaavalla kerralla käytän aivoja enkä persettä :D
Paitsi etten siltikkään osaa.
Niin siis käsititkö tuon vielä vai et? Tarkistat IF-lausekkeella, onko kohdassa johon ukkoa yritetään liikuttaa estettä. Jos ei ole, niin sitten liikutat ukkoa siihen ja jos on niin sitten et liikuta.
En ole kokeillut, mutta epäilen toimivaksi.
'Oletetaan että kohdassa 18 on seinä IF ukkox = 17 AND INKEY$ = "d" THEN SOUND 300,12: LOCATE 3,2:PRINT "Emme enää liiku"
Latska: hassu koodi sulla. Ei koskaan voi olettaa, etä jossakin on este; pitää aina tehdä laajennettava järjestelmä, joka sopeutuu esteen siirtymiseen.
IF ukkox = estex + 1 AND ukkoy = estey THEN PRINT "vasemmalla on este!" IF ukkox = estex - 1 AND ukkoy = estey THEN PRINT "oikealla on este!" IF ukkox = estex AND ukkoy = estey - 1 THEN PRINT "alhaalla on este!" IF ukkox = estex AND ukkoy = estey + 1 THEN PRINT "ylhäällä on este!"
Tietäkää, että en ole koskaan tehnyt QB:llä yhtäkään ohjelmaa.
Metabolix kirjoitti:
Latska: hassu koodi sulla. Ei koskaan voi olettaa, etä jossakin on este; pitää aina tehdä laajennettava järjestelmä, joka sopeutuu esteen siirtymiseen.
Tuli mieleeni että senhän voisi tehdä niin, että aluksi koko taso taulukkoon ja aina kun este liikkuu, merkataan taulukkoon vanhaan kohtaan tyhjää ja uuteen kohtaan este.
Ja kun painamme jotain, niin mennään subiin/funkkariin. Jossa tarkistetaan latskan menetelmällä että mitä edessä on. :)
nomic kirjoitti:
Tuli mieleeni että senhän voisi tehdä niin, että aluksi koko taso taulukkoon
Käytännössähän jonkinlaista taulukkoa on pakko käyttää. Jos kentällä on 500 objektia, niin ei niille pirukaan kirjoita erikseen tarkistusta :)
Totta kai taso kannattaa pistää taulukkoon, eihän siitä nyt mitään tule, jos näytöltä aletaan tarkistaa, missä on este. Eihän se, mitä näytöllä näkyy sitä paitsi ole se, mitä kentässä todella on. Esimerkiksi jonkin ruudun päällä voi olla vaikka joku monsteri, jolloin ruudussa tietysti näkyy se monsteri, vaikka siinä kohtaa kenttää voi olla esim. ruohoa. Merkkigrafiikkapelihän on kuitenkin tilepohjainen, eikä graafisessa tilemoottorissakaan näytöltä tarkistaminen onnistu. Jos tilemoottori on kunnollinen, sitä pitää voida soveltaa niin merkeillä kuin pikseleilläkin tehtyyn grafiikkaan.
esteet[10] = "#,@,%,..,..,.." map[80,25] <- taulukko
ladataan map-taulukkoon arvot jostain tiedostosta..
map[10,5] = "#" <- seinä
sitten mainloopissa liikutaan oikealle
if key = 'right arrow' { playerX = playerX + 1 tarkasta_seinät }
tarkasta_seinät { tile = map[playerX,playerY] 'TILE jossa ollaan on pelaajan kohta FOR temp = 1 to max_esteet if tile = esteet[temp] then x = x - 1; exit for }
näin siis pelaaja liikkuu takaisin samaan paikkaan jossa olikin jos siis on liikkunut TILEEN joka kuuluu este-taulukkoon huono ja hankala mutta muuta en keksi.
lainaus:
Käytännössähän jonkinlaista taulukkoa on pakko käyttää. Jos kentällä on 500 objektia, niin ei niille pirukaan kirjoita erikseen tarkistusta :)
tota siis juuri tarkoitin, itse aikoinaan kun loin kolme bottia niin tein jokaiselle tarkistukset erikseen kunnes tajusin että tehdäänpän se näin sittenkin ;)
Aihe on jo aika vanha, joten et voi enää vastata siihen.