Skocz do zawartości

Problem z odczytem


Jakim

Rekomendowane odpowiedzi

Stworzyłem już edytor do gry i opcję zapisu levelu do pliku. Niestety, odczyt poziomu sprawia mi trudności, ponieważ nie wiem, jak przeskoczyć do następnej linii (po wpisaniu komendy "file_text_readln(plik)" nic się nie dzieje).

 

Kod poziomu wygląda tak:

3
1
1
4
4

 

gdzie cyfry oznaczają typ przeszkody (np. 0, to puste pole, 1 to mur, 2 to blok, itd.).

 

A kod skryptu wygląda tak:

stringx = 'level.lev'
stringx = get_open_filename("Pliki poziomów (*.lev)|*.lev",'level.lev')
if stringx=''
exit

nazwa_pliku=stringx;
plik=file_text_open_read(nazwa_pliku);
pole=file_text_read_string(plik);

valuex=32
valuey=32
file_text_read_string(plik)
script_execute(edload)
file_text_readln(plik)

 

Skrypt edload służy do podstawiania obiektów (np. gdy jest numer 1, tworzy mur). Zmienne valuex i valuey oznaczają współrzędne pól.

 

Problem polega na tym, iż gdy używam komendy file_text_readln(plik) nic się nie dzieje i edytor bierze cały czas liczbę z pierwszej linijki poziomu (w tym wypadku cały czas jest to 3). Co robię nie tak?

 

Mam czas do końca tego piątku, więc bardzo proszę o szybkie odpowiedzi. Z góry thx! :).

Odnośnik do komentarza
Udostępnij na innych stronach

Pisałem już edytory =] Podpowiem ci że nie jest to najlepsze rozwiązanie.

 

Co do oczytu z pliku. Masz dwa sposoby na odczyt, oto jeden z nich (wg mnie najlepszy):

file=get_open_filename('','');

file_open_read(file);

repeat(100)
{
  text=file_read_string();
  file_readln();

  //Warunki, akcje itd.
}

Wstawiłem repeat(100) bo nie pamiętam już skryptu na odczyt ilości linii.

Odnośnik do komentarza
Udostępnij na innych stronach

Dodałem _text_, tak jak mówił RadSun i dałem wszystko w pętlę. Niestety, nadal nic się nie dzieje. O to mój kod:

 

stringx = 'level.lev'
stringx = get_open_filename("Pliki poziomów (*.lev)|*.lev",'level.lev')
if stringx=''
exit
pos='0';
postn=-1;
valuex=0;
valuey=0;
nazwa_pliku=stringx;
plik=file_text_open_read(nazwa_pliku);
numb=file_text_read_string(plik);
plikpos=0;
repeat(16)
{
file_text_read_string(plik);
postn=postn+1

//Warunki, akcje
script_execute(postnscript);
script_execute(edload);
}
postn=0
file_text_close(plik);

 

Zmienna postn oznacza pozycję (jest definiowana w skrypcie postnscript).

 

A czas leci.

Odnośnik do komentarza
Udostępnij na innych stronach

Spróbuj tak, musisz tylko dodać te wszystkie zmienne itp.:

stringx=get_open_filename("Pliki poziomów (*.lev)|*.lev",'level.lev')
if stringx='' exit
plik=file_text_open_read(stringx);
repeat(16)
{
zmienna=file_text_read_string(plik);
file_text_readln(plik)
}
file_text_close(plik);

Odnośnik do komentarza
Udostępnij na innych stronach

Działa! :D Dzięki RadSun i Tymon! Za kilka dni obejrzycie ten edytor w mojej grze, którą tu pokażę.

 

Kod wygląda tak:

 

stringx = 'level.lev'
stringx = get_open_filename("Pliki poziomów (*.lev)|*.lev",'level.lev')
if stringx=''
exit
pos='0';
postn=-1;
valuex=0;
valuey=0;
plik=file_text_open_read(stringx);
plikpos=0;
repeat(18)
{
postn=postn+1
script_execute(postnscript);
numb=file_text_read_string(plik);
file_text_readln(plik);
script_execute(edload);
}
postn=0
file_text_close(plik);

 

Prawdopodobnie opracuję na nim przykład i zamieszczę na stronie.

 

PS. Nie poradziłbym sobie bez tych porad. A tak przy okazji: wesołych świąt! :D

Odnośnik do komentarza
Udostępnij na innych stronach

Niestety, wyświetla mi się:

Czemu?

Musiałeś popełnić jakiś błąd, mi działa bezbłędnie :)

 

Nie powinno być czasem:

file_text_read_string(text)
file_text_readln(text)

?

Nie musi być. Z text czy bez i tak działa :D
Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...