D
// Snake.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
//
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <String>
#include <conio.h>
using namespace std;
void Feld_Z();
void spielen();
int Score = 0;
int Highscore = 0;
int Level = 1;
int Geschwindigkeit = ( 1/Level ) * 100;
int breite = 25;
int höhe = 20;
char Feld[20][25] = {{ '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' }, // 0 = nichts , 1 = Schlange , 2 = Frucht , 3 = Wand
{ '#' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , '#' },
{ '#' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , '#' },
{ '#' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , '#' },
{ '#' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , '#' },
{ '#' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , '#' },
{ '#' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , '#' },
{ '#' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , '#' },
{ '#' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , '#' },
{ '#' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , '#' },
{ '#' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , '#' },
{ '#' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , '#' },
{ '#' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , '#' },
{ '#' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , '#' },
{ '#' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , '#' },
{ '#' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , '#' },
{ '#' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , '#' },
{ '#' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , '#' },
{ '#' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , '#' },
{ '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' , '#' }};
int Frucht = 0;
int xFrucht = rand() ;
int yFrucht = rand() ;
char Schlange[] = {'O'};
int x = 5;
int y = 10;
int Länge = 0;
void Leerzeichen(int x) { for(int i = 0 ; i < x ; i++){ cout << " ";}};
void Leerzeilen(int x) { for(int i = 0 ; i < x ; i++){ cout << endl;}};
// /////////////////////////////////////////////////////////// FUNKTIONEN
void set_console(short hight, short width, LPCTSTR title) {
HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
SMALL_RECT size;
COORD b_size;
size.Left = 0;
size.Top = 0;
size.Right = width;
size.Bottom = hight;
b_size.X = width+1; //breite+1
b_size.Y = hight+1; //höhe+1
SetConsoleWindowInfo(hCon, true, &size);
SetConsoleScreenBufferSize(hCon, b_size);
SetConsoleTitle(title);
}
void MoveForward()
{
do
{
x++;
Feld[y][x-Länge-1] = ' ';
spielen();
Sleep(Geschwindigkeit);
} while(_kbhit() == 0);
}
void MoveBack()
{
do
{
x--;
Feld[y][x+Länge+1] = ' ';
spielen();
Sleep(Geschwindigkeit);
} while(_kbhit() == 0);
}
void MoveUp()
{
do
{
y--;
Feld[y+Länge+1][x] = ' ';
spielen();
Sleep(Geschwindigkeit);
} while(_kbhit() == 0);
}
void MoveDown()
{
do
{
y++;
Feld[y-Länge-1][x] = ' ';
spielen();
Sleep(Geschwindigkeit);
} while(_kbhit() == 0);
}
void spawn_fruit()
{
yFrucht = yFrucht % ((höhe-2)-2)+2;
xFrucht = xFrucht % ((breite-2)-2)+2; //rand()%(maxzahl-minzahl)+minzahl
Feld[yFrucht][xFrucht] = '@';
}
void Feld_leeren()
{
for(int j = 1 ; j < höhe-1 ; j++)
{
for(int i = 1 ; i < breite-1 ; i++)
{
Feld[j][i] = ' ';
}
}
}
void Feld_Z()
{
system("cls");
Leerzeilen(2);
for(int j = 0 ; j < höhe ; j++)
{
Leerzeichen(5);
for(int i = 0 ; i < breite ; i++)
{
cout << Feld[j][i];
}
cout << endl;
}
}
void spielen()
{
Feld[y][x] = Schlange[0];
Feld_Z();
Leerzeilen(2);
cout << "Score:" << Score;
if(Schlange[0] == Feld[yFrucht][xFrucht])
{
Länge++;
Feld[y][x-Länge] = Schlange[Länge];
Score = Score + 100;
spawn_fruit();
}
if(Schlange[0] == Feld[y][0] || Schlange[0] == Feld[y][25] || Schlange[0] == Feld[0][x] || Schlange[0] == Feld[20][x])
{
system("cls");
system("pause");
}
if(Score > Highscore)
{
Highscore = Score;
}
}
void Spiel()
{
Feld_leeren();
spawn_fruit();
system("color 0E");
while(true)
{
Feld[y][x] = Schlange[0];
Feld_Z();
Leerzeilen(2);
cout << "Score:" << Score ;
_kbhit();
if(_kbhit())
{
char Befehl = _getch();
switch(Befehl)
{
case 'w': MoveUp();
break;
case 's': MoveDown();
break;
case 'a': MoveBack();
break;
case 'd': MoveForward();
break;
}
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, "German");
set_console( 26 , 79, _T("Snake V1.1"));
Spiel();
}