Yılanı Temsil Etmek
Bir Yılan oyunu oluşturmak oldukça basittir. İhtiyacınız olan ilk şey , yılanınızın vücudunu temsil etmenin bir yoludur . Yılanınızın bloklardan veya fayanslardan oluştuğunu düşünüyorsanız, vücudunuz bu blok koordinatlarının bir listesi olabilir.
Sizin durumunuzda, bir konsol uygulaması yapmak istiyorsanız, bunların her biri konsoldaki bir karakter olacaktır ve konum, konsol çıkışının bir satırına veya satırına karşılık gelecektir. Böylece bununla başlıyorsunuz:
// List of 2D coordinates that make up the body of the snake
List<Point>() body = new List<Point>();
Bu noktada listeniz boş, yani yılanınızın vücudu yok. Diyelim ki 5 boyunda bir yılan istiyorsunuz ve baş pozisyonda (5,2) başlamalı ve dibe doğru büyümeli. Oyun başladığında bu pozisyonları listeye eklemeniz yeterli, örneğin:
// 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));
}
Yılanı Oluşturmak
Oluşturmak için sadece gövde listesindeki her konuma bir karakter çizin. Örneğin yukarıdaki örnek şu şekilde çizilebilir:
...................
...................
.....O............. -- y = 2
.....#.............
.....#.............
.....#.............
.....V.............
...................
|
x = 5
Karakterin başı (listedeki ilk eleman) ve kuyruğu (listedeki son eleman) için farklı karakterler seçerek ve hatta bitişik blokların konumlarına bağlı olarak onları yönlendirerek daha karmaşık hale gelebilirsiniz. Ama yeni başlayanlar için, her şeyi bir #şey gibi yapın.
Örneğin, aşağıdaki gibi arka planı içeren bir 2D karakter dizisi ile başlayabilirsiniz:
// 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] = '.';
Ve sonra yılanın vücudu üzerinde onu diziye çekerek yineleyin:
// Render snake
foreach(Point point in body)
render[point.X, point.Y] = '#';
Ve son olarak dizi üzerinde tekrarlayın ve her satırı konsolun her satırının sonunda bir satır sonu olacak şekilde yazın.
// Render to console
for(y=0; y<height; ++y)
{
for(x=0; x<width; ++x)
{
Console.Write(render[x,y]);
}
Console.WriteLine();
}
Yılanı Hareket Ettirmek
Sonunda hareket. İhtiyacınız olan ilk şey Directionyılanı takip etmektir. Bu basit bir numaralandırma olabilir:
// Enum to store the direction the snake is moving
enum Direction { Left, Right, Up, Down }
Ve yılanı hareket ettirme, sadece son bloğu listeden çıkararak ve ön tarafa doğru yönde ekleyerek yapılabilir . Başka bir deyişle:
// 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);