Kartan muoto

Home » Blogi » Kartan muoto

Säilytämme karttojamme mukavassa muodossa, jonka Flash tarjoaa: taulukot. Jos et tiedä, mikä on taulukko, avaa Flash-ohje ja lue ensin.

Kaksiulotteinen joukko

Tarvitsemme kaksiulotteisen taulukon karttaa varten. Ei, se ei ole jotain toisesta ulottuvuudesta poikkeavaa, sen ainoa taulukko, jossa matriisi on joka elementti. Sekava? Katsotaanpa.

Normaali, yksinkertainen taulukko, jonka tavalliset ihmiset voivat tehdä:

myArray=[“a”, “b”, “c”, “d”];


Se oli helppoa. Voit saada ensimmäisen elementin arvon myArray[0]:lla, joka on “a”, toisella elementillä myArray[1] on arvo “b” ja niin edelleen.

Nyt nerokas osa! Entä jos emme laita “a”, “b” ja “c” taulukkoon, vaan laitamme sinne muita taulukoita? Kyllä, voimme tehdä sen. Tehdään tässä joitain taulukoita:

a=[“a1”, “a2”, “a3”];
b=[“b1”, “b2”, “b3”];
c=[“c1”, “c2”, “c3”];
myArray=[a, b, c];


Nyt olemme julistaneet taulukon myArray ja jokainen elementti siinä on myös taulukko. Joten ensimmäisen elementin myArray[0] arvo on a ja a on joukko [“a1”, “a2”, “a3”], toisella elementillä on arvo [“b1”, “b2”, “b3”]. Jos kirjoitat:

myVar=myArray[2];
sitten myVar saa arvon [“c1”, “c2”, “c3”].

Ok, mitä sitten, voit kysyä. Meidän ei tarvitse pysähtyä tähän. Jos kirjoitat: myVar=myArray[2][0]; sitten se saa myArray “c1”:n kolmannen elementin ensimmäisen elementin arvon.

Harjoitellaan lisää. myVar=myArray[0][1] ottaa myArrayn ensimmäisen elementin (a) ja toisen elementin siitä (“a2”).

myVar=myArray[1][0] saa arvon “b1”

Saatko kuvan?

Kartan tekeminen

Ensin kirjoitamme karttataulukon, joka sisältää tiedot jokaisesta ruudusta:

myMap = [
[1, 1, 1, 1, 1, 1, 1, 1],
[1, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 1, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 0, 1, 0, 1],
[1, 0, 0, 0, 0, 0, 0, 1],
[1, 1, 1, 1, 1, 1, 1, 1]
];


Kuten näet, kartassamme on 6 riviä ja 8 saraketta. Jos sankarimme aloittaisi vasemmasta yläkulmasta, hän voisi siirtyä 8 askelta oikealle ja 6 askelta alas ennen kuin lähtee pois kartalta ja ihmettelee tuntemattomaan avaruuteen.

Mutta jotkut älykkäät ihmiset ovat jo esittäneet tärkeän kysymyksen: “Mitä nuo karttataulukon numerot tarkoittavat?”. No, käytämme joitain OOP:ia (se on Objects, mutta älä juokse karkuun, ne eivät ole niin pelottavia kuin miltä kuulostaa) luodaksemme laatat ja hallitaksemme peliämme (katso Linkit-osiosta OOP-opetusohjelma Flashille). Ilmoitamme ensin useita laattoja, ne ovat kuin malleja muille laatoille, jotka todella laitamme peliin. Sitten kierretään karttataulukon läpi ja poimitaan numerot jokaisesta sijainnista.

Jos esimerkiksi saamme numeron 1, luomme uuden laatan Tile1-mallista. Sitten pelissä, kun saavutamme kyseisen laatan, tarkistamme sen laattaobjektien ominaisuudet. Sillä voi olla monia ominaisuuksia, useimmilla peruslaatoilla on vain 2 ominaisuutta, käveltävä ja kehystetty.

Walkable on ominaisuus, joka osoittaa, voiko jokin hahmo kävellä kyseiseen ruutuun (siis olemme asettanut walkable=true) vai ei voi tehdä sitä (false). Emme käytä hitTestiä, koska hitTest on hidas eikä ole siistiä käyttää sitä laattapohjaisissa peleissä.

Kehys on ominaisuus, joka kertoo meille, mikä ruutujen elokuvaleike meidän on näytettävä kyseisessä paikassa. Sitä käytetään, kun laatat asetetaan näytölle. Koska käytämme samoja laattoja sisältävän elokuvaleikkeen jokaiselle laatalle kiinnittämällä se uudelleen, ne kaikki näyttäisivät oletuksena kehyksen 1. Lisää tästä Laattojen luominen -osiossa.

Joten jos ilmoitamme seuraavan laatan:

Tile1= funktio () {};
Tile1.prototype.walkable=false;
Tile1.prototype.frame=2;


sitten teemme samanlaisen objektin joka kerta, kun karttataulukossa (Tile1) on 1, sanomme myös, että tämän ruudun päälle ei voi astua (walkable=false) ja kyseisessä ruudussa elokuvaleikkeen pitäisi näyttää kehys 2.