if (lvl==1){for(int y=0;y<10;y++){cout << Map[y] <<endl;}}
if (lvl==2){for(int y=9;y<20;y++){cout << Map[y] <<endl;}}
cout <<"HP: "<< hp << "/100" << " Ammo: "<< ammo<< "/100" << " Keys: " <<klucz<<endl;
for (int y = 0; y < 21; y++)
{
for (int x = 0; x < 21; x++)
{
switch (Map[y][x]) //sterowanie i kolizje ponizej \/
{
case '#':Map[y][x] = 219;
case 'O':
{
if (GetAsyncKeyState(VK_UP) != 0)
{
int y2 = (y - 1);
switch (Map[y2][x])
{
case ' ':
{
Map[y][x] = ' ';
y -= 1;
Map[y2][x] = 'O';
}break;
case 'k':{klucz++;Map[y][x] = ' ';y -= 1;Map[y2][x] = 'O'; }kolizja_k();break; case '|': kolizja_kk();break;
}
}
if (GetAsyncKeyState(VK_DOWN) != 0)
{
int y2 = (y + 1);
switch (Map[y2][x])
{
case ' ':
{
Map[y][x] = ' ';
y += 1;
Map[y2][x] = 'O';
}break;
case 'k': {klucz++;Map[y][x] = ' ';y += 1;Map[y2][x] = 'O'; }kolizja_k();break; case '|': kolizja_kk();break;
}
}
if (GetAsyncKeyState(VK_LEFT) != 0)
{
int x2 = (x - 1);
switch (Map[y][x2])
{
case ' ':
{
Map[y][x] = ' ';
x -= 1;
Map[y][x2] = 'O';
}break;
case 'k':{klucz++;Map[y][x] = ' ';x -= 1;Map[y][x2] = 'O';}kolizja_k();break; case '|': kolizja_kk();break;
}
}if (GetAsyncKeyState(VK_RIGHT) != 0)
{
int x2 = (x + 1);
switch (Map[y][x2])
{
case ' ':
{
Map[y][x] = ' ';
x += 1;
Map[y][x2] = 'O';
}break;
case 'k':{klucz++;Map[y][x] = ' ';x += 1;Map[y][x2] = 'O';}kolizja_k();break; case '|': kolizja_kk();break;
}
}
}break;
}
}
}
Sleep(gamespeed);
Dodam tyko, że kod powyżej jest zamknięty w pętli "for".
Problem jest z poruszaniem, mianowicie zacina. Gdy raz nacisnę klawisz, postać (O) przeskakuje czasami o 2 miejsca.
Zmienna char Map przechowuje wszystkie pod-poziomy danego poziomu. Zastosowałem to z przyczyn praktycznych - inaczej dla kazdego z pod-poziomow musialbym kopiowac caly skrypt poruszania :/.