Witam serdecznie!
Na wstępie pragnę poinformować, iż uczę się c++ z Symfonii C++ J. Grębosza oraz poradnika "Od zera do gier kodera" Xiona. Staram się czytać po działach, dlatego, że w poradniku Xiona na końcu są zadania ;)
Przerabilem teraz: http://xion.org.pl/files/texts/mgt/pdf/1_5.pdf
Jest tam zadanie: (Bardzo trudne) Ulepsz napisaną grę. Niech rozmiar planszy nie będzie zawsze
wynosił 3×3, lecz mógł być zdefiniowany jako stała w pliku game.h.
Wskazówka: ponieważ plansza pozostanie kwadratem, warunkiem zwycięstwa
będzie nadal ułożenie linii poziomej, pionowej lub ukośnej z własnych symboli.
Modyfikacji musi jednak ulec algorytm sprawdzania planszy (ten straszny :D) oraz
sposób numerowania i rysowania pól.
Wiem, że może nie mówi to dużo, ale nie jest to do końca ważne dla mojego problemu.
PROBLEM:
W pliku game.h mam zapisane między innymi:
const unsigned ile_pol = 3;
W game.cpp znajduje się przedstawienie linii tablicy(potrzebne mi to w dalszej części kodu do sprawdzenia linii w pionie, poziomie i na ukos w celu wyłapania wygranej/remisu), przy ile_pol = 3 wygląda to tak:
const unsigned int LINIE[((ile_pol*2)+2)][ile_pol][2] = { { { 0,0 }, { 0,1 }, { 0,2 } }, //gorna pozioma
{ { 1,0 }, { 1,1 }, { 1,2 } }, //srodkowa pozioma
{ { 2,0 }, { 2,1 }, { 2,2 } }, //dolna pozioma
{ { 0,0 }, { 1,0 }, { 2,0 } }, //lewa pionowa
{ { 0,1 }, { 1,1 }, { 2,1 } }, //srodkowa pionowa
{ { 0,2 }, { 1,2 }, { 2,2 } }, //prawa pionowa
{ { 0,0 }, { 1,1 }, { 2,2 } }, //ukosna lewa
{ { 2,0 }, { 1,1 }, { 0,2 } } }; //ukosna prawa
Wszystko działa jak należy przy ile_pol = 3.
-
Niestety nie mam pomysłu jak to powinno wyglądać (a co za tym idzie - jak zrobić), **aby 3 wymiarowa tablica LINIE [][][koordynaty] ** dostosowywała te kordynaty w odpowiednim miejscu odpowiednio do ile_pol;(
(Jeżeli chodzi o "resztę" gry wszystko ulepszyłem tak, że dostosowuje się do ile_pol i odpowiednio wyświetla planszę gry) -
Wiadomo, do
const unsigned ile_pol = 4
wierszy powinno być 10, kolumn 4, a kordynaty z zakresu 0-3 odpowiednio ulozone... ale jak? :D
Domniemam, że może to być przypisywanie zmiennych poprzez pętlę lub zastosowanie 'vector' o których nie mam zbytnio pojęcia w tej chwili. Jeżeli to będzie pasowało z chęcią uzupełnię swoją wiedzę w trybie natychmiastowym ;) Tak czy inaczej, najpierw muszę uzyskać informacji jak powinienem uzyskać oczekiwany rezultat i zabiorę się do roboty!!
Z góry dziękuję, miłego dnia!
PS stała ile_pol jest określana w programie, nie na bieżąco, z czego stwierdziłem, że użycie 'vector' nie jest konieczne (oczywiście mogę się mylić, uczę się :) )
Nie wiem czy dobrze myślę, ale wymyśliłem takie coś:
for (unsigned a = 0; a < ((ile_pol*2)+2); a++);
{
for (unsigned i = 0; i < ile_pol; i++)
{
for (unsigned j = 0; j < ile_pol; j++)
{
LINIE[a][i][j] = a, j;
}
}
}
tylko muszę to jeszcze dobrze połączyć i sprawdzić czy działa.
const unsigned int LINIE[((ile_pol*2)+2)][ile_pol][2] =
//{ { { 0,0 }, { 0,1 }, { 0,2 } }, //gorna pozioma
// { { 1,0 }, { 1,1 }, { 1,2 } }, //srodkowa pozioma
// { { 2,0 }, { 2,1 }, { 2,2 } }, //dolna pozioma
// { { 0,0 }, { 1,0 }, { 2,0 } }, //lewa pionowa
// { { 0,1 }, { 1,1 }, { 2,1 } }, //srodkowa pionowa
// { { 0,2 }, { 1,2 }, { 2,2 } }, //prawa pionowa
// { { 0,0 }, { 1,1 }, { 2,2 } }, //ukosna lewa
// { { 2,0 }, { 1,1 }, { 0,2 } } }; //ukosna prawa
for (unsigned a = 0; a < ((ile_pol*2)+2); a++);
{
for (unsigned i = 0; i < ile_pol; i++)
{
for (unsigned j = 0; j < ile_pol; j++)
{
LINIE[a][i][j] = a, j;
}
}
}