dynamic variable tracking

0

Ave !

Temat brzmi groźnie co nie? ;)

Rozchodzi się tu o pewną rzecz która objawić by się miała naszym oczom dopiero przy pisaniu konsoli

Chodzi mianowicie o to by w konsoli poprzez specjalne polecenia można było zmieniać pewne wartości w grze np. grawitacje, nazwę gracza, przyspieszenie czy też FOV. ;)

Na początku wydaje się to trudnym zagadnieniem, ale tak chyba nie jest.
Chodzi mi o jakiś globalny system przechowywującym zmienne.
Do takiego systemu możemy wysłać zmienną, zmienić jej wartość czy też pobrać jej wartość.

Są 2 problemy i wiążące się z nimi pytania

  1. Różne zmienne są różnych typów jak je pogodzić w jednym systemie ??

  2. Czy zmienne w takim systemie przechowywać jako wartości czy jako referencje??

Z góry dzięki za odpowiedzi. :D
Pozdro Bolek.

0

Globalny system przechowujący zmienne, hmmm. Wydaje mi się, że pytasz o język skryptowy... LUA</url>

0

bynajmniej nie.

0

Napiszę jak ja bym to zrobił:

struct editable_variable
{
    void* variable;
    char name[10]; //powinno wystarczyć
    int type;
}

pole type miałoby przechowywać informacje o typie (np. 0 to bool, 1 to int). Można to rozwiązać za pomocą enum. Takie struktury można dodawać do drzewa binarnego, aby ułatwić wyszukiwanie.

Chcąc zmienić wartość zmiennej, najpierw znajdujemy strukturę po nazwie. Teraz przydałaby się funkcja, np:

bool ModifyVariable(editable_variable* ev, char* new_value)

która w zależnośc od typu zmiennej (za pomocą switch) będzie wyciągać ją z łańcucha tekstowego i rzutując wskaźnik variable na odpowiedni typ, zmieniać wartość.

To chyba wszystko ;-) Tylko trzeba pamiętać aby na początku programu stworzyć odpowiednie struktury i wrzucić je do "kontener'a", np. drzewa binarnego lub kontenera map z stl (klucz-nazwa, struktura, może być bez nazwy, jako wartość).

Dodawanie zmiennych można zautomatyzować za pomocą jednej funkcji :d

1 użytkowników online, w tym zalogowanych: 0, gości: 1