Miten sais merkkigrafiikkapeliin niin että tiedostosta voi larata kentän. Mä aion teherä jonku pelin.
Kenttä täytyy ensinnäkin olla jollain tavalla muistissa ohjelmassa. Yksinkertainen tapa on tehdä kaksiulotteinen taulukko, jonka jokaisessa kohdassa lukee, mitä kentässä on siinä kohdassa. Eri asioita voi merkitä vaikkapa kokonaisluvuilla: 1 tarkoittaa lattiaa, 2 seinää, 3 hirviötä, 4 aarretta jne., tai miten sitten päätätkin valita. Tämän jälkeen kentän voi ladata tiedostosta lukemalla tiedot tiedostosta taulukkoon ja kentän voi näyttää lukemalla tiedot taulukosta näytölle.
Kentän sisältävä tiedosto voisi näyttää tältä:
5 5 2 2 2 2 2 2 1 1 3 2 2 1 1 1 2 2 1 4 1 2 2 2 2 2 2
Ensimmäisellä rivillä lukee kentän leveys ja korkeus, ja seuraavilla riveillä ilmoitetaan, mitä kussakin kohdassa on.
Ohjelmassa vastaavasti määritellään näin:
DIM SHARED leveys%, korkeus% DIM SHARED kentta%(50, 50)
Komento DIM määrittelee muuttujan tai taulukon, ja SHARED tarkoittaa, että muuttujaa tai taulukkoa voi käyttää suoraan aliohjelmissa ja funktioissa.
Nyt tiedostossa olevan kentän voi ladata seuraavalla aliohjelmalla:
SUB LataaKentta (tiedosto$) OPEN tiedosto$ FOR INPUT AS #1 INPUT #1, leveys%, korkeus% FOR i% = 1 TO korkeus% FOR j% = 1 TO leveys% INPUT #1, kentta%(j%, i%) NEXT NEXT CLOSE #1 END SUB
Kentän sisältävän tiedoston nimi annetaan aliohjelmalle parametrina. Aluksi tiedostosta luetaan kentän leveys ja korkeus. Tämän jälkeen luetaan taulukkoon jokaisen kentän kohdan sisältö. Nyt on valittu niin, että taulukon ensimmäinen ulottuvuus tarkoittaa leveyttä ja toinen ulottuvuus korkeutta: yhtä hyvin indeksit voisi valita toisinpäin.
Kun kenttä on luettu taulukkoon, sen voi piirtää ruudulle näin:
SUB PiirraKentta merkit$ = " #HA" FOR i% = 1 TO korkeus% FOR j% = 1 TO leveys% LOCATE i%, j% PRINT MID$(merkit$, kentta%(j%, i%), 1) NEXT NEXT END SUB
Merkkijono merkit$ sisältää jokaisen kentässä esiintyvän asian merkin. Siis lattia on välilyönti, seinä risuaita, hirviö H ja aarre A. Komento LOCATE määrittää, mihin näytön kohtaan seuraava merkki piirretään. Nyt taulukossa lukee, missä merkkijonon kohdassa piirrettävä merkki on, joten funktiolla MID$ saadaan selville jokaisen kohdan oikea merkki.
Aliohjelmia voi sitten kutsua tähän tapaan:
LataaKentta "kentta.txt" PiirraKentta
Nämä aliohjelmat ovat vain esimerkkejä, mutta niissä olevat ideat ovat käytännössä toimivia. Erityisesti aliohjelmista puuttuu virheenkäsittely, joka on välttämätöntä, jos jonkun muun on tarkoitus muuttaa kenttiä, ja hyödyksi silloinkin, jos vain itse muuttaa kenttiä.
Kiitos vinkistä. Se peli on oppaista otettu. Siinähän liikutaan @-merkillä ja b ja D seuraa
Se toimi ku vähä muokkas PiirraKentta-aliohjelmaa. Tuolle olis kiva olla kenttäeditori. Ja vielä parempi olis hiirellä varustettu.
Aihe on jo aika vanha, joten et voi enää vastata siihen.