Asynchroniczna Konsola

Postanowiłem dorzucić do AGE konsolkę. Przypomniało mi się, że kiedyś widziałem artykuł Regedita odnośnie właśnie tworzenia asynchronicznej konsoli. Poszukałem chwilkę i znalazłem go tu: http://regedit.gamedev.pl/produkcje/artykuly/AsynchronicznaKonsola.php5 .

Przeczytałem artykuł i pomyślałem, że dodanie czegoś takiego będzie szybkie i wygodne – czyli tak jak lubię 😛 Zabrałem się więc za pisanie… Właściwie to muszę się przyznać, że bardziej powinno się to nazywać przepisywaniem 😉 Sporo linijek kodu jest podobnych pomimo tego, że inaczej rozwiązałem niektóre kwestie.

Z różnic mogę podać zarządzanie kolorami. W mojej klasie konsoli możemy ustalać kolor tekstu i kolor tła osobno używając wartości z enuma który zawiera wartości:

  • COLOR_RED
  • COLOR_GREEN
  • COLOR_BLUE
  • COLOR_INTENSITY

Tak więc nie ma już podziału na kolory tła i kolory tekstu. IMO tak jest łatwiej 🙂

Kolejną „innością”, którą pozwoliłem sobie wprowadzić jest umieszczenie konstruktora klasy w sekcji private. Aby stworzyć obiekt należy wywołać statyczną metodę getConsole(), która zwraca wskaźnik na konsolę. Oczywiście jeśli jest wywołana pierwszy raz to tworzy obiekt konsoli.

Dlaczego tak to zrobiłem? Ano dlatego, że każdy proces może mieć tylko jedną konsolę, a takie rozwiązanie pozwoliło mi uprościć drugą statyczną metodę którą Regedit nazwał ReadThreadProc_s(). Nie muszę już jako argumentu podawać do wskaźnika obiektu konsoli ponieważ może ona sama go sobie wziąć za pomocą getConsole(). Mała rzecz a cieszy 😉

Reszta kodu jest bardzo podobna do tej, którą zademonstrował Regedit. Pomyślałem, że można by dodać jeszcze coś takiego, że wprowadzanie tekstu w konsoli będzie się odbywało „na dole” czyli w ostatniej linii, a otuput bedzie wyświetlany normalnie. Pokombinuję trochę i może coś z tego będzie 🙂

Reklamy

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s