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.
omercik 6 yıl önce
Toprak sen kendini baya geliştirdin. Programlama dili farketmez dediğine göre :)
Toplam 1 cevap
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/