Darstellung der Schlange
Das Erstellen eines Snake-Spiels ist ziemlich einfach. Das erste, was Sie brauchen, ist eine Möglichkeit, den Körper Ihrer Schlange darzustellen . Wenn Sie glauben, dass Ihre Schlange aus Blöcken oder Kacheln besteht, kann Ihr Körper einfach eine Liste dieser Blockkoordinaten sein.
Wenn Sie beabsichtigen, eine Konsolenanwendung auszuführen, ist in Ihrem Fall jedes dieser Zeichen ein Zeichen auf der Konsole, und die Position entspricht einer Zeile oder Zeile der Konsolenausgabe. Also fängst du damit an:
// List of 2D coordinates that make up the body of the snake
List<Point>() body = new List<Point>();
Zu diesem Zeitpunkt ist Ihre Liste leer, sodass Ihre Schlange keinen Körper hat. Angenommen, Sie möchten eine Schlange der Länge 5 und der Kopf sollte in Position (5,2) beginnen und nach unten wachsen. Fügen Sie diese Positionen einfach zu Beginn des Spiels zur Liste hinzu, zum Beispiel:
// Initialize the snake with 5 blocks starting downwards from (5,2)
for(int i=0; i<5; ++i)
{
body.Add(new Point(5, 2 + i));
}
Die Schlange rendern
Zeichnen Sie zum Rendern einfach an jeder Stelle der Textliste ein Zeichen. Das obige Beispiel könnte zum Beispiel wie folgt gezeichnet werden:
...................
...................
.....O............. -- y = 2
.....#.............
.....#.............
.....#.............
.....V.............
...................
|
x = 5
Sie können komplizierter werden, indem Sie unterschiedliche Zeichen für den Kopf (erstes Element in der Liste) und den Schwanz (letztes Element in der Liste) des Zeichens auswählen und sie sogar in Abhängigkeit von den Positionen der benachbarten Blöcke ausrichten. Aber für den Anfang rendern Sie einfach alles als ein #
oder etwas.
Sie könnten beispielsweise mit einem 2D-Zeichen-Array beginnen, das den folgenden Hintergrund enthält:
// Array with map characters
char[,] render = new char[width, height];
// Fill with background
for(x=0; x<width; ++x)
for(y=0; y<height; ++y)
render[x,y] = '.';
Und dann iteriere über den Körper der Schlange und ziehe ihn in das Array:
// Render snake
foreach(Point point in body)
render[point.X, point.Y] = '#';
Zum Schluss iterieren Sie noch einmal über das Array und schreiben jedes Zeichen mit einem Zeilenumbruch am Ende jeder Zeile in die Konsole.
// Render to console
for(y=0; y<height; ++y)
{
for(x=0; x<width; ++x)
{
Console.Write(render[x,y]);
}
Console.WriteLine();
}
Die Schlange bewegen
Endlich Bewegung. Das erste, was Sie brauchen, ist, die Direction
Bewegung der Schlange im Auge zu behalten . Dies kann eine einfache Aufzählung sein:
// Enum to store the direction the snake is moving
enum Direction { Left, Right, Up, Down }
Um die Schlange zu bewegen, entfernen Sie einfach den letzten Block aus der Liste und fügen ihn in die richtige Richtung auf der Vorderseite ein . Mit anderen Worten so etwas wie:
// Remove tail from body
body.RemoveAt(body.Count - 1);
// Get head position
Point next = body[0];
// Calculate where the head should be next based on the snake's direction
if(direction == Direction.Left)
next = new Point(next.X-1, next.Y);
if(direction == Direction.Right)
next = new Point(next.X+1, next.Y);
if(direction == Direction.Up)
next = new Point(next.X, next.Y-1);
if(direction == Direction.Down)
next = new Point(next.X, next.Y+1);
// Insert new head into the snake's body
body.Insert(0, next);