#include<iostream>
#include<windows.h>
#include<conio.h>
#include<cstdlib>
#include<ctime>
using namespace std;
void gotoxy(int x, int y)
{
COORD c;
c.X = x - 1;
c.Y = y - 1;
SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
}
int main()
{
cout<<"SnaXY 2014 by:"<<endl<<endl;
cout<<"KAROL LASKOWSKI - Head Programist."<<endl<<endl;
Sleep(3000);
system("cls");
cout<<"Obecnie gra jest dopracowywana."<<endl<<endl;
Sleep(3000);
system("cls");
int poziom;
cout<<"Wybierz tryb gry: "<<endl<<endl;
cout<<"1. Brak mozliwosci przenikania przez sciany."<<endl;
cout<<"2. Mozliwosc przenikania przez sciany ( niedopracowane )."<<endl<<endl;
cout<<"Aby wybrac tryb gry, wpisz liczbe mu przypisana."<<endl;
cout<<"Wpisz liczbe: ";
cin>>poziom;
system("cls");
srand(time(NULL));
int max=0, death=0, wazx[100000], wazy[100000];
while(1>0)
{
int x=45,y=10,preznak=5, r=0, score=0, px, py, i=0, ostx=0, osty=0, k=0, j=-4;
char znak, pole[30][100]=
{{" "},
{" *************************************************************************"},
{" * *"},
{" * *"},
{" * *"},
{" * *"},
{" * *"},
{" * *"},
{" * *"},
{" * *"},
{" * *"},
{" * *"},
{" * *"},
{" * *"},
{" * *"},
{" * *"},
{" * *"},
{" * *"},
{" * *"},
{" * *"},
{" * *"},
{" * *"},
{" * *"},
{" *************************************************************************"}
};
cout<<"**************************************************************************"<<endl;
cout<<"* *"<<endl;
cout<<"* *"<<endl;
cout<<"* *"<<endl;
cout<<"* *"<<endl;
cout<<"* *"<<endl;
cout<<"* *"<<endl;
cout<<"* *"<<endl;
cout<<"* *"<<endl;
cout<<"* X *"<<endl;
cout<<"* *"<<endl;
cout<<"* *"<<endl;
cout<<"* *"<<endl;
cout<<"* *"<<endl;
cout<<"* *"<<endl;
cout<<"* *"<<endl;
cout<<"* *"<<endl;
cout<<"* *"<<endl;
cout<<"* *"<<endl;
cout<<"* *"<<endl;
cout<<"* *"<<endl;
cout<<"* *"<<endl;
cout<<"**************************************************************************"<<endl;
cout<<"Twoj wynik to: 0 "<<endl;
cout<<"Twoj maksymalny wynik to: "<<max<<endl;
cout<<"Zgninales juz "<<death<<" razy.";
znak=getch();
while(1>r)
{
Sleep(50);
k++;
j++;
wazx[k]=x;
wazy[k]=y;
if(k>1000)
k=0;
if(j>=0)
{
pole[wazy[j]][wazx[j]]=' ';
gotoxy(wazx[j], wazy[j]);
cout<<" ";
gotoxy(x, y);
}
if(j>1000)
j=0;
if(x==px && y==py)
{
score++;
gotoxy(16,24);
cout<<score;
if(score>max)
max=score;
gotoxy(27,25);
cout<<max;
gotoxy(x,y);
j--;
}
if(score==i)
{
px=rand()%70+2;
py=rand()%19+2;
gotoxy(px,py);
cout<<"o";
i++;
gotoxy(x,y);
}
if(kbhit()){
znak=getch();
if(znak=='A' && preznak=='8')
znak='D';
else if(znak=='D' && preznak=='0')
znak='A';
else if(znak=='W' && preznak=='9')
znak='S';
else if(znak=='S' && preznak=='6')
znak='W';
}
{
Sleep(25);
if(znak=='R' || znak=='r')
{
r++;
system("cls");
}
if(znak==97 || znak=='A') //lewo
{
if(x!=2)
{
gotoxy(x,y);
if(pole[y][x-1]==' ')
if(preznak!=8)
{
if(preznak==5) cout<<char(254);
if(preznak==0 || preznak==8) cout<<char(205);
if(preznak==9) cout<<char(187);
if(preznak==6) cout<<char(188);
pole[y][x]=char(48);
x-=1;
preznak=0;
}
}
if(poziom==2)
if(x==2)
{
gotoxy(x,y);
if(preznak!=8 && pole[y][75]==' ')
{
if(preznak==5) cout<<char(254);
if(preznak==0 || preznak==8) cout<<char(205);
if(preznak==9) cout<<char(187);
if(preznak==6) cout<<char(188);
pole[y][x]=char(48);
x+=71;
preznak=0;
}
}
gotoxy(x,y);
cout<<"X";
gotoxy(79,24);
}
if(znak==100 || znak=='D') //prawo
{
if(x!=73)
{
gotoxy(x,y);
if(pole[y][x+1]==' ')
if(preznak!=0)
{
if(preznak==5) cout<<char(254);
if(preznak==0 || preznak==8) cout<<char(205);
if(preznak==9) cout<<char(201);
if(preznak==6) cout<<char(200);
pole[y][x]=char(48);
x+=1;
preznak=8;
}
}
if(poziom==2)
if(x>=73)
{
gotoxy(x,y);
if(preznak!=0 && pole[y][2]==' ')
{
if(preznak==5) cout<<char(254);
if(preznak==0 || preznak==8) cout<<char(205);
if(preznak==9) cout<<char(201);
if(preznak==6) cout<<char(200);
pole[y][x]=char(48);
x-=71;
preznak=8;
}
}
gotoxy(x,y);
cout<<"X";
gotoxy(79,24);
}
if(znak==119 || znak=='W') //gora
{
if(y!=2)
{
gotoxy(x,y);
if(pole[y-1][x]==' ')
if(preznak!=6)
{
if(preznak==5) cout<<char(254);
if(preznak==9 || preznak==6) cout<<char(186);
if(preznak==0) cout<<char(200);
if(preznak==8) cout<<char(188);
pole[y][x]=char(48);
y-=1;
preznak=9;
}
}
if(poziom==2)
if(y<=2)
{
{
gotoxy(x,y);
if(preznak!=6 && pole[y][2]==' ' && pole[22][x]==' ')
{
if(preznak==5) cout<<char(254);
if(preznak==9 || preznak==6) cout<<char(186);
if(preznak==0) cout<<char(200);
if(preznak==8) cout<<char(188);
pole[y][x]=char(48);
y+=19;
preznak=9;
}
}
}
gotoxy(x,y);
cout<<"X";
gotoxy(79,24);
}
if(znak==115 || znak=='S') //dol
{
if(y!=22)
{
gotoxy(x,y);
if(pole[y+1][x]==' ')
if(preznak!=9)
{
if(preznak==5) cout<<char(254);
if(preznak==9 || preznak==6) cout<<char(186);
if(preznak==0) cout<<char(201);
if(preznak==8) cout<<char(187);
pole[y][x]=char(48);
y+=1;
preznak=6;
}
}
if(poziom==2)
if(y>=22)
{
gotoxy(x,y);
if(preznak!=9 && pole[2][x]==' ')
{
if(preznak==5) cout<<char(254);
if(preznak==9 || preznak==6) cout<<char(186);
if(preznak==0) cout<<char(200);
if(preznak==8) cout<<char(188);
pole[y][x]=char(48);
y-=19;
preznak=9;
}
}
gotoxy(x,y);
cout<<"X";
gotoxy(79,24);
}
if(ostx==x && osty==y)
{
r++;
death++;
gotoxy(15,26);
cout<<death;
system("cls");
}
ostx=x;
osty=y;
}
}
}
system("pause");
return 0;
}