Powiem Ci tak, robisz dziwną logikę. Zwróć uwagę na kilka rzeczy
Jeżeli będzie to gra typowa, z zadaniami btw różnica expa między poziomami musi być duża, ponieważ głupio żeby poziom 10, robiąc zadania na 1 poziom zgarniał że tak powiem równy procent ekspa co 1 poziom. Musisz zerować za każdym wbiciem poziomu, pasek postępu. Po drugie jeżeli zrobisz tak jak ja Ci to powiedziałem nie będziesz musiał każdego poziomu zapisywać w oddzielnym ifie, tablice z maksymalnym poziomem expa sobie zrób przykładowo
int exp[10]= { 200, 600, 900 , 1200, 2300, 2600, 3000 5000, 7000, 9000]; //bo 10 poziomów
int aktexp = 300;
int aktpoziom = 1;
if(aktexp == exp[aktpoziom-1]){aktexp-=exp[aktpoziom-1]; aktpoziom++; }
Nie wiem czy jest to w 100% bezbłędny kod, pisałem go na żywca bez sprawdzania. Ale myślę że jest zrozumiały