Dziwne działanie vectorór

0

Witam,
mam napisaną grę saper w C++ gdzie plansza jest dwuwymiarową tablicą.
Kod programu: http://wklej.org/id/1749491/

Taki to wygląda w konsoli:
user image
(wartość pół jest początkowo na 0 - celowo odkryte)

Jednak jestem zmuszony przepisać program z tablic na wektory, żeby na początku móc wybrać sobie rozmiar mapy (obecnie rozmiar tablicy jest zdefiniowany w stałych).

Zdefiniowałem dwuwymiarowy wektor typu struct i pozamieniałem tablice na niego. Tylko pojawił się problem wykraczający poza moją wiedzę i zupełnie nie rozumiem dlaczego, ale przy przypisywaniu wartości 0 pojedynczemu elementowi z tego dwuwymiarowego wektora po kilku dalszych iteracjach przypisywana jest jakaś liczba z kosmosu. I nie wiem czemu tak się to dzieje. :/

Kod programu: http://wklej.org/id/1749480/
Tak to wygląda w konsoli:
user image

Nakieruje mnie ktoś w czym może być problem?

1

(obecnie rozmiar tablicy jest zdefiniowany w stałych).

A kto Ci broni zrobić cośtam** mapa = new cośtam[szerokość][wysokość];?

Twoim problemem jest to, że błędnie generujesz tę mapę, na oko poprawnie będzie:

      for(int y=0;y<ylength;y++) {
            vector<field> tmp;

            for(int x=0;x<xlength;x++) {
                field tmpField;
                tmpField.value = 0;
                tmpField.display = false;
                tmpField.flag = false;

                tmp.push_back(tmpField);
            }

            gridOuter.push_back(gridInner);
        }

I w imię wszystkiego co dobre, zmieńże nazwę tego pola klasy na coś sensownego, jak choćby map, a nie jakieś gridyoutry i gridyintry i kij wie w sumie po co one są oraz czym się różnią.

Btw, język angielski bogaty jest w pełno różnych słów, niektórymi z nich są choćby width oraz height - wykorzystaj je rozsądnie, a nie length czy xlength.

1

to gridOuter.push_back(gridInner); powinieneś mieć dla zewnętrznej pętli a nie dla wewnętrznej

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