Problem z "rysowaniem" używając readkey();

Odpowiedz Nowy wątek
2011-09-24 22:06
0

Witam,Mam taki problem.Napisałem sobie taki oto program w którym rysuję przy pomocy Readkey

 using System;

class Program
{
    static void Main()
    {
        int a=0, b=0;
        while (true)
        {

            ConsoleKeyInfo o = Console.ReadKey();
            if (o.Key == ConsoleKey.LeftArrow)
            {
                b = b - 1;
                Console.SetCursorPosition(b, a);
                Console.Write("█");

            }
            if (o.Key == ConsoleKey.RightArrow)
            {
                b = b + 1;
                Console.SetCursorPosition(b, a);
                Console.Write("█");
            }
            if (o.Key == ConsoleKey.DownArrow)
            {
                a = a + 1;
                Console.SetCursorPosition(b, a);
                Console.Write("█");
            }
            if (o.Key == ConsoleKey.UpArrow)
            {
                a = a - 1;
                Console.SetCursorPosition(b, a);
                Console.Write("█");
            }
        }
    }
}

Problem polega na tym,iż kiedy przejadę ponownie po narysowanej linii ( w większości przypadków spróbujcie ) to ona znika.Nie wiem jak temy zaradzić
Pozdrawiam

Pozostało 580 znaków

2011-09-24 22:36
0
using System;

class Program
{
    static void Main()
    {
        int a = 0, b = 0;
        Console.CursorVisible = false;
        while (true)
        {

            ConsoleKeyInfo o = Console.ReadKey();
            if (o.Key == ConsoleKey.LeftArrow)
            {
                b -= b > 0 ? 1 : 0;
            }
            if (o.Key == ConsoleKey.RightArrow)
            {
                b += b < 79 ? 1 : 0;
            }
            if (o.Key == ConsoleKey.DownArrow)
            {
                a = a + 1;
            }
            if (o.Key == ConsoleKey.UpArrow)
            {
                a -= a > 0 ? 1 : 0;
            }

            Console.SetCursorPosition(b, a);
            Console.Write("█");
            Console.SetCursorPosition(0, 0);
        }
    }
}

Sądzę, że to spowodowane jest ReadKeyem. Ten kod pomaga, aczkolwiek teraz na pozycji 0,0 nic nie da się narysować.


Some people see things as they are, and say "why?". I dream things that never were and say "why not?".
spowodowane jest ECHEM readkeya, który próbuje „rysować” dodatkowo znak naciskanego klawisza, ale strzałki rysują tylko znak pusty. - Azarien 2011-09-24 22:40

Pozostało 580 znaków

2011-09-24 22:39
0
  1. brak kontroli zakresów, wyjechanie poza ekran wywala program
  2. ConsoleKeyInfo o = Console.ReadKey(true);
  3. najlepiej wyczyść ekran przy końcu.
Pokaż pozostałe 2 komentarze
chodzi mi o to co robi mi ReadKey(true); - maroo123321 2011-09-25 13:56
gdybym dobrze znał angielski nie pytałbym na polskim forum ( potrafie jeszcze wpisac w google console.readkey(true) msdn .... - maroo123321 2011-09-25 21:02
Bez znajomości angielskiego to sobie w programowaniu nie poradzisz. Słownik w łapę i tłumaczysz, jakoś dasz radę, a wiedza tak zdobyta zaprocentuje. - stfu 2011-09-25 21:09
Hmmmm.....Prawda - maroo123321 2011-09-25 21:37

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0