Kód: Vybrať všetko
#include <windows.h>
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
using namespace std;
void fMove(int& directions, short& CurX, short& CurY);
struct bits
{
int X[100];
int Y[100];
};
struct coords
{
int X;
int Y;
};
int main()
{
HANDLE hConsole;
hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
int in=0;
int in2=75;
int pointsX;
int pointsY;
pointsX = 51;
pointsY = 10;
int points;
points = 0;
//Initializing apple cords
srand( time ( NULL ) );
coords apple;
apple.X = rand() % 49 + 1;
apple.Y = rand() % 23 + 1;
int i;
int len;
len = 2;
int dir;
dir = 1;
HANDLE hInput, hOutput;
INPUT_RECORD InputRecord;
COORD CursorPosition;
DWORD Events=0;
hInput = GetStdHandle(STD_INPUT_HANDLE);
hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleMode(hInput, ENABLE_PROCESSED_INPUT);
SetConsoleTextAttribute(hConsole, 10 );
for (i=0;i<=50;i++)
{
CursorPosition.X=i;
CursorPosition.Y=0;
SetConsoleCursorPosition(hOutput, CursorPosition);
cout <<(char)177;
}
for (i=0;i<=50;i++)
{
CursorPosition.X=i;
CursorPosition.Y=24;
SetConsoleCursorPosition(hOutput, CursorPosition);
cout <<(char)177;
}
for (i=0;i<=23;i++)
{
CursorPosition.X=0;
CursorPosition.Y=i;
SetConsoleCursorPosition(hOutput, CursorPosition);
cout <<(char)177;
}
for (i=0;i<=23;i++)
{
CursorPosition.X=50;
CursorPosition.Y=i;
SetConsoleCursorPosition(hOutput, CursorPosition);
cout <<(char)177;
}
CursorPosition.X = 5;
CursorPosition.Y = 5;
//stupid way off making game able to quit =)
int on;
on = 1;
bits bit;
for (i=0;i<=len+1;i++)
{
bit.X[i] = 5;
bit.Y[i] = 5;
}
//Writing apple before loop
SetConsoleTextAttribute(hConsole, 12 );
CursorPosition.X = apple.X;
CursorPosition.Y = apple.Y;
SetConsoleCursorPosition(hOutput, CursorPosition);
cout << "#";
//reset
CursorPosition.X = bit.X[0];
CursorPosition.Y = bit.Y[0];
while(on==true)
{
SetConsoleCursorPosition(hOutput, CursorPosition);
if(kbhit())
{
in=getch();
}
if(in==75&&in2!=77&&in2!=75)
dir = 1;
if(in==77&&in2!=75&&in2!=77)
dir = 2;
if (in==27)
on=0;
if(in==72&&in2!=80&&in2!=72)
dir = 3;
if(in==80&&in2!=72&&in2!=80)
dir = 4;
switch(in)
{
case 72:
in2=72;
break;
case 80:
in2=80;
break;
case 75:
in2=75;
break;
case 77:
in2=77;
break;
}
in=0;
fMove(dir, CursorPosition.X, CursorPosition.Y);
//make sure it doesnt run into wall
if (CursorPosition.X==50)
{
CursorPosition.X=1;
}
if (CursorPosition.X==0)
{
CursorPosition.X=49;
}
if (CursorPosition.Y==0)
{
CursorPosition.Y=23;
}
if (CursorPosition.Y==24)
{
CursorPosition.Y=1;
}
//Giving snake[] values
bit.X[0] = CursorPosition.X;
bit.Y[0] = CursorPosition.Y;
for (i=len; i>=1; i--)
{
bit.X[i] = bit.X[i - 1];
bit.Y[i] = bit.Y[i - 1];
}
//Setting position for head
CursorPosition.X = bit.X[1];
CursorPosition.Y = bit.Y[1];
SetConsoleCursorPosition(hOutput,CursorPosition);
SetConsoleTextAttribute(hConsole, 9 );
switch (dir)
{
case 1:
case 2:
case 3:
case 4:
cout << (char)254;
break;
}
SetConsoleTextAttribute(hConsole, 14 );
//typing
for (i=2; i<=len-1; i++)
{
CursorPosition.X = bit.X[i];
CursorPosition.Y = bit.Y[i];
SetConsoleCursorPosition(hOutput,CursorPosition);
cout << (char)250;
}
//using last array to clear
CursorPosition.X = bit.X[len];
CursorPosition.Y = bit.Y[len];
SetConsoleCursorPosition(hOutput,CursorPosition);
cout << " ";
//Points!
CursorPosition.X = pointsX;
CursorPosition.Y = pointsY;
SetConsoleCursorPosition(hOutput,CursorPosition);
cout << "Points: " << points;
//Reset
CursorPosition.X = bit.X[0];
CursorPosition.Y = bit.Y[0];
//Death!
for (i=2;i<=len-1;i++)
{
if ((bit.X[i]==bit.X[0]) && (bit.Y[i]==bit.Y[0]))
{on = 0;}
}
//pause between moves
Sleep(100);
}//while end bracket
system("pause");
} //main end bracket
void fMove(int& directions, short& CurX, short& CurY)
{
//Where to move
switch(directions)
{
case 2:
CurX++;
break;
case 1:
CurX--;
break;
case 3:
CurY--;
break;
case 4:
CurY++;
break;
}
}