Nie jesteś zalogowany na forum.
Strony: 1
Często problem z grami w konsoli jest taki, że po każdym czyszczeniu ekranu konsola "miga", jeśli ekran czyści się w krótkim odstępie czasowym, to bardzo rzuca się to w oczy.
Istnieje jednak bardzo prosty sposób na "czyszczenie" ekranu bez migania.
Na początek porównanie, po lewej standardowe Console.Clear(), po prawej moja funkcja.
Tak wygląda kod testowego programu:
using System;
using System.Threading;
namespace ConsoleApplication1
{
class Program
{
static char[,] map = new char[20, 20];
static Random rand = new Random((int)DateTime.Now.Ticks);
static int r;
static void Main(string[] args)
{
for (int i = 0; i <= 19; i++)
{
for (int j = 0; j <= 19; j++)
{
r = rand.Next(1, 4);
if (r == 1) map[i, j] = 'A';
else if (r == 2) map[i, j] = 'B';
else if (r == 3) map[i, j] = 'C';
}
}
string h = Console.ReadLine();
if (h == "1") { Console.Clear(); Console.Title = "Console.Clear();"; a1(); }
else if (h == "2") { Console.Clear(); Console.Title = "Moja funkcja"; a2(); }
}
static void a1()
{
Console.Clear();
for (int i = 0; i <= 19; i++)
{
for (int j = 0; j <= 19; j++)
{
if (map[i, j] == 'A') Console.ForegroundColor = ConsoleColor.Yellow;
else if (map[i, j] == 'B') Console.ForegroundColor = ConsoleColor.Green;
else if (map[i, j] == 'C') Console.ForegroundColor = ConsoleColor.White;
Console.Write(map[i, j]);
}
Console.WriteLine();
}
Thread.Sleep(10);
a1();
}
static void a2()
{
Console.SetCursorPosition(0, 0);
for (int i = 0; i <= 19; i++)
{
for (int j = 0; j <= 19; j++)
{
if (map[i, j] == 'A') Console.ForegroundColor = ConsoleColor.Yellow;
else if (map[i, j] == 'B') Console.ForegroundColor = ConsoleColor.Green;
else if (map[i, j] == 'C') Console.ForegroundColor = ConsoleColor.White;
Console.Write(map[i, j]);
}
Console.WriteLine();
}
Thread.Sleep(10);
a2();
}
}
}
Co sprawiło, że w mojej funkcji nic nie miga? Właśnie to:
Console.SetCursorPosition(0, 0);
Zamiast czyścić ekran, po prostu ustawiłem kursor na pozycji 0, 0 i nadpisałem tekst.
"Są dwie drogi tworzenia oprogramowania. Jedną jest tworzenie tak prostego kodu, że, w sposób oczywisty, nie ma w nim żadnych braków. Drugą jest tworzenie tak skomplikowanego kodu, że nie ma w nim żadnych oczywistych braków." - C.A.R. Hoare
Offline
Te, szprytne to!
Co to jest za język programmingu? C?
Offline
Przecież w temacie, zgodnie z regulaminem, w kwadratowych nawiasach jest nazwa języka...
"Są dwie drogi tworzenia oprogramowania. Jedną jest tworzenie tak prostego kodu, że, w sposób oczywisty, nie ma w nim żadnych braków. Drugą jest tworzenie tak skomplikowanego kodu, że nie ma w nim żadnych oczywistych braków." - C.A.R. Hoare
Offline
Żem nie zwrócił uwagi xD. Podobny do cpp nieco.
Offline
Szprytne i bardzo funkcjonalne, we wszystkich moich gierach tego używam <3
Offline
To jest akurat bananalne, ale dobrze o tym wspomnieć A tak poza tym to siemka
Offline
Strony: 1