C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
class Program
{
static int width = 20;
static int height = 20;
static int score = 0;
static int delay = 200;
static bool isGameOver = false;
static Direction direction = Direction.Right;
static Random random = new Random();
static List<int> snakeX = new List<int>() { 0 };
static List<int> snakeY = new List<int>() { 0 };
static int foodX;
static int foodY;
enum Direction
{
Up,
Down,
Left,
Right
}
static void Main()
{
Console.CursorVisible = false;
Console.SetWindowSize(width + 1, height + 1);
Console.SetBufferSize(width + 1, height + 1);
ConsoleKeyInfo keyInfo;
Task.Run(() => GenerateFood());
while (!isGameOver)
{
if (Console.KeyAvailable)
{
keyInfo = Console.ReadKey(true);
switch (keyInfo.Key)
{
case ConsoleKey.UpArrow:
if (direction != Direction.Down)
direction = Direction.Up;
break;
case ConsoleKey.DownArrow:
if (direction != Direction.Up)
direction = Direction.Down;
break;
case ConsoleKey.LeftArrow:
if (direction != Direction.Right)
direction = Direction.Left;
break;
case ConsoleKey.RightArrow:
if (direction != Direction.Left)
direction = Direction.Right;
break;
}
}
MoveSnake();
if (CheckCollision())
{
isGameOver = true;
Console.Clear();
Console.WriteLine("Game Over! Your Score: " + score);
}
Thread.Sleep(delay);
}
Console.ReadLine();
}
static void MoveSnake()
{
Console.Clear();
for (int i = snakeX.Count - 1; i > 0; i--)
{
snakeX[i] = snakeX[i - 1];
snakeY[i] = snakeY[i - 1];
}
switch (direction)
{
case Direction.Up:
snakeY[0]--;
break;
case Direction.Down:
snakeY[0]++;
break;
case Direction.Left:
snakeX[0]--;
break;
case Direction.Right:
snakeX[0]++;
break;
}
for (int i = 0; i < snakeX.Count; i++)
{
Draw(snakeX[i], snakeY[i], i == 0 ? "■" : "□");
}
Draw(foodX, foodY, "●");
Console.SetCursorPosition(0, height);
Console.WriteLine("Score: " + score);
}
static void Draw(int x, int y, string symbol)
{
Console.SetCursorPosition(x, y);
Console.Write(symbol);
}
static void GenerateFood()
{
foodX = random.Next(0, width);
foodY = random.Next(0, height);
while (true)
{
if (!snakeX.Contains(foodX) && !snakeY.Contains(foodY))
break;
foodX = random.Next(0, width);
foodY = random.Next(0, height);
}
Draw(foodX, foodY, "●");
}
static bool CheckCollision()
{
if (snakeX[0
Bu oyunu oynamak için yılanı yönlendirmeniz gerekmektedir. Yılanın başı olan "■" simgesiyle temsil edilir ve yemek olarak da "●" simgesi bulunur. Oyunun amacı, yılanın yemekleri yiyerek puan kazanmasını sağlamaktır. Oyun başladığında yılan otomatik olarak hareket etmeye başlar.
Yılanı yönlendirmek için yukarı, aşağı, sola veya sağa ok tuşlarını kullanabilirsiniz. Yön tuşlarına basarak yılanın hareket yönünü belirleyebilirsiniz. Hedef, yılanın yemekleri yiyerek mümkün olduğunca uzun olmasını sağlamaktır.
Yılanın kendi vücudu veya oyun alanının kenarlarına çarpması durumunda oyun sona erer ve "Game Over" mesajıyla birlikte kazandığınız puan ekranda görüntülenir.
Oyunda her yemek yendiğinde puanınız artar ve yılan daha da uzar. Oyun ne kadar ilerlerse, yılanın hızı artar ve zorluk seviyesi yükselir.
Oyuna başlamak için konsol ekranında "dotnet run" komutunu kullanarak C# kodunu çalıştırabilirsiniz. Yılanı yön tuşlarıyla yönlendirerek oyunu oynayabilirsiniz.