#include <iostream>
#include <conio.h>
#include <windows.h>
#include <vector>
using namespace std;
struct position{
int x;
int y;
//
int stx;
int score;
/*TEMPORARY */
int px;
int py;
};
vector <int> tabx;
vector <int> taby;
void fr(){
tabx.push_back(35);
taby.push_back(35);
}
void topedge(){
for(int i = 0; i < 15; i++)
{
cout << "_";
}
}
int vx(position *player ,vector <int> &taby, int a){
for(int i = 0; i < player->score; i++)
{
if(tabx[i] == a)
return 1;
}
return 0;
}
int vy(position *player , vector <int> &taby, int a){
for(int i = 0; i < player->score; i++)
{
if(taby[i] == a)
return 1;
}
return 0;
}
void view(position *player, position *fruit){
topedge();
cout << endl;
for(int i = 0; i < 15; i++)
{
cout << "|";
for(int j = 0; j < 14; j++){
if(player->score < 1){
if(player->x == i && player->y == j)
{
cout << "S";
}
else if(fruit->x == i && fruit->y == j){
cout << "X";
}
else{
cout << " ";
}
}
else{
if(player->x == i && player->y == j)
{
cout << "S";
}
else if(vx(player, tabx,i) == 1 && vy(player, taby, j) == 1)
{
cout << "0";
}
else if(fruit->x == i && fruit->y == j){
cout << "X";
}
else{
cout << " ";
}
}
}
cout << "|" << endl;
}
topedge();
}
void logic(position *player)
{
char znak;
if(!kbhit()){
}
else{
znak = getch();
}
znak = static_cast < int >( znak );
switch(znak)
{
case 'w':{
player->stx = 1;
}
break;
case 's':{
player->stx = 2;
}
break;
case 'a':{
player->stx = 3;
}
break;
case 'd':{
player->stx = 4;
}
break;
}
}
void logic2(position *player)
{
if(player->score > 0){
if(player->score > 1){
for(int i = player->score-1; i > 0; i--)
{
tabx[i] = tabx[i-1];
taby[i] = taby[i-1];
}
}
tabx[0] = player->x;
taby[0] = player->y;
}
switch(player->stx)
{
case 1:
{
player->x--;
}
break;
case 2:
{
player->x++;
}
break;
case 3:
{
player->y--;
}
break;
case 4:
{
player->y++;
}
break;
}
}
void secondlogic(position *player, position *fruit){
if(fruit->x == player->x && fruit->y == player->y)
{
fruit->x = (rand() % 13) + 1;
fruit->y = (rand() % 13) + 1;
player->score++;
fr();
}
/*Border */
if(player->x == 15)
{
player->x = 1;
}
if(player->y == 14)
{
player-> y = 1;
}
if(player->x == 0)
{
player->x = 14;
}
if(player->y == 0)
{
player->y = 14;
}
}
void print2(position *player, vector <int> &pastx, vector <int> &pasty){
for(int i = 0; i < player->score; i++)
{
cout << "\n" << pastx[i] << "--" << pasty[i] << endl;
}
}
int main()
{
int gameover = 1;
position player;
position fruit;
player.score = 0;
player.x = rand() % 14 + 1;
player.y = rand() % 14 + 1;
fruit.x = (rand() % 14) + 1;
fruit.y = (rand() % 14) + 1;
fr();
while(gameover != 0){
view(&player, &fruit);
logic(&player);
logic2(&player);
secondlogic(&player, &fruit);
Sleep(100);
system("CLS");
}
return 0;
}