Vezérlőpult
B8. Színes konzol · Változók és típusok

B blokk · Változók és típusok · 8. tananyag — a blokk zárása

Színes konzol: az első saját segédosztályunk

Az A1-ben előre jeleztük: a konzol nem szükségszerűen mindig fekete-fehér. Most megnézzük ezt a gyakorlatban is — színek, keretek, és minden eddigi tudás egy látványos programban. És indítunk egy hasznos projektet is: a Konzol segédosztály, amely az egész tanévben a tudásunkkal fejlődik majd.

1 tanóraSzínek és keretekA Konzol-fonál indulása

Tanulási célok

1Színek: ForegroundColor és ResetColor

A Console osztálynak nemcsak metódusai vannak — állítható tulajdonságai is (a B4-es Length csak olvasható volt; ezek írhatók is):

Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("Sikerült!");
Console.ResetColor();

A 16 szín (a leggyakrabban használtak kiemelve):

BlackDarkBlueDarkGreenDarkCyan
DarkRedDarkMagentaDarkYellowGray
DarkGrayBlueGreenCyan
RedMagentaYellowWhite
ℹ️ A SZÍN JELENT VALAMIT

Nem dekoráció: a felhasználó a színből szöveg nélkül is ért. A megállapodásunk (és a szakmáé): zöld = siker, piros = hiba, sárga = figyelmeztetés, cián = információ — pont, mint a tananyag dobozainál.

2Keretek: a box-drawing karakterek

A szép konzolos felület titka néhány különleges karakter — másold őket bátran innen (vagy a Karaktertáblából):

═  ║  ╔  ╗  ╚  ╝  ╠  ╣    (dupla vonal)
─  │  ┌  ┐  └  ┘  ├  ┤    (szimpla vonal)
●  ○  ■  □  ▲  ★  ♦        (jelek)

Keretezett cím — az A1-ben látott Mastermind-kép most a te kezed munkája nyomán jelenik meg:

Console.ForegroundColor = ConsoleColor.Magenta;
Console.WriteLine("╔══════════════════╗");
Console.WriteLine("║    MASTERMIND    ║");
Console.WriteLine("╚══════════════════╝");
Console.ResetColor();
⚠️ HA KÉRDŐJELET LÁTSZ

Régebbi konzolokon a ═ vagy a ✔ helyén ? jelenhet meg: a konzol betűkészlete vagy kódolása nem ismeri a jelet. Gyógyír: a program legelső sorába írd be: Console.OutputEncoding = System.Text.Encoding.UTF8; — és ellenőrizd, hogy a konzol betűtípusa modern (pl. Cascadia Mono).

3A Konzol segédosztály — egy projekt elindul

Eddig mindig mások osztályait hívtad (Console, Math…). Most készítesz sajátot. Hozz létre a projektedben egy új fájlt (Solution Explorer → jobb kattintás a projekten → Add → Class… → neve: Konzol.cs), és másold bele ezt:

// Konzol.cs — a saját színes segédosztályunk (1.0)
// Használd nyugodtan! Hogy BELÜL hogyan működik, azt a D blokkban tanuljuk.
static class Konzol
{
    public static void Cim(string szoveg)
    {
        Console.ForegroundColor = ConsoleColor.Magenta;
        Console.WriteLine($"═══ {szoveg} ═══");
        Console.ResetColor();
    }

    public static void Siker(string szoveg)
    {
        Console.ForegroundColor = ConsoleColor.Green;
        Console.WriteLine($"✔ {szoveg}");
        Console.ResetColor();
    }

    public static void Hiba(string szoveg)
    {
        Console.ForegroundColor = ConsoleColor.Red;
        Console.WriteLine($"✘ {szoveg}");
        Console.ResetColor();
    }
}

Használata a Program.cs-ből — pontosan úgy, mint a Console-é:

Konzol.Cim("MASTERMIND");
Konzol.Siker("A beolvasás sikerült!");
Konzol.Hiba("Ez nem szám!");
⚠️ HA A PROGRAM.CS NEM LÁTJA A KONZOLT (CS0103)

A Visual Studio az új osztályfájl tetejére odaírhatja a projekt névterét (pl. namespace SzinesKonzol;). A névtér egyfajta csomagolás: ami benne van, azt egy másik fájlból csak akkor használhatod, ha ott importálod — ilyenkor a Program.cs legelső sora legyen: using SzinesKonzol;. Az egyszerűbb út: ha a fenti kódot pontosan így másolod be (a namespace-sor törlésével), importálás nélkül is működik. A névterekről részletesen a H blokkban lesz szó.

Három dolgot figyelj meg:

  1. Az A6-ban bemutatott felépítés (main metódus): top-level utasítás csak a Program.cs-ben lehet (A6) — a többi fájlba osztályok kerülnek. Íme az első!
  2. Ismerős minta: Osztály.Metódus(argumentum) — a kezdetektől ilyeneket írsz (A6), csak most a te osztályod a címzett.
  3. Saját osztályod épül: a C blokkban Menu(), a D-ben Keret() kerül bele — és a D blokkban már érteni is fogod, mi az a static void.

Cim, Siker vagy Hiba?

Melyik Konzol-hívással írnád ki az üzenetet? A színkonvenció segít!

1 / 8Pontszám: 0
…

4Gyakori hibák

TünetMi történt?Mit tegyél?
Minden sor zöld maradtlemaradt a ResetColor()a színes kiírás után azonnal hívd
CS0117: 'ConsoleColor' does not contain a definition for 'green'kisbetűvel írtad a színtConsoleColor.Green — a kis-nagybetű számít (A6!)
A ═ vagy ✔ helyén ? vana konzol kódolása/betűtípusa nem tudja a jeletConsole.OutputEncoding = System.Text.Encoding.UTF8; az első sorba
CS0103: The name 'Konzol' does not exist… a Program.cs-bena Konzol osztály névtérben (namespace) vanusing <projektnév>; a Program.cs tetejére — vagy töröld a namespace-sort a Konzol.cs-ből
CS8802 a Konzol.cs-benutasítást írtál az osztályfájlbatop-level sor csak a Program.cs-ben lehet (A6) — a Konzol.cs-ben csak az osztály
A háttérszín csak a betűk mögött látszikez a normális működésteljes sorhoz írj szóközöket is színes háttérrel

5Gyakorlat — színes záróprojekt: a bemutatkozó kártya 2.0

  1. Új projekt: Console App, név: SzinesKonzol, .NET 10.
  2. Add hozzá a Konzol.cs fájlt a 3. szakasz szerint.
  3. Vedd elő a B7-es bemutatkozó botot, és turbózd fel:
    • a tetejére Konzol.Cim("BEMUTATKOZÓ KÁRTYA");
    • a kérdések maradnak (ReadLine + TryParse — B7);
    • a végén formázott, igazított összefoglaló (B5), KERETBEN (box-drawing, 2. szakasz);
    • zárásként mutasd be mindkét jelzést: Konzol.Siker("A kártya elkészült!"); és Konzol.Hiba("Így nézne ki egy hiba.");
    (Amint a C blokkban meglesz az if, a bot már válogatni is tud majd a Siker és a Hiba között a TryParse eredménye szerint — ez lesz az első dolgunk.)
  4. Játssz a színekkel: adj a keretnek cián, a neveknek sárga színt.
  5. Commitold (Szines zaroprojekt a Konzol segedosztallyal).
✅ ELLENŐRZŐ PONT

A kártyád színes keretben jelenik meg, a Konzol.Cim / Siker / Hiba hívások működnek, és a program végén a színek visszaálltak alapra.

6Feladatok

Gyakorló feladatok

⭐ alap · ⭐⭐ haladó · ⭐⭐⭐ kihívás

B8.1⭐

Szivárvány: írj ki 5 sort 5 különböző színnel — és a végén ellenőrizd, hogy a 6. (színezetlen) sor tényleg alapszínű-e.

B8.2⭐

Készíts keretezett címet a SAJÁT nevedből box-drawing karakterekkel. Számold ki, hány ═ kell a neved hosszához (segít a nev.Length — B4!).

B8.3⭐⭐

„Közlekedési lámpa”: három sor piros, sárga, zöld háttérszínnel (BackgroundColor) és illő felirattal („ÁLLJ”, „FIGYELEM”, „MEHET”). Ne felejtsd a ResetColor()-t!

B8.4⭐⭐

Bővítsd a Konzol osztályt egy Figyelem() metódussal: sárga szín, ⚠ jel — a Siker mintájára, másolás és módosítás. (Igen, ez már egy kis előretekintés a D blokkba — menni fog!)

B8.5⭐⭐⭐

Mastermind-előzetes: rajzolj ki egy négyszínű „titkos kódot” ● karakterekkel — piros, zöld, kék, sárga körök egymás mellett, egy sorban (Write + színváltás + végén ResetColor). Pontosan így néz majd ki a játékunk táblája!

7Önellenőrző kvíz

Ellenőrizd magad!

Minden kérdésnél egy válasz helyes. A végén pontszámot kapsz.

8Fogalomtár

FogalomJelentés
ForegroundColor / BackgroundColora Console írható tulajdonságai: betűszín / háttérszín
ConsoleColorfelsorolt típus (enum — H blokk) a 16 konzolszínnel
ResetColor()minden színbeállítást visszaállít az alapértelmezettre
box-drawing karakterekkeretrajzoló jelek: ═ ║ ╔ ╗ ╚ ╝ — a szép konzolfelület építőkövei
OutputEncodinga konzol kimeneti kódolása — UTF-8-ra állítva a különleges jelek is megjelennek
segédosztályújrahasznosítható képességek gyűjteménye — a miénk a Konzol
Konzol.Cim / Siker / Hibaa segédosztályunk első három hívása: lila cím, zöld ✔, piros ✘
színkonvenciózöld = siker, piros = hiba, sárga = figyelmeztetés, cián = infó

9Összegzés — és a B blokk zárása

  1. A Console tulajdonságokkal színez: ForegroundColor / BackgroundColor + kötelező ResetColor().
  2. A box-drawing karakterek (═ ║ ╔ ╗ ╚ ╝) adják a keretet; ha ? jelenik meg, az OutputEncoding UTF-8-ra állítása segít.
  3. A szín jelzés: zöld = siker, piros = hiba, sárga = figyelmeztetés.
  4. Megszületett a Konzol segédosztály — külön fájlban (ahogy az A6 ígérte), és az Osztály.Metódus() mintával hívod, mint a Console-t. A tanév során végig velünk nő.
  5. A B blokk ezzel teljes: változók, típusok, műveletek, szövegek, formázás, konverziók, beolvasás, színek — minden eszköz megvan a párbeszédes, formázott, színes programokhoz. A C blokkban jön az, amitől a program dönteni is tud: a vezérlési szerkezetek.