Π€ΡΠ½ΠΊΡΠΈΡ clrtobot ΠΎΡΠΈΡΠ°Π΅Ρ ΡΠΊΡΠ°Π½, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΊΡΡΡΠΎΡΠ° ΠΈ Π΄Π°Π»Π΅Π΅ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° ΡΠΊΡΠ°Π½Π°, Π° ΡΡΠ½ΠΊΡΠΈΡ clrtoeol ΠΎΡΠΈΡΠ°Π΅Ρ ΡΠΊΡΠ°Π½, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΊΡΡΡΠΎΡΠ° Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° ΡΡΡΠΎΠΊΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΊΡΡΡΠΎΡ.
ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΡΡΡΠΎΡΠ°
ΠΠ»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΡΡΡΠΎΡΠ° ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ, ΡΠΏΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΡΡΡΠΎΡΠ° ΠΏΠΎΡΠ»Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠΊΡΠ°Π½Π°.
#include <curses.h>
int move(int new_y, int new_x);
int leaveok(WINDOW *window_ptr, bool leave_flag);
Π€ΡΠ½ΠΊΡΠΈΡ move ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΡΡΡΠΎΡΠ° Π² Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ Π½Π° ΡΠΊΡΠ°Π½Π΅. ΠΠ°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π½Π°ΡΠ°Π»ΠΎ ΡΠΊΡΠ°Π½Π½ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ (0, 0) Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² Π»Π΅Π²ΠΎΠΌ Π²Π΅ΡΡ Π½Π΅ΠΌ ΡΠ³Π»Ρ ΡΠΊΡΠ°Π½Π°. Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ Π²Π΅ΡΡΠΈΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ curses Π΄Π²Π΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, LINES ΠΈ COLUMNS, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΊΡΠ°Π½Π° ΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² new_y ΠΈ new_x. ΠΡΠ·ΠΎΠ² move ΡΠ°ΠΌ ΠΏΠΎ ΡΠ΅Π±Π΅ Π½Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΡΡΡΠΎΡΠ°. ΠΠ½ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΠΏΠΎΠ·ΠΈΡΠΈΡ Π½Π° Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠΊΡΠ°Π½Π΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠΎΡΠ²ΠΈΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΡΠ²ΠΎΠ΄. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ ΡΠΊΡΠ°Π½Π½ΡΠΉ ΠΊΡΡΡΠΎΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΠ»ΡΡ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ move, Π²ΡΡΠ°Π²ΡΡΠ΅ ΡΠ»Π΅Π΄ΠΎΠΌ Π·Π° Π½ΠΈΠΌ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ refresh.
Π€ΡΠ½ΠΊΡΠΈΡ leaveok ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠ»Π°Π³, ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΡΡΡΠΎΡΠ° Π½Π° ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠΊΡΠ°Π½Π΅ ΠΏΠΎΡΠ»Π΅ Π΅Π³ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ»Π°Π³ ΡΠ°Π²Π΅Π½ false, ΠΈ ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° refresh Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΠΉ ΠΊΡΡΡΠΎΡ ΠΎΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΉ ΠΆΠ΅ ΡΠΎΡΠΊΠ΅ ΡΠΊΡΠ°Π½Π°, ΡΡΠΎ ΠΈ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΡΡΡΠΎΡ. ΠΡΠ»ΠΈ ΡΠ»Π°Π³ ΡΠ°Π²Π΅Π½ true, Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΠΉ ΠΊΡΡΡΠΎΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΠ°Π²ΠΈΡΡ Π² ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΉ ΡΠΎΡΠΊΠ΅ ΡΠΊΡΠ°Π½Π°. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌΠΎΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½Π΅ΠΉ, Ρ.ΠΊ. ΠΊΡΡΡΠΎΡ ΠΎΡΡΠ°Π΅ΡΡΡ Π² Π½Π΅ Π»ΠΈΡΠ΅Π½Π½ΠΎΠΉ ΡΠΌΡΡΠ»Π° ΠΏΠΎΠ·ΠΈΡΠΈΠΈ.
ΠΡΡΠΈΠ±ΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²
Π£ Π²ΡΠ΅Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΡ curses, ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ, ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π½Π° ΡΠΊΡΠ°Π½Π΅ ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠ΅ Π΄Π»Ρ ΠΈΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΠΉ Π°ΡΡΠΈΠ±ΡΡ. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ: A_BLINK, A_BOLD, A_DIM, A_REVERSE, A_STANDOUT ΠΈ A_UNDERLINE. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π΄Π°Π»Π΅Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈΠ»ΠΈ Π²ΡΠ΅ Π²ΠΌΠ΅ΡΡΠ΅.
#include <curses.h>
int attron(chtype attribute);
int attroff(chtype attribute);
int attrset(chtype attribute);
int standout(void);
int standend(void);
Π€ΡΠ½ΠΊΡΠΈΡ attrset ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π°ΡΡΠΈΠ±ΡΡΡ curses, ΡΡΠ½ΠΊΡΠΈΠΈ attron ΠΈ attroff Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΈ ΠΎΡΠΊΠ»ΡΡΠ°ΡΡ Π·Π°Π΄Π°Π½Π½ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ, Π½Π΅ ΠΏΠΎΡΡΡ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅, Π° ΡΡΠ½ΠΊΡΠΈΠΈ standout ΠΈ standend ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ "Π»ΡΡΡΠΈΠΉ ΠΈΠ· Π²ΡΠ΅Ρ " ΡΠ΅ΠΆΠΈΠΌ. ΠΠ° Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΠΎΠ² Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ ΠΈΠ½Π²Π΅ΡΡΠΈΡ.
ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 6.2.
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 6.2. ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅, Π²ΡΡΠ°Π²ΠΊΠ° ΠΈ Π°ΡΡΠΈΠ±ΡΡΡΠ’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π·Π½Π°Π΅ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠ± ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΡΠΊΡΠ°Π½ΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΡΡΠ°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ moveadd.c. ΠΡ Π²ΠΊΠ»ΡΡΠΈΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ refresh ΠΈ sleep Π² ΡΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ°Π³Π΅ Π²ΠΈΠ΄Π΅ΡΡ, ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠΊΡΠ°Π½. ΠΠ±ΡΡΠ½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ curses ΡΡΠ°ΡΠ°ΡΡΡΡ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΡΠΊΡΠ°Π½ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΠΆΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ Π½Π΅ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π²ΡΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ Π½Π°ΠΏΠΈΡΠ°Π½ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ Π΄ΠΎΠ»Π΅ΠΉ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠ΅ΠΉ Π½Π°Π³Π»ΡΠ΄Π½ΠΎΡΡΠΈ.
1. ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π²ΡΡΠ°Π²ΡΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π½ΠΈΡ , Π° Π·Π°ΡΠ΅ΠΌ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ curses:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <curses.h>
int main() {
const char witch_one[] = " First Witch ";
const char witch_two[] = " Second Witch ";
const char *scan_ptr;
initscr();
2. Π’Π΅ΠΏΠ΅ΡΡ Π΄Π»Ρ ΡΡΠ΅Ρ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅ ΡΠ΅ΡΠ΅Π· ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Ρ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅ ΠΈ ΠΎΡΠΊΠ»ΡΡΠΈΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ»Π°Π³ΠΈ Π°ΡΡΠΈΠ±ΡΡΠΎΠ²;
move(5, 15);
attron(A_BOLD);
printw("%s", "Macbeth");
attroff(A_BOLD);
refresh();
sleep(1);
move(8, 15);
attron(A_STANDOUT);
printw("%s", "Thunder and Lightning");
attroff(A_STANDOUT);
refresh();
sleep(1);
move(10, 10);
printw("%s", "When shall we three meet again");
move(11, 23);
printw("%s", "In thunder, lightning, or in rain ?");
move(13, 10);
printw("%s", "When the hurlyburly's done, ");
move(14, 23);
printw("%s", "When the battle's lost and won.");
refresh();
sleep(1);
3. ΠΠ΅ΠΉΡΡΠ²ΡΡΡΠΈΠ΅ Π»ΠΈΡΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Ρ, ΠΈ ΠΈΡ ΠΈΠΌΠ΅Π½Π° Π²ΡΠ²ΠΎΠ΄ΡΡΡΡ ΠΏΠΎΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΠΎ:
attron(A_DIM);
scan_ptr = witch_one + strlen(witch_one) - 1;
while (scan_ptr != witch_one) {
move(10, 10);
insch(*scan_ptr--);
}
scan_ptr = witch_two + strlen(witch_two) - 1;
while (scan_ptr != witch_two) {
move(13, 10);
insch(*scan_ptr--);
}
attroff(A_DIM);
refresh();
sleep(1);
4. Π Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΠ΅ ΠΊΡΡΡΠΎΡ Π² ΠΏΡΠ°Π²ΡΠΉ Π½ΠΈΠΆΠ½ΠΈΠΉ ΡΠ³ΠΎΠ» ΡΠΊΡΠ°Π½Π°, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΡΡΠ΅ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅:
move(LINES - 1, COLS - 1);
refresh();
sleep(1);
endwin();
exit(EXIT_SUCCESS);
}
ΠΠΎΠ³Π΄Π° Π²Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π·Π°ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠΊΡΠ°Π½ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠΈΡ. 6.3. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΡΠ½ΠΈΠΌΠΎΠΊ ΡΠΊΡΠ°Π½Π° Π½Π΅ Π΄Π°Π΅Ρ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Π²ΠΏΠ΅ΡΠ°ΡΠ»Π΅Π½ΠΈΡ ΠΈ Π½Π΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΊΡΡΡΠΎΡ, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΉ Π² ΠΏΡΠ°Π²ΠΎΠΌ Π½ΠΈΠΆΠ½Π΅ΠΌ ΡΠ³Π»Ρ ΡΠΊΡΠ°Π½Π°. ΠΠΌΡΠ»ΡΡΠΎΡ xterm ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅ΠΉ ΡΡΠ΅Π΄ΠΎΠΉ Π΄Π»Ρ ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΡΠ΅ΠΌ ΠΎΠ±ΡΡΠ½Π°Ρ ΠΊΠΎΠ½ΡΠΎΠ»Ρ.
Π ΠΈΡ. 6.3
ΠΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
ΠΠΎΡΠ»Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ ΡΠΊΡΠ°Π½Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ curses Π²Ρ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ move Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΡΡΡΠΎΡΠ° ΠΏΠΎ ΡΠΊΡΠ°Π½Ρ. ΠΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΉ attron ΠΈ attroff Π²Ρ ΡΠΏΡΠ°Π²Π»ΡΠ»ΠΈ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌΠΈ ΡΠ΅ΠΊΡΡΠ°, Π²ΡΠ²ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ Π² Π·Π°Π΄Π°Π½Π½ΡΡ ΡΠΎΡΠΊΡ ΡΠΊΡΠ°Π½Π°. ΠΠ°Π»Π΅Π΅ ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΊΡΡΡΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ curses ΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°Π»Π°, ΠΊΠ°ΠΊ Π²ΡΡΠ°Π²Π»ΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ insch.
ΠΠ»Π°Π²ΠΈΠ°ΡΡΡΠ°
ΠΠ°ΡΡΠ΄Ρ Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, ΠΎΠ±Π»Π΅Π³ΡΠ°ΡΡΠ΅Π³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΊΡΠ°Π½ΠΎΠΌ, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° curses ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΡΠ΅Π΄ΡΡΠ²Π°, ΠΎΠ±Π»Π΅Π³ΡΠ°ΡΡΠΈΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠΎΠΉ.
Π Π΅ΠΆΠΈΠΌΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
ΠΡΠΎΡΠ΅Π΄ΡΡΡ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ ΡΠ΅ΠΆΠΈΠΌΠ°ΠΌΠΈ. Π Π΅ΠΆΠΈΠΌΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ:
#include <curses.h>
int echo(void);
int noecho(void);
int cbreak(void);
int nocbreak(void);
int raw(void);
int noraw(void);
Π€ΡΠ½ΠΊΡΠΈΠΈ echo ΠΈ noecho ΠΏΡΠΎΡΡΠΎ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΈ ΠΎΡΠΊΠ»ΡΡΠ°ΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π½Π°Π±ΠΈΡΠ°Π΅ΠΌΡΡ Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ΅. ΠΡΡΠ°Π²ΡΠΈΠ΅ΡΡ ΡΠ΅ΡΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΡΠΈΠΌΠ²ΠΎΠ»Ρ, Π½Π°Π±ΡΠ°Π½Π½ΡΠ΅ Π½Π° ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅, ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ curses. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ cbreak, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ Π²Π²ΠΎΠ΄Π°. ΠΠΎΠ³Π΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ curses, ΡΡΠ°ΡΡΡΠ΅Ρ Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ initscr, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΡΠ΅ΠΆΠΈΠΌ Π²Π²ΠΎΠ΄Π°, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ ΡΠ΅ΠΆΠΈΠΌΠΎΠΌ Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ (cooked mode). ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΏΠΎΡΡΡΠΎΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ, Ρ.Π΅. Π²Π²ΠΎΠ΄ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΏΠΎΡΠ»Π΅ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΊΠ»Π°Π²ΠΈΡΠΈ <Enter> (ΠΈΠ»ΠΈ <Return> Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ°Ρ ). Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π°Π±ΠΎΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ½ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΠ³Π½Π°Π» Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠΌ, Π΅ΡΠ»ΠΈ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Ρ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°, ΡΠ°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ. ΠΡΠ·ΡΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ cbreak, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ΅ΠΆΠΈΠΌ Π²Π²ΠΎΠ΄Π° cbreak, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΠΈΡ Π½Π°Π±ΠΎΡΠ°, Π° Π½Π΅ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ Π² Π±ΡΡΠ΅Ρ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡΠΈ <Enter>. ΠΠ°ΠΊ ΠΈ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ, ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΡΡΡ, Π° ΠΏΡΠΎΡΡΡΠ΅ ΠΊΠ»Π°Π²ΠΈΡΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ <Backspace>, ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ Π½Π°ΠΆΠ°ΡΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΡΠΈ <Backspace> ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΎ ΠΊ ΠΏΡΠΈΠ²ΡΡΠ½ΡΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠΌ, ΡΠΎ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ.
ΠΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ raw ΠΎΡΠΊΠ»ΡΡΠ°Π΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ² ΠΈΠ»ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π°Π±ΡΠ°Π½Π½ΡΡ Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ. ΠΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ nocbreak Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅ΠΆΠΈΠΌ Π²Π²ΠΎΠ΄Π° Π² ΡΠ΅ΠΆΠΈΠΌ Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π½ΠΎ ΡΠ΅ΠΆΠΈΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ; Π²ΡΠ·ΠΎΠ² noraw Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΈ ΡΠ΅ΠΆΠΈΠΌ Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ, ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ².
ΠΠ»Π°Π²ΠΈΠ°ΡΡΡΠ½ΡΠΉ Π²Π²ΠΎΠ΄
Π§ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ β ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ. Π ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΡΡΠ½ΠΊΡΠΈΡΠΌ ΡΡΠ΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅:
#include <curses.h>