Próbowałem snake napisać tak:
#include <iostream>
#include <windows.h>
#include<cstdlib>
#include<conio.h>
#include<vector>
#include <algorithm>
#include<ctime>
using namespace std;
class Plansza
{
private:
char sciana = 219;
public:
char tablica[23][70];
void wypelnij()
{
for(int i = 0; i < 23; i++)
{
for(int j = 0; j < 70; j++)
{
tablica[i][j] = 0;
}
}
for(int j = 0; j < 70; j++)
{
tablica[0][j] = sciana;
}
for(int i = 1 ; i < 23; i++)
{
tablica[i][0] = sciana;
tablica[i][69] = sciana;
}
for(int j = 0; j < 70; j++)
{
tablica[22][j] = sciana;
}
}
void rysuj() const
{
for(int i = 0; i < 23; i++)
{
for(int j = 0; j < 70; j++)
{
cout << tablica[i][j];
}
cout << endl;
}
}
};
class segment
{
public:
int x,y;
segment(int x, int y) : x(x), y(y) {}
};
class waz
{
public:
vector<segment>tab;
char znak = 219;
};
class Jedzenie
{
public:
char znak = '@';
int poz_x;
int poz_y;
Jedzenie(int x, int y) : poz_x(x), poz_y(y) {};
};
int main()
{
Plansza mapa;
Jedzenie jablko(40,15);
mapa.wypelnij();
mapa.tablica[jablko.poz_y][jablko.poz_x] = jablko.znak;
waz Waz;
segment pierwszy(39,15);
Waz.tab.push_back(pierwszy);
mapa.tablica[Waz.tab[0].y][Waz.tab[0].x] = Waz.znak;
mapa.rysuj();
char c = 'w';
int a;
int b;
int d;
int e;
for(int j = 0; ; ++j)
{
if(kbhit())
{
c = getch();
}
for(int i = 0; i < Waz.tab.size(); ++i)
{
mapa.tablica[Waz.tab[i].y][Waz.tab[i].x] = ' ';
if(i >= 1)
{
d = Waz.tab[i].y;
e = Waz.tab[i].x;
Waz.tab[i].y = a;
Waz.tab[i].x = b;
mapa.tablica[Waz.tab[i].y][Waz.tab[i].x] = Waz.znak;
}
a = Waz.tab[i].y;
b = Waz.tab[i].x;
if(i >=1)
{
swap(d,a);
swap(e,b);
}
if(i == 0)
{
switch(c)
{
case 's' :
Waz.tab[0].y++;
break;
case 'w' :
Waz.tab[0].y--;
break;
case 'a' :
Waz.tab[0].x--;
break;
case 'd' :
Waz.tab[0].x++;
break;
}
mapa.tablica[Waz.tab[i].y][Waz.tab[i].x] = Waz.znak;
}
if(Waz.tab[0].y == jablko.poz_y && Waz.tab[0].x == jablko.poz_x)
{
srand(time(NULL));
Waz.tab.push_back(segment(b,a));
jablko.poz_y = rand() % 21 + 1;
jablko.poz_x = rand() % 68 + 1;
mapa.tablica[jablko.poz_y][jablko.poz_x] = jablko.znak;
// break;
}
}
system("cls");
mapa.rysuj();
}
return 0;
}