#include "stdafx.h"
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#define MAX_SNAKE 400
int field[20][20];//Das Spielfeld
int snake[MAX_SNAKE][2];//Die Schlange
unsigned int x = 5;//X-Koordinate der Schlange
unsigned int y = 10;//Y-Koordinate der Schlange
int ArrayIndex = 0;//Index der Schlange
int Control = 0;
int CurrentIndex = 0;
unsigned int randomX;//X-Koordinate der Frucht
unsigned int randomY;//Y-Koordinate der Frucht
int a, b;
//Das Feld wird anulliert
void NullField()
{
int i = 0;
int j = 0;
for(i = 0; i < 40; i++)
{
field[i][j] = 0;
for(j = 0; j < 40;j++)
{
field[i][j] = 0;
}
}
}
//Die Schlange wird anulliert
void NullSnake()
{
int i = 0;
int j = 0;
for(i = 0; i < 400; i++)
{
snake[i][j] = 0;
for(j = 0; j < 2; j++)
{
snake[i][j] = 0;
}
}
}
//Verlierbedigungen
int Lose()
{
if(x == 18 ||x == 1 ||y == 19 ||y == 0)
{
return 1;
}
else if(field[x][y] == 1)
{
return 1;
}
else
return 0;
}
////Dies sind die Bewegungsmethoden in alle vier Richtungen//////////
void MoveForward()
{
do
{
x++;
}
while(_kbhit == 0);
}
void MoveBack()
{
do
{
x--;
}
while(_kbhit == 0);
}
void MoveUp()
{
do
{
y--;
}
while(_kbhit == 0);
}
void MoveDown()
{
do
{
y++;
}
while(_kbhit == 0);
}
//////////////////////////////////////////////////////////////////////
void Move()
{
_kbhit();//Das Programm prüft, ob die Klaviatur gedrückt wurde
if(_kbhit() != 0)
{
Control = _getch(); //Hier wird geprüft, was gedrückt wurde
}
if(Control == 'a')
{
MoveBack();
}
else if(Control == 's')
{
MoveDown();
}
else if(Control == 'w')
{
MoveUp();
}
else if(Control == 'd')
{
MoveForward();
}
Sleep(500);// wartet, damit das Spiel nicht zu schnell wird
}
//Druckt das Spielmit Spielfeld aus
void PrintGame()
{
int k = 0;
int l = 0;
for(k = 0;k < 20; k++)
{
for(l = 0; l < 20; l++)
{
if(field[k][l] == 1)
{
printf("*");
}
else if(field[k][l] == 2)
{
printf("x");
}
else if(k == 0)
{
printf("-");
}
else if(k == 19)
{
printf("-");
}
else if(l == 0)
{
printf("|");
}
else if(l == 19)
{
printf("|");
}
else
{
printf(" ");
}
if(l == 19)
{
printf("\n");
}
}
if(k == 19)
{
printf("\n");
}
}
}
void ClearField()
{
int n = 0;
int o = 0;
for(n = 0; n < 20; n++)
{
for(o = 0; o < 20; o++)
{
if(field[n][o] ==1)
{
field[n][o] = 0;
}
}
}
}
void MoveSnake()
{
for ( int i = 0; i < CurrentIndex; i++ )
{
snake[i+1][0] = snake[i][0];
snake[i+1][1] = snake[i][1];
}
snake[0][0] = x;
snake[0][1] = y;
}
void DrawSnake()
{
for ( int i = 0; i <= CurrentIndex; i++ )
{
int iX = snake[i][0];
int iY = snake[i][1];
field[iY][iX] = 1;
}
}
void Food()
{
randomX = rand();
randomY = rand();
randomX = randomX%19;
randomY = randomY%19;
field[randomY][randomX] = 2;//Zufällig ein Essen auf dem Feld erscheinen
lassen
}
void main()
{
Control = 'w';
int m = 0;
int n = 0;
NullField();
NullSnake();
Food();
printf("\n\n\n");
do
{
Move();
if(randomY == y && randomX == x)//wenn die Schlange auf das Essen trifft,
{ //wird die Wachstumsmethode aufgerufen
CurrentIndex++;
Food();
}
DrawSnake();
MoveSnake();
PrintGame();
//clrscr();
ClearField();
}
while(Lose() != 1);
printf("\t\tGAME OVER\n");
}