Skocz do zawartości

Zmienna


Exigo

Rekomendowane odpowiedzi

Czy da się stworzyć zmienną w trakcie działania programu bez deklarowania w 'create'?

Można stworzyć przecież obiekt bez danej grafiki i jemu w "Create" dać zmienną :) To tak na chłopski rozum.

Raczej odradzałbym zaznaczanie tej opcji. Potem można walnąć literówkę w nazwie jakiejś zmiennej i nawet nie zorientować się, gdzie jest błąd. Wszystkie zmienne lokalne najlepiej wrzucać do Create, a globalne do jednego obiektu, który będzie tworzony jako pierwszy.
O z tą wypowiedzią na 100% się zgadzam!
Odnośnik do komentarza
Udostępnij na innych stronach

Przykładowo chciałbym zrobić coś takiego...

Powiedzmy że mam pętlę która tworzy zmienne pod względem innej zmiennej(namieszałem troche) np.

create

x = 0;

step

while (x <= 30) "dodaj" && x -= 1; (zapisując obrazowo)

To "dodaj" działa mniej więcej tak, że dodaje zmienną...

Czyli jest np. 30 zmiennych

zm1 =0;

zm2 =0;

itd... aż do 30. - Tyle zmiennych tworzy, ile "x" ma wartości

Sęk w tym że nie wiem jak to zrobić.

Odnośnik do komentarza
Udostępnij na innych stronach

GML
max=30

for(i=0;i<max;i+=1)execute_string('zm'+string(i)+'=0')

 

tylko po jaka cholibke to, skoro mozna uzyc tablic jesli jest stala numeracja?

Odnośnik do komentarza
Udostępnij na innych stronach

no to listy, gridy.. sa szybsze niz tablice i lepiej sie na nich operuje

Odnośnik do komentarza
Udostępnij na innych stronach

Tablica to taki zbiornik ze zmiennymi mających ze sobą jakiś związek. używamy ich np. w bazach danych:

GML
//tablica jednowymiarowa

pistolet[0]='pistolet';//nazwa

pistolet[1]=5;//atak

pistolet[2]=3;//czas przeładowania

karabin[0]='karabin';

karabin[1]=1;

karabin[2]=0.5;

//itd.

A wiec w powyższym przykładzie tablica pistolet przechowuje zmienne dot. pistoletu, karabin dotyczące karabinu.

Ponieważ pistolet i karabin są brońmi(broniami?) można połączyć je w jedną tablicę dwuwymiarową:

GML
//tablica dwuwymiarowa

bron[0,0]=pistolet;

bron[0,1]=5;

bron[0,2]=3;

bron[1,0]='karabin';

bron[1,1]=1;

bron[1,2]=0.5;

Pierwsza liczba w tej tablicy oznacza rodzaj tablicy, natomiast druga jej cechę. Oczywiście tablica ma o wiele więcej zastosowań. Mam nadzieję, że teraz rozumiesz :)
Odnośnik do komentarza
Udostępnij na innych stronach

tablice maja uporzadkowany zbior danych i mozna sie do nich w sposob iteracyjny dostac

Odnośnik do komentarza
Udostępnij na innych stronach

Mini-kursik :P

 

GML
zmienna[0] = 0;

zmienna[1] = 0;

zmienna[2] = 0;

zmienna[3] = 0;

zmienna[4] = 0;

zmienna[5] = 0;

...

zmienna[100] = 0;

Właśnie stworzyliśmy sobie tablicę, która posiada 100 pozycji. Ale w sumie, po cholerę nam takie coś...?

A no po to, że zamiast tego numerku (0, 1, 2, 3, 4, 5...) możemy użyć zmiennej.

 

Czyli deklarowanie tej tablicy można lepiej zrobić tak (łatwiej for, ale na repeacie chyba łatwiej Ci będzie zrozumieć...)

GML
i = 0; //To jest numer tablicy, ktory aktualnie tworzymy

repeat(100) //Kod powtorzy sie 100 razy...

{

zmienna = 0; Deklaruje tablice o numerze "i" (zmienna)...

i += 1; //Dzieki temu co wykonanie petli i bedzie podskakiwalo do gory - czyli bedzie deklarowany coraz to kolejny numer tablicy

}

Mam nadzieję, że rozumiesz :P

To nam dają tablice, że możemy się odwołać do tej, którą chcemy.

 

To w sumie wszystko... :D

O, mam pomysł. "Pseudo-notatnik".

 

 

Create

GML
//deklarujesz tablice note[] o 100 wartosciach (0-99)

//to se chyba umiesz zrobic juz :P

Draw

GML
i = 0;

text = "";

 

repeat(100)

{

text += "moja_tablica[" + string(i) + "] = " + note + "#";

i += 1;

}

 

draw_text(5, 5, text);

Step

GML
if(keyboard_check_pressed(vk_enter))

{

set_note_nr = get_integer("Podaj numer tablicy, ktora wartosc chcesz ustawic...", 0);

set_note_value = get_string("Podaj wartosc notatki", "");

 

note[set_note_nr] = set_note_value;

}

 

Przeanalizuj ten kod 5 razy, i się powinieneś zorientować, o co chodzi :)

Odnośnik do komentarza
Udostępnij na innych stronach

Różnią się tym, że mają swoje klucze, tak jak te Twoje zmienne "zmienna1, zmienna2..., zmiennaN". Tutaj masz to samo tylko że "zmienna[1], zmienna[2]..., zmienna[N]".

i można się łatwo odwołać no na przykład masz strzelniankę, w create robisz tyle tablic ile broni czyli

GML (create)
for(i=0;i<liczba_broni;i+=1)

{

naboje=10

szybkosc_ladowania=5

itd.

}

//teraz deklaruje se zmienna jaka będzie odpowiadać, za broń, którą używam

now_used=0

No i w stepie se zrobię operację...

GML (step)
if naboje[now_used]=0 then instance_destroy()

Rozumiesz? łatwy i szybki dostęp.

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