1.
zastanawia mnie, gdy funkcja zwraca zmienną lokalną
np.
vector < mvs > possibleMoves( vector < vector < char >> & board )
{
vector < mvs > temp_vec;
...
return temp_vec;
}
co to oznacza ? np. w linii
for( mvs move: MozliweRuchy( board ) ) //generujemy vector dostepnych Ruchow
tworzona jest kopia zmiennej zwracanej z tej funkcji
powtarzamy to N razy
identyczna sytuacja powtarza się w innych funkcjach
zakładam że mogę się mylić, ale w kursach jakoś nie było to polecane.
Coś było z tym nie tak. :(
ja bym realizował to inaczej ?
2.
for( mvs move: possibleMoves( board ) )
{
....
int newScore
w każdej petli tworzysz nową zmienną
to też powtarza się w innych funkcjach
:(
3.
using namespace std;
użyj w nagłówku pliku a nie metodzie main, bo deklaracja
vector < mvs > possibleMoves( vector < vector < char >> & board )
jest czytelniejsza niż
std::vector < mvs > possibleMoves( std::vector < std::vector < char >> & board )
zwłaszcza w skali całego programu
4.
>> ilość błędów w sprawdzarce spadła
nie sugeruj się tym - z mojego doświadczenia to nic nie znaczy
5.
widzę, ze
if( board[ i ][ j ] != '.' && board[ i ][ j ] == board[ i ][ j + 1 ] )
masz w obu metodach UproszczKolumne, UproszczWiersz
myslę, ze coś z tym jest nie tak ?
poza tym, że niespełnione są warunki zadania :
* jeśli są min 3 takie same elementy w rzędzie to usuwamy je
* w usunięciu mogą brać udział jednocześnie obie osie
czyli chyba powinna byc jedna metoda
6.
int score = countBalls( board ); //liczy ilosc pozostalych kulek
?
z tego można by zrezygnować
* dodając takie pole w board
* licząc ilość kul na starcie
* redukując po każdym uproszczeniu
7.
łatwiej się czyta gdy używa się standadu nazewnictwa np.
funkcje, struktury - duza litera
zmienne z małej
8.
w obu metodach UproszczKolumne, UproszczWiersz przekazujesz
const mvs & move
nie wykorzystujesz jej,
choć nie jest to zły pomysł
bo interesują nas chyba uproszczenia wokół
//1st group
//2nd group
dla punktu wykonujemy sprawdzenia w 4 kierunkach (lewo, prawo, góra, dół)
trzeba wykonać mniej sprawdzeń
9.
zastanawia mnie linia
std::vector < best_sequence > newMoves = solve( newBoard, moves, level + 1 );
bo w wektorze który jakoś jest liniowy próbujesz zmieścić graf gry
zastanawia mnie to :)
tzn. jakoś mnie to niepokoi :(
nie widzę jak można osiągnąć realizowany cel
Powodzenia !