B blokk · Változók és típusok · 8. tananyag — a blokk zárása
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.
ForegroundColor,
BackgroundColor.ResetColor().Konzol.Cim(),
Siker(), Hiba() hívásokat.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();
ForegroundColor a betűszín,
a BackgroundColor a betűk mögötti
háttér.ConsoleColor egy felsorolt
típus (enum — a H blokkban tanuljuk): 16 névre hallgató szín, pontozott
jelöléssel választod ki.ResetColor() mindent visszaállít
az alapértelmezettre. Ha nem teszed: a színes kiírás után
minden további sor az utolsó színnel jelenik majd meg.A 16 szín (a leggyakrabban használtak kiemelve):
| Black | DarkBlue | DarkGreen | DarkCyan |
| DarkRed | DarkMagenta | DarkYellow | Gray |
| DarkGray | Blue | Green | Cyan |
| Red | Magenta | Yellow | White |
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.
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();
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).
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!");
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:
Program.cs-ben lehet
(A6) —
a többi fájlba osztályok kerülnek. Íme az első!Osztály.Metódus(argumentum) — a kezdetektől ilyeneket írsz (A6),
csak most a te osztályod a címzett.Menu(),
a D-ben Keret() kerül bele — és a D blokkban már
érteni is fogod, mi az a static void.Melyik Konzol-hívással írnád ki az üzenetet? A színkonvenció segít!
| Tünet | Mi történt? | Mit tegyél? |
|---|---|---|
| Minden sor zöld maradt | lemaradt 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ínt | ConsoleColor.Green — a kis-nagybetű számít (A6!) |
A ═ vagy ✔ helyén ? van | a konzol kódolása/betűtípusa nem tudja a jelet | Console.OutputEncoding = System.Text.Encoding.UTF8; az első sorba |
CS0103: The name 'Konzol' does not exist… a Program.cs-ben | a Konzol osztály névtérben (namespace) van | using <projektnév>; a Program.cs tetejére — vagy töröld a namespace-sort a Konzol.cs-ből |
CS8802 a Konzol.cs-ben | utasítást írtál az osztályfájlba | top-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átszik | ez a normális működés | teljes sorhoz írj szóközöket is színes háttérrel |
SzinesKonzol, .NET 10.Konzol.cs fájlt a 3. szakasz szerint.Konzol.Cim("BEMUTATKOZÓ KÁRTYA");Konzol.Siker("A kártya elkészült!"); és
Konzol.Hiba("Így nézne ki egy hiba.");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.)Szines zaroprojekt a Konzol segedosztallyal).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.
⭐ alap · ⭐⭐ haladó · ⭐⭐⭐ kihívás
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.
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!).
„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!
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!)
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!
Minden kérdésnél egy válasz helyes. A végén pontszámot kapsz.
| Fogalom | Jelentés |
|---|---|
ForegroundColor / BackgroundColor | a Console írható tulajdonságai: betűszín / háttérszín |
ConsoleColor | felsorolt típus (enum — H blokk) a 16 konzolszínnel |
ResetColor() | minden színbeállítást visszaállít az alapértelmezettre |
| box-drawing karakterek | keretrajzoló jelek: ═ ║ ╔ ╗ ╚ ╝ — a szép konzolfelület építőkövei |
OutputEncoding | a 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 / Hiba | a 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ó |
Console tulajdonságokkal
színez: ForegroundColor /
BackgroundColor + kötelező
ResetColor().? jelenik meg, az
OutputEncoding UTF-8-ra állítása segít.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ő.