Platyna, to błąd robisz. Nikt ci przecież jedynki dodać do liczby nie broni :) .
Zrozumieć sens tablic? Jeżeli chcesz chociażby wykonywać ciągle te same działania i przypisywać wartość na podstawie takiego samego wzoru. Wtedy zauważasz, że chcesz robić ciągle to samo, jednak musiałbyś powtarzać te linijki dla każdej zmiennej osobno. A tak - po prostu tworzysz pętlę i zwiększasz wartość zmiennej odpowiedzialnej za kolejny indeks (numer) tablicy i przypisujesz nowo powstałemu elementowi wartość.
A tu takie przykłady:
Błędy:
GML
x = random( 100 ) - 200;
tablica[ x ] = "moja_wartosc";
Indeks nie może być mniejszy niż zero i musi być to liczba całkowita. Poprawnie byłoby x = max( round( random( 100 ) ) - 200, 0 )
GML
for( i = 0; i < 5; i += 1; )
{
tablica[ 0 ] = 0;
tablica[ 1 ] = 0;
tablica[ 2 ] = 0;
tablica[ 3 ] = 0;
tablica[ 4 ] = 0;
}
Ogólny bezsens - pięć razy tym samym tablicom przypisujemy te same wartości. A przecież chodzi o jak najmniejszą liczbę linijek :P . Zamieniamy te pięć zbędnych linijek na jedną: tablica[ i ] = 0; Kod jest skrócony o cztery linijki!
GML
tablica[ 1, 2 ] = wartosc;
tablica[ 3, 0 ] = wartosc;
tablica[ 2, 7 ] = wartosc;
Ogólny zbędny chaos występujący u ciebie. Tablice dwuwymiarowe do tego nie służą :) .
Dobrze:
GML
for( i = 0; i < 5; i += 1; )
tablica[ i ] = random( 400 );
Wartość tablicy może być ułamkiem, ale to wartość, a nie indeks :) .
GML
indeks = 0;
while( indeks < 5 )
tablica[ indeks ] = choose( "napis1" , "napis2", "napis3" );
Umieszczamy w pięciu elementach tablicy różne napisy :) .
Mam nadzieję, że nieco pomogłem.
Boom, podam ci praktyczne zastosowanie. Jak 100 obiektów zastąpić tablicą ;) . Stwórz room 500 x 500 pikseli oraz umieść w nim stworzony wcześniej obiekt, któremu spirte'a dawać nie musisz. Daj mu w Create:
GML
for( i = 0; i < 10; i += 1; )
for( j = 0; j < 10; j += 1; )
tablica[ i, j ] = choose( c_black, c_white ); // robimy białe i czarne pola (losowo)</span>
W evencie Global mouse left pressed:
GML
i = mouse_x div 50 * 50;
j = mouse_y div 50 * 50; // na podstawie pozycji myszki obliczamy, jakie są to indeksy tablicy
if ( tablica[ i, j ] == c_black )
tablica[ i, j ] = c_white;
else
tablica[ i, j ] = c_black; // zmiana</span>
A tak wyświetlamy kwadraty na podstawie tablic w evencie Draw:
GML
for ( i = 0; i < 10; i += 1; )
for( j = 0; j < 10; j += 1; )
{
draw_set_color( tablica[ i, j ] );
draw_rectangle( i * 50, j * 50, i * 50 + 50, j * 50 + 50, 0 );
}
Może ten przykład ci pomoże zrozumieć tablice :P .