Eli miten saisin tehtyä ohjelman, joka lukee txt filusta tietoa kaksiulotteiseen taulukkoon? jos tiedostossa lukee vaikka:
############### # # ###############
niin taulukon alkio 0,0 olisi vasemman ylänurkan ruutu.
Niin ja kielenä oli C++
Itse olen toteuttanut moiset kahdella sisäkkäisellä loopilla, joista ulommassa luetaan tiedostosta yksi rivi, ja sisemmässä käydään tämä rivi läpi ja tallennetaan arvot tauluun.
Ahaa, nyt tajusin :) Kiitos.
Minä itse taas kirjoitan periaatteella:
blocks (ruutujen määrä) esim. 2
0 (1. ruudun sijainti x-akselilla)
0 (1. ruudun sijainti y-akselilla)
1 (2. ruudun sijainti x-akselilla)
0 (2. ruudun sijainti y-akselilla)
Että noin eli yhdellä loopilla.
Minä taas teen yksiulotteisen taulukon, ja haen kohdan (X, Y) kaavalla (Y * Leveys + X), tai kiinnittelen 2D-taulukon osoittimet tähän yksiulotteiseen (TauluB[0] = TauluA, TauluB[1] = &TauluA[Leveys], TauluB[2] = &TauluA[2 * Leveys]). Ensimmäisellä keinolla en tarvitse looppia ollenkaan, kun tiedosto ei ole tekstinä vaan sopivina struktuureina (mikä on aika lailla välttämätöntä, jos peruspalaselle kertyy ominaisuuksia enemmän kuin yhteen tavuun (merkkiin) voi tunkea).
Konstit on monet.
Eikös olisi paljon helpompi taleentaa/avata binaarina?
Noin aloittelijalle taitaa olla helpompi muokata tasoa tekstieditorilla, ettei tarvitse väsätä omaa editoria, mutta kannattaa harkita vakavasti binäärivaihtoehtoa. Minä väänsin ensimmäisen tason peliini heksaeditorilla, ei se ihan kohtuuttoman hankalaa ollut. Tietenkin binääritiedoston ymmärtäminen ja tiedostomuodon kehittäminen on ihan asia erikseen (aloittelijalle), mutta siitä on lopulta hyötyä. Helpommalla pääsee vielä, kun tekee ohjelman, joka vain arpoo sopivasti eri palasia ja tallentaa tiedostoon, jos tason ei tarvitse olla arkkitehtuurillisesti korrekti, eli seinän ei tarvitse olla yhtenäinen. Pelin ominaisuuksia voi yleensä ihan hyvin testata, oli taso mikä tahansa.
#ifndef offtopic # define offtopic Minä puolestani luen rakenteet yleensä aina rakenteina (struct), ellei rakenne itsessään sisällä osoittimia varattuun muistiin. Tällöin sitten käytetään legendaarista muuttuja-kerrallaa-systeemiä. # undef offtopic #endif /* offtopic */
Takaisin pääaiheeseen: itse lukisin tiedoston merkki kerrallaan (fgetc) ja sijoittaisin samalla taulukkoon. Tällä tavoin selviäisi yhdellä silmukalla.
Tuon ongelmana voivat olla rivinvaihtomerkit, mutta toisaalta ne voi automaattisesti muuttaa seiniksi ladatessa...
Aihe on jo aika vanha, joten et voi enää vastata siihen.