Das gehört zwischen die beiden.
GeheZu((int)spielerX, (int)spielerY);
Console.Write('@');
}
private static void RendereStartistik(int frames, char nächsterBuchstabe, DateTime spielbeginn)
{
GeheZu(1, 0);
Console.Write(frames);
GeheZu(10, 0);
Console.Write($"zu fressen: {nächsterBuchstabe}");
GeheZu(20, 0);
TimeSpan spieldauer = DateTime.Now - spielbeginn;
GeheZu(40, 0);
Console.Write($"Spieldauer: {spieldauer.ToString()}");
}
private static bool AktualisiereDasSpiel(ref double spielerX, ref double spielerY, List<int> körper, ref int körperlänge, int richtungX, int richtungY, ref double geschwindigkeit, TimeSpan vergangeneZeit, char[]spielfeld, ref char nächsterBuchstabe, DateTime spielbeginn)
{
// deltaX = +1 * ( 5 * 0.005)
bool spielMussBeendetWerden = false;
double deltaX = richtungX * (geschwindigkeit * vergangeneZeit.TotalMilliseconds);
double deltaY = richtungY * (geschwindigkeit * vergangeneZeit.TotalMilliseconds * 0.65);
if ((spielerX + deltaX) != spielerX || (spielerY + deltaY) !=spielerY)
{
if (körper.Count > körperlänge)
{
int koordinateDesKörperendes = körper.ElementAt(0);
int körperendeX = koordinateDesKörperendes % Console.WindowWidth;
int körperendeY = koordinateDesKörperendes / Console.WindowWidth;
GeheZu(körperendeX, körperendeY);
Console.Write(" ");
spielfeld[koordinateDesKörperendes] = ' ';
körper.RemoveAt(0);
}
}
// Die aktuelle Spilerposition merken bevor sie verändert wird!
int altesX = (int)spielerX;
int altesY = (int)spielerY;
// Neue Spilerposition setzen
spielerX = spielerX + deltaX;
spielerY = spielerY + deltaY;
// Die Spielfeldgrenzen prüfen, ob der Spieler das Spielfeld
// auch nicht verlässt
spielerX = Math.Max(1, spielerX);
spielerX = Math.Min(spielerX, Console.WindowWidth - 2);
spielerY = Math.Max(1, spielerY);
spielerY = Math.Min(spielerY, Console.WindowHeight - 2);
// In die Körperliste wird die neue Spilerpsition NUR aufgenommen,
//falls sie sich von der alten Spielerposition unterscheidet!
int x = (int)spielerX; //Hilfvar. um int-WEr fpr das "if" zu haben
int y = (int)spielerY;
if (altesX != x || altesY != y)
{
int spielerkoodinate = (y * Console.WindowWidth) + x;
körper.Add(spielerkoodinate);
}
if (spielfeld [(y*Console.WindowWidth) + x] !=' ')
{
if (spielfeld[(y * Console.WindowWidth) + x] == nächsterBuchstabe)
{
if (nächsterBuchstabe == 'Z')
{
spielMussBeendetWerden = true;
}
else
{
spielMussBeendetWerden = false;
}
// wir fressen als nächsten Buchstaben, jenen in ASCII-Tabelle
//der einen Code + 1 aufweist!
nächsterBuchstabe++;
körperlänge += 2;
spielfeld[(y * Console.WindowWidth) + x] = ' ';
geschwindigkeit += 1.25 / 1000.0;
}
else
{
if (altesX == x && altesY == y && spielfeld[(y * Console.WindowWidth) + x] == '@')
{
spielMussBeendetWerden = false;
}
else
{
spielMussBeendetWerden = true;
}
}
}
if (altesX != x || altesY != y)
{
spielfeld[(y * Console.WindowWidth) + x] = '@';
}
return spielMussBeendetWerden;
}
private static bool BearbeiteSpieleEingabe(ref int richtungX, ref int richtungY)
{
bool spielIstZuEnde = false;
if (Console.KeyAvailable) // Test, ob eine Taste gedrückt wurde
{
ConsoleKeyInfo tastenInfo = Console.ReadKey(true);
if (tastenInfo.Key == ConsoleKey.Escape)
{
spielIstZuEnde = true;
}
if (tastenInfo.Key == ConsoleKey.LeftArrow)
{
// Corsor links
//spielerX--;
richtungX = -1;
richtungY = 0;
}
if (tastenInfo.Key == ConsoleKey.RightArrow)
{
//Corsor rechts
//spielerX++;
richtungX = +1;
richtungY = 0;
}
if (tastenInfo.Key == ConsoleKey.UpArrow)
{
//Cusor auf
// spielerY--;
richtungX = 0;
richtungY = -1;
}
if (tastenInfo.Key == ConsoleKey.DownArrow)
{
//Cusor ab
//spielerY++;
richtungX = 0;
richtungY = +1;
}
}
return spielIstZuEnde;
}