Tätä on varmaan kysytty miljoonat kerrat mutta en haulla onnistunut löytämään vastausta (huonot hakusanat?) joten kysynpä kuitenkin.
Eli tossa oppaassa kerrotaan hyvin kuinka liikutaan ja sillee mut ei mainintaakaan siitä kuinka saisi helpoiten ladattua kartan. Tuskin ketään kiinostaa "random mapia" käyttää ja on hikinen homma itse laittaa tähän tyyliin: "map(1, 1) = 1, map (1, 2) = 2" jne. Lähinnä ajattelen että kuinka onnistuu pelikentän kokoisesta tekstitiedostosta lataamaan kentän, kun se on tekstitiedostoon laitettu ihan niillä merkeillä jotka pelaajalle tulisi näkyä.
Voit kokeilla näin aluksi ihan ASCII-muotoista tiedostoa:
Esim.
################## # # # # # #### ## # # # # # # # # ##################
Ja lataus kutakuinkin:
OPEN "tiedosto" FOR INPUT AS #1 FOR y = 1 TO Korkeus FOR x = 1 to Leveys INPUT #1, Map(x, y) NEXT x NEXT y CLOSE #1
Tarkempaa tietoa annan opassarjan myöhemmissä osissa. Osa 3 muuten on jo lähestulkoon valmis.
Edit: Ja tuo INPUT-rivi tosiaan lukee koko seuraavan rivin, eli sitä ei voikaan käyttää ihan noin. Lue kaikki rivit ja erottele niistä sitten merkit x-akselille. Homma riippuu tietysti myös siitä, missä muodossa data on.
Muuten kuin hunajavohveli esitti, mutta lukeminen kannattaisia kait tehdä silloin tällä tavalla (eli luetaan binäärimuodossa, tavu kerrallaan):
DIM str AS STRING * 1 OPEN "tiedosto" FOR BINARY AS #1 FOR y = 1 TO Korkeus: FOR x = 1 TO Leveys GET #1, str ' Rivinvaihtoa ei silti oteta karttaan mukaan. if str <> CHR$(13) THEN ' Näin mikäli Map on tekstimuotoinen Map(x, y) = str END IF NEXT x, y CLOSE #1
Binäärimuoto on tosiaan parempi. Pistin äskeisen vähän turhan hätäillen. Binäärimuodon aion esitellä myös oppaissa.
Edit: Tiedostonkin pitää tosin olla binäärimuodossa, jos tuota sqwiikin koodia käyttää.
Tein kuten sqwiik neuvoi mutta ei pelitä, jos laitan tarkalleen kuten neuvossa, tulee valitus "Type mishmatch" ja jos korvaan "Dim str as string * 1" tällä: "Dim str as integer" niin tulee valitus "bad record number"...
Johtuu siitä että STR on varattu sana... Toimii sitten kun vaihdat tuon muuttujan nimeä joksikin paremmaksi, esim.
DIM merkki AS STRING * 1 ... GET #1, merkki
Yksi virhe tuossa vielä on. Toinen parametri on kohta, josta luetaan, muuttuja annetaan kolmantena.
GET #1, , merkki
Eli jättämällä lukukohta tyhjäksi luetaan seuraavasta kohdasta.
itelläkin on sama "pikku"ongelma tähän liittyen.. oon ottanut kentän (level1.txt) ja oon piirtänyt sen... okei.... alan liikkua ja meen kentän seinien läpi.. :F ja haluaisisin että näin _EI_ tapahtuisi.. joten pientä neuvoo mullekin kiits
Oletko lukenut tuota opassarjaani? Kannattaa toteuttaa niin, että lataat kentän vain taulukkoon ja piirrät taulukosta päin. Seinienkään läpi ei silloin pääse, jos tiedot tarkistetaan taulukosta.
joo... nyt kaikki on kunnossa... tein juuri niinkuin sanoit hunajavohveli ja kiitos sulle :D
Aihe on jo aika vanha, joten et voi enää vastata siihen.