ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ curses Π²ΡΠΏΠΎΠ»Π½ΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ Π²ΡΠ²ΠΎΠ΄Π° Π½Π° Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΊΡΠ°Π½, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Ρ ΠΊΡΡΡΠΎΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΡ ΡΠΊΡΠ°Π½Ρ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π΄ΠΎΡΡΠΈΡΡ Π½ΡΠΆΠ½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ° ΠΈΠ»ΠΈ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π»ΠΈΠ½ΠΈΠΉ ΠΈ ΡΠ°ΠΌΠΎΠΊ. ΠΠ° ΠΊΠ°ΠΊΠΎΠΌ-ΡΠΎ ΡΡΠ°ΠΏΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π²Π΅ΡΡ ΡΡΠΎΡ Π²ΡΠ²ΠΎΠ΄. ΠΠΎΠ³Π΄Π° ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ (ΠΎΠ±ΡΡΠ½ΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ refresh), Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° curses Π½Π°ΠΉΠ΄Π΅Ρ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΊΡΠ°Π½Π°, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΌΡ. ΠΡΠΈΠΌΠ΅Π½ΡΡ Π½ΡΠΆΠ½ΡΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΡΡΡΠΎΡΠ°, curses ΡΠ°ΡΡΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΡΠΊΡΠ°Π½, Π²ΡΠ²ΠΎΠ΄Ρ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΌΠ΅Π½ΡΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ Π·Π°ΠΏΠΈΡΠΈ Π½Π° ΡΠΊΡΠ°Π½, Π΅ΡΠ»ΠΈ Π±Ρ ΠΎΠ½ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ.
ΠΠ°ΠΊΠ΅Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΊΡΠ°Π½Π° β ΡΡΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ², ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΠΉ ΠΏΠΎ ΡΡΡΠΎΠΊΠ°ΠΌ ΠΈ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ, Ρ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠ΅ΠΉ ΡΠΊΡΠ°Π½Π° (0, 0) Π² Π»Π΅Π²ΠΎΠΌ Π²Π΅ΡΡ Π½Π΅ΠΌ ΡΠ³Π»Ρ (ΡΠΈΡ. 6.1).
Π ΠΈΡ. 6.1
ΠΠΎ Π²ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ curses ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Ρ (ΡΡΡΠΎΠΊΠΈ) ΠΏΠ΅ΡΠ΅Π΄ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Ρ (ΡΡΠΎΠ»Π±ΡΡ). ΠΠ°ΠΆΠ΄Π°Ρ ΠΏΠΎΠ·ΠΈΡΠΈΡ Ρ ΡΠ°Π½ΠΈΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΌΠ²ΠΎΠ», ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΉ Π² ΡΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΡΠΊΡΠ°Π½Π°, Π½ΠΎ ΠΈ Π΅Π³ΠΎ Π°ΡΡΠΈΠ±ΡΡΡ. ΠΡΡΠΈΠ±ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ, Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΡ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°, Π½ΠΎ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΎΠ½ΠΈ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΆΠΈΡΠ½ΠΎΠ΅ Π½Π°ΡΠ΅ΡΡΠ°Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Π°. ΠΠ° ΠΊΠΎΠ½ΡΠΎΠ»ΡΡ Linux Π²Π°ΠΌ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π½Π΅Π³Π°ΡΠΈΠ²Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠ²Π΅Ρ, ΠΎ ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅ΡΡ ΠΏΠΎΠΉΠ΄Π΅Ρ Π΄Π°Π»Π΅Π΅ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° curses Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ , Π²ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ curses Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΈ Π·Π°ΡΠ΅ΠΌ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ Π΅ΠΉ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠΎΡΠ»Π΅ Π΅Π΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ. ΠΠ΅Π»Π°Π΅ΡΡΡ ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΏΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ: initscr ΠΈ endwin (ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 6.1).
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 6.1. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ curses, Π²ΡΠ²ΠΎΠ΄ΡΡΠ°Ρ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΠ΅Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²Ρ Π½Π°ΠΏΠΈΡΠΈΡΠ΅ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ curses ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ screen1.c, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΡΡΠΈ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ. ΠΠ°Π»Π΅Π΅ Π±ΡΠ΄ΡΡ ΠΎΠΏΠΈΡΠ°Π½Ρ ΠΈΡ ΠΏΡΠΎΡΠΎΡΠΈΠΏΡ.
1. ΠΡΡΠ°Π²ΡΡΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» curses.h ΠΈ Π² ΡΡΠ½ΠΊΡΠΈΡ main, Π²ΠΊΠ»ΡΡΠΈΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ curses:
#include <unistd.h>
#include <stdlib.h>
#include <curses.h>
int main() {
initscr();
...
endwin();
exit(EXIT_SUCCESS);
}
2. ΠΠ½ΡΡΡΡ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΡΡΡΠΎΡΠ° Π² ΡΠΎΡΠΊΡ (5, 15) Π½Π° Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠΊΡΠ°Π½Π΅, Π²ΡΠ²Π΅Π΄ΠΈΡΠ΅ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ "Hello World" ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ΅Π°Π»ΡΠ½ΡΠΉ ΡΠΊΡΠ°Π½. Π Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅ Π²ΡΠ·ΠΎΠ² sleep(2) Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Π΄Π²Π΅ ΡΠ΅ΠΊΡΠ½Π΄Ρ ΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π²ΡΠ²ΠΎΠ΄ Π½Π° ΡΠΊΡΠ°Π½ ΠΏΠ΅ΡΠ΅Π΄ Π΅Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ΠΌ:
move(5, 15);
printw("%s", "Hello World");
refresh();
sleep(2);
ΠΠΎΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ, Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΡΠ°Π·Ρ "Hello World" Π² Π»Π΅Π²ΠΎΠΌ Π²Π΅ΡΡ Π½Π΅ΠΌ ΠΊΠ²Π°Π΄ΡΠ°Π½ΡΠ΅ ΠΏΡΡΡΠΎΠ³ΠΎ ΡΠΊΡΠ°Π½Π° (ΡΠΈΡ. 6.2).
Π ΠΈΡ. 6.2
ΠΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
ΠΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ curses, ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅Ρ ΠΊΡΡΡΠΎΡ Π² Π·Π°Π΄Π°Π½Π½ΡΡ ΡΠΎΡΠΊΡ ΡΠΊΡΠ°Π½Π° ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅ΠΊΡΡ. ΠΠΎΡΠ»Π΅ ΠΊΠΎΡΠΎΡΠΊΠΎΠΉ ΠΏΠ°ΡΠ·Ρ ΠΎΠ½Π° Π·Π°ΠΊΡΡΠ²Π°Π΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΈ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ.
ΠΠΊΡΠ°Π½
ΠΠ°ΠΊ: Π²Ρ ΡΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ, Π²ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ curses Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ initscr ΠΈ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ endwin. ΠΠ°Π»Π΅Π΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΠΈΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈΠ· Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°.
#include <curses.h>
WINDOW *initscr(void);
int endwin(void);
Π€ΡΠ½ΠΊΡΠΈΡ initscr Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. Π ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΎΠ½Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΡΡΡΠΊΡΡΡΡ stdscr. ΠΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ Π°Π²Π°ΡΠΈΠΉΠ½ΠΎ, ΠΎΠ½Π° ΠΏΡΠΎΡΡΠΎ Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Π€ΡΠ½ΠΊΡΠΈΡ endwin Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ OK Π² ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΈ err Π² ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΡΠ΄Π°ΡΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ·Π²Π°ΡΡ Π΅Π΅ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΊΠΈΠ½ΡΡΡ curses, Π° ΠΏΠΎΠ·ΠΆΠ΅ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ curses, Π²ΡΠ·Π²Π°Π² clearok(stdscr, 1) ΠΈ refresh. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π·Π°Π±ΡΡΡ, ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΊΡΠ°Π½, ΠΈ Π·Π°ΡΡΠ°Π²ΠΈΡ Π΅Π΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΊΡΠ°Π½Π°.
ΠΡΠ²ΠΎΠ΄ Π½Π° ΡΠΊΡΠ°Π½
ΠΠ»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠΊΡΠ°Π½Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±Π°Π·ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ.
#include <curses.h>
int addch(const chtype char_to_add);
int addchstr(chtype *const string_to_add);
int printw(char *format, ...);
int refresh(void);
int box(WINDOW *win_ptr, chtype vertical_char, chtype horizontal_char);
int insch(chtype char_to_insert);
int insertln(void);
int delch(void);
int deleteln(void);
int beep(void);
int flash(void);
Π£ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ curses Π΅ΡΡΡ ΡΠ²ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠΉ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ chtype, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ°Π·ΡΡΠ΄ΠΎΠ², ΡΠ΅ΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠΈΠΏ char. Π ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ncurses Π΄Π»Ρ ΠΠ‘ Linux chtype Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ β ΡΠΈΠ½ΠΎΠ½ΠΈΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° unsigned long.
Π€ΡΠ½ΠΊΡΠΈΠΈ addch ΠΈ addchstr Π²ΡΡΠ°Π²Π»ΡΡΡ Π·Π°Π΄Π°Π½Π½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ» ΠΈΠ»ΠΈ ΡΡΡΠΎΠΊΡ Π² ΡΠ΅ΠΊΡΡΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ Π½Π° ΡΠΊΡΠ°Π½Π΅. Π€ΡΠ½ΠΊΡΠΈΡ printw ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ΅Ρ ΡΡΡΠΎΠΊΡ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΡ printf, ΠΈ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ Π² ΡΠ΅ΠΊΡΡΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ Π½Π° ΡΠΊΡΠ°Π½Π΅. Π€ΡΠ½ΠΊΡΠΈΡ refresh Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΊΡΠ°Π½Π°, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Ρ OK Π² ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅Ρ Π° ΠΈ ERR ΠΏΡΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ. Π€ΡΠ½ΠΊΡΠΈΡ box ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΌΠΊΡ Π²ΠΎΠΊΡΡΠ³ ΠΎΠΊΠ½Π°.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅Π ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ curses Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ "ΠΎΠ±ΡΡΠ½ΡΠ΅" ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΡΡ ΠΈ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΡΡ Π»ΠΈΠ½ΠΈΠΉ. Π ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π²Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ, ASC_VLINE ΠΈ ACS_HLINE, Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΡΡ ΠΈ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΡΡ Π»ΠΈΠ½ΠΈΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ Π²Π½Π΅ΡΠ½Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΡΡ ΡΠ°ΠΌΠΊΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²Π°Ρ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΏΡΠ΅Π²Π΄ΠΎΠ³ΡΠ°ΡΠΈΠΊΠΈ. ΠΠ±ΡΡΠ½ΠΎ ΠΎΠ½ΠΈ Π»ΡΡΡΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π² ΠΎΠΊΠ½Π΅ ΡΠΌΡΠ»ΡΡΠΎΡΠ° xterm, ΡΠ΅ΠΌ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ, Π½ΠΎ ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΠΎΠ»Π½Π° ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΠΎΠ²ΠΎΠΊ ΠΈΠ»ΠΈ "Π·Π°ΠΏΠ»Π°Ρ", ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, ΡΡΠΎ Π²Ρ ΠΎΡΠΊΠ°ΠΆΠ΅ΡΠ΅ΡΡ ΠΎΡ ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π΅ΡΠ»ΠΈ Π²Π°ΠΆΠ½Π° ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΡ Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Π€ΡΠ½ΠΊΡΠΈΡ insch Π²ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΈΠΌΠ²ΠΎΠ», ΡΠ΄Π²ΠΈΠ³Π°Ρ ΠΈΠΌΠ΅ΡΡΠΈΠ΅ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π²ΠΏΡΠ°Π²ΠΎ. ΠΡΠΈ ΡΡΠΎΠΌ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ, ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ, ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°. Π€ΡΠ½ΠΊΡΠΈΡ insertln Π²ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΡΡΡΡ ΡΡΡΠΎΠΊΡ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Ρ ΠΈΠΌΠ΅ΡΡΠΈΠ΅ΡΡ ΡΡΡΠΎΠΊΠΈ Π½Π° ΠΎΠ΄Π½Ρ Π²Π½ΠΈΠ·. Π€ΡΠ½ΠΊΡΠΈΠΈ delch ΠΈ deleteln Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌ insert.
ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π·Π²ΡΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ beep. ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Ρ Π½Π΅ ΡΠΏΠΎΡΠΎΠ±Π½Ρ ΠΈΠ·Π΄Π°Π²Π°ΡΡ Π·Π²ΡΠΊΠΈ, Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ curses ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ beep Π·Π°ΡΡΠ°Π²ΡΡ ΡΠΊΡΠ°Π½ ΠΌΠΈΠ³Π°ΡΡ. ΠΡΠ»ΠΈ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Π² Π³ΡΡΡΠΎΠ½Π°ΡΠ΅Π»Π΅Π½Π½ΠΎΠΌ ΠΎΡΠΈΡΠ΅ ΠΈ Π·Π²ΡΠΊΠΎΠ²ΡΠ΅ ΡΠΈΠ³Π½Π°Π»Ρ ΠΌΠΎΠ³ΡΡ ΠΈΠ·Π΄Π°Π²Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ ΡΠΎΡΡΠ΅ΡΠ΅ ΠΌΠΈΠ³Π°Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΡΠ΅ΠΆΠΈΠΌΠΎΠΌ. ΠΠ°ΠΊ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π»ΠΎΡΡ, ΡΡΠ½ΠΊΡΠΈΡ flash Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΌΠΈΠ³Π°Π½ΠΈΠ΅ ΡΠΊΡΠ°Π½Π°, Π΅ΡΠ»ΠΈ ΡΡΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ½Π° ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅Ρ Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» ΠΈΠ·Π΄Π°ΡΡ Π·Π²ΡΠΊΠΎΠ²ΠΎΠΉ ΡΠΈΠ³Π½Π°Π» Π²Π·Π°ΠΌΠ΅Π½.
Π‘ΡΠΈΡΡΠ²Π°Π½ΠΈΠ΅ Ρ ΡΠΊΡΠ°Π½Π°
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Ρ ΡΠΊΡΠ°Π½Π°, Ρ ΠΎΡΡ ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π΅ΡΠ°ΡΡΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π»Π΅Π³ΡΠ΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΡΠΎ, ΡΡΠΎ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ. ΠΡΠ»ΠΈ Π²Π°ΠΌ Π²ΡΠ΅-ΡΠ°ΠΊΠΈ ΡΡΠΎ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ, Π²ΡΠΏΠΎΠ»Π½ΡΠΉΡΠ΅ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ:
#include <curses.h>
chtype inch(void);
int instr(char *string);
int innstr(char *string, int number_of_characters);
Π€ΡΠ½ΠΊΡΠΈΡ inch Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΡΡΡΠΏΠ½Π°, Π° ΡΡΠ½ΠΊΡΠΈΠΈ instr ΠΈ innstr Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ. Π€ΡΠ½ΠΊΡΠΈΡ inch Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΈΠΌΠ²ΠΎΠ» ΠΈΠ· ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΊΡΡΡΠΎΡΠ° Π½Π° ΡΠΊΡΠ°Π½Π΅ ΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΎ Π΅Π³ΠΎ Π°ΡΡΠΈΠ±ΡΡΠ°Ρ . ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ char, a chtype, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ instr ΠΈ innstr ΠΏΠΈΡΡΡ Π² ΠΌΠ°ΡΡΠΈΠ²Ρ Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΠΈΠΏΠ° char.
ΠΡΠΈΡΡΠΊΠ° ΡΠΊΡΠ°Π½Π°
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠ΅ΡΡΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠΏΠΎΡΠΎΠ±Π° ΠΎΡΠΈΡΡΠΊΠΈ ΠΎΠ±Π»Π°ΡΡΠΈ ΡΠΊΡΠ°Π½Π°:
#include <curses.h>
int erase (void);
int clear(void);
int clrtobot(void);
int clrtoeol(void);
Π€ΡΠ½ΠΊΡΠΈΡ erase Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΏΡΠΎΠ±Π΅Π»Ρ Π²ΠΎ Π²ΡΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΡΠΊΡΠ°Π½Π°. Π€ΡΠ½ΠΊΡΠΈΡ clear, ΠΊΠ°ΠΊ ΠΈ erase, ΠΎΡΠΈΡΠ°Π΅Ρ ΡΠΊΡΠ°Π½, Π½ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠΎΠ²ΠΊΡ ΡΠΊΡΠ°Π½Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ Π²ΡΠ·ΠΎΠ²Π° Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ clearok, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΎΡΠΈΡΡΠΊΠΈ ΡΠΊΡΠ°Π½Π° ΠΈ Π½ΠΎΠ²ΠΎΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΊΡΠ°Π½Π° ΠΏΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π²ΡΠ·ΠΎΠ²Π΅ refresh.
Π€ΡΠ½ΠΊΡΠΈΡ clear ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΡΠΈΡΠ°Π΅Ρ Π²Π΅ΡΡ ΡΠΊΡΠ°Π½, Π° Π½Π΅ ΠΏΡΡΠ°Π΅ΡΡΡ ΡΡΠ΅ΡΠ΅ΡΡ ΡΠ΅ΠΊΡΡΠΈΠ΅ Π½Π΅ΠΏΡΠΎΠ±Π΅Π»ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π²ΠΎ Π²ΡΠ΅Ρ ΡΠΎΡΠΊΠ°Ρ ΡΠΊΡΠ°Π½Π°. ΠΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ clear Π½Π°Π΄Π΅ΠΆΠ½ΡΠΌ ΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΎΡΠΈΡΡΠΊΠΈ ΡΠΊΡΠ°Π½Π°. Π‘ΠΎΡΠ΅ΡΠ°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ clear Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ refresh ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΠ΄ΠΎΠ±Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΠΊΡΠ°Π½Π° Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΊΡΠ°Π½Π΅ Π±Π΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ½ΠΎ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΡΡΠ΅Π½ΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.