Console Application'dan Animasyon yapmamız mümkün mü?

toprak34 (2031) 6 yıl önce sordu

Merhaba,

Console Application'dan Animasyon yapmamız mümkün mü? Animasyon dediğim şimdiki çizgi filmler gibi kaliteli şeyler değil tabiki de. Böyle *, ▄,|,-  gibi simgelerden olacak. Örneğin, bir tane roket var kalkış anının animasyonu gibi. İnternette arattım ancak hiç Türkçe kaynak bulamadım. Programlama dili farketmez.

@alattin

omercik 6 yıl önce

Toprak sen kendini baya geliştirdin. Programlama dili farketmez dediğine göre :)

Toplam 1 cevap


alattin (17125) 6 yıl önce cevapladı

Consolda ilkel denecek animasyonlar yapabilirsin, benim yazdığım bir kaç tana vardı ama bulamadım.

Klasi bir spinner örneği var. Bu DOS işletim sisteminde de bolca kullanılırdı. Virus taraması yaparken vs bu çıkardı ekrana:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        
        static void Main(string[] args)
        {
            ConsoleSpiner spin = new ConsoleSpiner();
            Console.Write("Taranıyor....");
            while (true)
            {
                spin.Turn();
            }
        }

        public class ConsoleSpiner
        {
            int counter;
            public ConsoleSpiner()
            {
                counter = 0;
            }
            public void Turn()
            {
                counter++;
                switch (counter % 4)
                {
                    case 0: Console.Write("/"); break;
                    case 1: Console.Write("-"); break;
                    case 2: Console.Write("\\"); break;
                    case 3: Console.Write("|"); break;
                }
                Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop);
            }
        }
    }
}

Kod alıntıdır. Şurada bir kaç örnek bulabilirsin: https://stackoverflow.com/questions/1923323/console-animations

Konsolda animasyon yapmak senin yaratıcılığına kalmış.

C# konsol ASCII animasyon örneği: Aşağı doğru akan Star wars

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;

class Program
{
    static void ConsoleDraw(IEnumerable<string> lines, int x, int y)
    {
        if (x > Console.WindowWidth) return;
        if (y > Console.WindowHeight) return;

        var trimLeft = x < 0 ? -x : 0;
        int index = y;

        x = x < 0 ? 0 : x;
        y = y < 0 ? 0 : y;

        var linesToPrint =
            from line in lines
            let currentIndex = index++
            where currentIndex > 0 && currentIndex < Console.WindowHeight
            select new {
                Text = new String(line.Skip(trimLeft).Take(Math.Min(Console.WindowWidth - x, line.Length - trimLeft)).ToArray()),
                X = x,
                Y = y++
            };

        Console.Clear();
        foreach (var line in linesToPrint)
        {
            Console.SetCursorPosition(line.X, line.Y);
            Console.Write(line.Text);
        }
    }

    static void Main(string[] args)
    {
        Console.CursorVisible = false;

        var arr = new[]
        {
            @"        ________________.  ___     .______  ",
            @"       /                | /   \    |   _  \",
            @"      |   (-----|  |----`/  ^  \   |  |_)  |",
            @"       \   \    |  |    /  /_\  \  |      /",
            @"  .-----)   |   |  |   /  _____  \ |  |\  \-------.",
            @"  |________/    |__|  /__/     \__\| _| `.________|",
            @"   ____    __    ____  ___     .______    ________.",
            @"   \   \  /  \  /   / /   \    |   _  \  /        |",
            @"    \   \/    \/   / /  ^  \   |  |_)  ||   (-----`",
            @"     \            / /  /_\  \  |      /  \   \",
            @"      \    /\    / /  _____  \ |  |\  \---)   |",
            @"       \__/  \__/ /__/     \__\|__| `._______/",
        };

        var maxLength = arr.Aggregate(0, (max, line) => Math.Max(max, line.Length));
        var x = Console.BufferWidth/2 - maxLength/2;
        for (int y = -arr.Length; y < Console.WindowHeight + arr.Length; y++)
        {
            ConsoleDraw(arr, x, y);
            Thread.Sleep(100);
        }
    }
}

 

Bir başka örnek: https://www.vitoshacademy.com/c-animate-a-ascii-picture-in-console/

toprak34 6 yıl önce

@alattin abi bu attığın linke bakmıştım, ancak hepsi tarayıcı ekranında kullanılan şey. Spinner ismi galiba. Başka yol yokmu? Hani ASCII falan var ya onları yapamazmıyız?

toprak34 6 yıl önce

@alattin abi bir de internette c# snake game kodları bulursan atarmısın? Yarına yetiştirmem gerekiyor ben hiç bulamadım çalışmıyor.

alattin 6 yıl önce

@toprak34 sen istersin de olmaz mı? cevabı güncelledim.

toprak34 6 yıl önce

@alattin Çok teşekkürler abi :)