Fájlban pozicionálás

Fájlban pozicionálás
2015-03-25T08:40:34+01:00
2015-03-25T09:17:13+01:00
2022-12-02T08:15:43+01:00
Ternius
Üdv!

Egy Kalandjátékot szeretnék csinálni (Régi lapozgatós szerepjáték könyvek sémájára), de elakadtam.

A kalandot megírtam. Minden sor végén számmal megadtam a játékos választási lehetőségeit (pl: 1# ha balra fordulsz a folyosón. 2# ha jobbra fordulsz). Nincs ötletem, hogyan valósítsam meg, hogy a program a játékos által begépelt értékre ugorjon a fájlon belül. Valakinek van valami ötlete?
Mutasd a teljes hozzászólást!
Először kellett volna programozni és utána kalandot írni

Egyébként ha elfér a memóriában akkor én beolvasnám az egész fájlt, nyertünk annyit hogy már csak a memóriában kell keresni.
Ha nem ezt teszed akkor soronként be kellene olvasni a fájlt és keresni-keresni-keresni amíg meg nincs az adott pont. Gondolom szöveges fájlt be tudsz olvasni soronként, az adott sztringben meg keresni karaktert. Ha megvan a speciális karakter akkor utána szerepeljen egy sorszám, az mondja majd meg, hogy jó helyen jársz e (vagy az, hogy hanyadszor találtad meg az aktuális karaktert). De byte-onként is fel lehet dolgozni a beolvasott adatokat, nem muszáj sztringként. A speciális karakter is csak egy szám.

Minden ilyen pontot speciális karakterrel, vagy sztringgel kell jelezni, mert azokat könnyű keresni, egy # ugye nem nagyon fordul elő a normál szövegben, ez is egy jó elválasztó karakter. Valami más hasonló karaktert rakj minden "szoba" elé, és akkor a keresés: Elindulsz az elejéről, számold hogy hányszor találkoztál az adott karakterrel, ha ez megegyezik a keresettel akkor megállsz. Ha a memóriában van az egész fájl akkor ez gyors.
Esetleg előre kikeresed az összeset és egy tömbben letárolod előre, hogy melyik "szoba" melyik pozícióban található. Ugyanezt megteheted a fájlra is, és akkor megnyitás, pozicionálás és olvasás. (Pascalban volt SEEK utasítás a típus nélküli fájlokhoz, valami hasonló biztos van C-ben is.)
Mutasd a teljes hozzászólást!

  • Nekem van: fseek - C++ Reference

    Lehet pl. minden szöveg fix méretű, a szóközöket lecsíped kiiratáskor. Az oldalszámot (vagyis a bekezdésszámot, ami ezekben a könyvekben is van) pedig megszorzod a bekezdés max hosszával, így odaugrasz a fájlban. Tudom, nem szép megoldás, de kezdőnek gyakorlásnak még megteszi.
    Mutasd a teljes hozzászólást!
  • Először kellett volna programozni és utána kalandot írni

    Egyébként ha elfér a memóriában akkor én beolvasnám az egész fájlt, nyertünk annyit hogy már csak a memóriában kell keresni.
    Ha nem ezt teszed akkor soronként be kellene olvasni a fájlt és keresni-keresni-keresni amíg meg nincs az adott pont. Gondolom szöveges fájlt be tudsz olvasni soronként, az adott sztringben meg keresni karaktert. Ha megvan a speciális karakter akkor utána szerepeljen egy sorszám, az mondja majd meg, hogy jó helyen jársz e (vagy az, hogy hanyadszor találtad meg az aktuális karaktert). De byte-onként is fel lehet dolgozni a beolvasott adatokat, nem muszáj sztringként. A speciális karakter is csak egy szám.

    Minden ilyen pontot speciális karakterrel, vagy sztringgel kell jelezni, mert azokat könnyű keresni, egy # ugye nem nagyon fordul elő a normál szövegben, ez is egy jó elválasztó karakter. Valami más hasonló karaktert rakj minden "szoba" elé, és akkor a keresés: Elindulsz az elejéről, számold hogy hányszor találkoztál az adott karakterrel, ha ez megegyezik a keresettel akkor megállsz. Ha a memóriában van az egész fájl akkor ez gyors.
    Esetleg előre kikeresed az összeset és egy tömbben letárolod előre, hogy melyik "szoba" melyik pozícióban található. Ugyanezt megteheted a fájlra is, és akkor megnyitás, pozicionálás és olvasás. (Pascalban volt SEEK utasítás a típus nélküli fájlokhoz, valami hasonló biztos van C-ben is.)
    Mutasd a teljes hozzászólást!
  • ui: Ha én gépelem be, hogy hanyadik pontra ugorjak, akkor tévedhetek is, meg csalhatok is. Később érdemes megcsinálni úgy, hogy a gép felsorol pár választási lehetőséget és csak azok közül választhassak, mást ne.

    ui2: Ilyen játékok írásához tökéletesen megfelel a HTML nyelv, minden szoba külön fájl, a választási lehetőségek meg egy-egy link. Gyerekjáték benne ilyet írni és könnyebb is eljuttatni a játékosokhoz.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd