Skocz do zawartości

Problem z tablicą.


Mentoss

Rekomendowane odpowiedzi

Kod wygląda w ten sposób:

 

GML
if not Lp=Lt and not Up=Ut

{

for(i=0;i<=100;i+=1)

{for(j=0;j<=100;j+=1)

{

if kratka[i,j]

{

var a, b;

 

a=i+Wh-Lt;

b=j+Hh-Ut;

 

soul[a,b]=1;

}

else

{

soul[a,b]=0;

} // Ustalenie przesuniecia

}

}

}

 

Wszystkie kratki ustawione są na 0, a jednak sprawdza ten kod. Ponadto jak sami widzicie mam tu zdefiniowaną tymczasową a, a błąd brzmi:

Unknown variable a

 

O co chodzi i jak temu zaradzić ?

Odnośnik do komentarza
Udostępnij na innych stronach

ok. nie wywala błędu, a czy działa kod dowiem się później, bo jeszcze nie zrobilem wyswietlania...

 

 

Problem nr.2:

 

GML
for(i=1;i<=99;i+=1)

{for(j=1;j<=99;j+=1) /* Petle dla i oraz j dzieki ktorym bedziemy mogli wywolac kratki */

{

 

for(m=-1;m<=1;m+=1)

{for(n=-1;n<=1;m+=1) /* dzieki kolejnym petlom dla m oraz n mozna sprawdzic obszar dookola wywolanej kratki */

{

ilosc=0;

 

if not m=0 and not n=0 and kratka[i+m,j+n]

{

ilosc+=1 /* w tymczasowej ilosc przechowujemy dane n.t. ilosci sasiadow */

}

 

}

}

 

Jak widać i oraz j są zawsze z przedziału 1 <-> 99, a m i n z przedziału -1 <-> 1.

Mimo to "Array index => 32000"

 

chodzi o:

 

if not m=0 and not n=0 and kratka[i+m,j+n]

. . . . . . . . . . . . . . . . . . . . . . . .^

 

 

 

 

EDIT:

 

Wiem o co chodzi, tylko nie wiem dlaczego... Pętla się nie zatrzymuje na 99 tylko leci dalej... do 300 doszedłem i mi się znudziło.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeżeli piszesz np. if kratka[i,j], bez znaku "=" i jakiejś wartości po tym to sprawdzasz czy wartość kratka[i,j] jest true, czyli większe od 0.5, więc chyba dlatego Ci się ta pętla wykonuje zbyt często.

E: Nie jednak nie, przecież ilosc nie ma nic wspólnego ani z pierwszą ani drugą pętlą.

E2:A może masz gdzieś w tym obiekcie inną pętle, w której wykorzystujesz zmienną "j" i "i" i to ta pętla psuje Ci tą.

Odnośnik do komentarza
Udostępnij na innych stronach

kratka ma wartość 0 albo 1. Wartość kratki nie ma wpływu na tą pętlę. Wartość i się zwiększa, ale nie zatrzymuje po 99, żeby zacząć od nowa z j=1, tylko idzie, i idzie, i idzie...

 

Edit:

teraz zauważyłem... zmienia się i, a j nie, mimo, że to właśnie j powinno najpierw wyjechać do góry

Odnośnik do komentarza
Udostępnij na innych stronach

Ale to i tak nie rozwiąże problemu, ponieważ nie ma to wpływu na pętle z "i".

E: A jaki kod masz przed tym co ukazałeś?(W tym evencie).

E2: Spróbuj zmienić nazwę zmiennej "i" na jakąś inną, może zadziała.(Zauważyłem, że w pierwszym kodzie też jej używasz.)

Odnośnik do komentarza
Udostępnij na innych stronach

nie usuwać... cały czas zostaje problem z nieistniejącym a (ten na górze)... sprawdziłem i wychodzi mi, że on tego a wgl. nie widzi. tak jakbym go nie ustawiał. przy treacie cały czas a=0... a tego nie chcę, bo mi nie będzie wyśrodkowywało kratek :( (

 

EDIT:

 

HAHAHHAHAHAHAHAHAHHAHHAHAHHA.... Już mam..

dam w e2, żebyście się mogli już wyluzować

 

E2:

 

GML
if not Lp=Lt and not Up=Ut

{

for(i=0;i<=100;i+=1)

{for(j=0;j<=100;j+=1)

{

if kratka[i,j]

{

var a, b; // TU JEST VAR

a=i+Wh-Lt;

b=j+Hh-Ut; // I USTAWIANIE

soul[a,b]=1;

}

else // A TU ELSE, CO JEST WYKONYWANE W MOMENCIE, GDY kratka[i,j]=0 :))

{

soul[a,b]=0;

}

}

}

}

 

Macie w komentarzach :)) Jest dobrze. Bd pisał, jak coś się stanie, a tymczasem wielki THX za pomoc chłopaki :)

Odnośnik do komentarza
Udostępnij na innych stronach

Niestety nie działa. Szukam od paru godzin, ale nie mogę nic znaleźć... Nie generuje błędów, ale już po pierwszym ruchu mam wszystkie kratki na 0 ustawione:

GML
/* ----------------------- SEKTOR 1, DZIAL A; SPRAWDZANIE WARTOSCI KOMORKI W NAST. POKOLENIU -------------------*/

 

 

for(i=1;i<=49;i+=1)

{

for(j=1;j<=49;j+=1) /* Petle dla i oraz j dzieki ktorym bedziemy mogli wywolac kratki */

{

 

ilosc=0;

 

for(m=-1;m<=1;m+=1)

{

for(n=-1;n<=1;n+=1)/* dzieki kolejnym petlom dla m oraz n mozemy sprawdzic obszar dookola wywolanej kratki */

{

 

if kratka[i+m,j+n]

{

if not m=0

{

if not n=0

{

ilosc+=1; /* w tymczasowej ilosc przechowujemy dane n.t. ilosci sasiadow */

}

}

}

 

}

}

 

if kratka[i,j] /* w zaleznosci od tego, czy w kratce jest komorka */

{

 

if ilosc=2 or ilosc=3 /* oraz ilosci jej sasiadow */

{

nxt[i,j]=1; /* wykonujemy odpowiednie dzialania */

}

else

{

nxt[i,j]=0;

}

}

else

{

if ilosc=3

{

nxt[i,j]=1;

}

else

{

nxt[i,j]=0;

}

}

}

}

 

/* -------------------------- SEKTOR 1, DZIAL B; ZASTOSOWANIE DO POPRZEDNIEGO DZIALU ----------------------- */

 

for(i=0;i<=50;i+=1)

{for(j=0;j<=50;j+=1)

{

kratka[i,j]=nxt[i,j];

nxt[i,j]=0;

}

}

 

P.S.: Wchodzę ze szkolnej biblioteki. Nast. wejście: chwilę po 12:35., Mam nadzieję, że do tej pory uda Wam się coś znaleźć, bo potem na informatyce powinienem to już oddać.

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ę...