"Yılan Oyunu" C# Kodları

TheNeferian

Basın&Medya Ekibi
27 Kas 2022
1,438
1,146
є.ค♡
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
Nasıl Oynanır?
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.
 

ACE Veen

Uzman üye
4 Şub 2023
1,105
559
Belirsiz
k
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
Nasıl Oynanır?
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.
kodlar eksik sanırım elinize sağlık
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.