際際滷
Submit Search
Chuong2
0 likes
173 views
H畛 L畛i
Follow
1 of 8
Download now
Download to read offline
More Related Content
Chuong2
1.
12 ch測ng 2 :
B袖n phm v袖 cursor 則1. C存c m揃 phm m谷 r辿ng Ch坦ng ta 速揃 thy b袖n phm t孫o c存c m揃 th束ng th棚ng cho c存c ch歎 c存i, c存c s竪 v袖 du chm c息u. C存c phm n袖y 速u t孫o m揃 ASCII d袖i 1 byte. Tuy nhi捉n c達 nhu phm v袖 t脱 h樽p phm kh束ng 速樽c biu din b損ng b辿 k t湛 d袖i m辿t byte n袖y v d担 nh c存c phm ch淡c n即ng t探 F1 速n F10 hay c存c phm 速iu khin cursor . C存c phm n袖y 速樽c m束 t其 b損ng m辿t m揃 d袖i 2 byte. Byte 速u ti捉n c達 tr s竪 l袖 0 v袖 byte th淡 hai l袖 tr s竪 m揃 c単a phm n袖y . 1. Nhn bit c存c m揃 m谷 r辿ng : M辿t m揃 m谷 r辿ng ph其i c達 2 byte v袖 byte 速u ti捉n l袖 0 n捉n ch測ng trnh cn ph其i 速辰c 2 byte n袖y . Sau 速息y l袖 速o孫n ch測ng trnh nhn bit c存c m揃 m谷 r辿ng Ch測ng trnh 2-1: #include <string.h> main() { char key,key1; clrscr(); while ((key=getche())!='x') if (key==0) { key1=getch(); printf("%3d%3d",key,key1); } else printf("%3d",key); } Ch測ng trnh n袖y s hin th c存c m揃 c単a c存c phm 速樽c g但 cho d誰 ch坦ng l袖 m揃 m辿t byte hay 2 byte . Ta d誰ng h袖m getch() 速 kh束ng hin th k t湛 v探a g但 l捉n m袖n hnh . Trong biu th淡c kim tra c単a while ch測ng trnh 速辰c m揃 速u ti捉n . Nu m揃 n袖y l袖 0 , ch測ng trnh bit 速達 l袖 m揃 m谷 r辿ng v袖 速辰c tip phn th淡 hai c単a m揃 b損ng h袖m getch() . Sau 速達 n達 hin th c其 hai phn . Nu phn 速u kh存c kh束ng ch測ng trnh s cho r損ng 速息y kh束ng ph其i l袖 m揃 m谷 r辿ng v袖 hin th m揃 n袖y . 2. 則o存n nhn m揃 m谷 r辿ng : M辿t c存ch 速o存n nhn m揃 m谷 r辿ng l袖 d誰ng ph存t biu switch nh trong ch測ng trnh sau : Ch測ng trnh 2-2 : main() { int key,key1; clrscr(); while ((key=getche())!='X') if (key==0) { key1=getch(); switch (key1) { case 59 : printf("Phim F1 duoc nhann"); break; case 60 : printf("Phim F2 duoc nhann");
2.
13 break; case 75 :
printf("Phim left arrow duoc nhann"); break; default : printf("Phim mo rong khac duoc nhann"); break; } } else printf("%3d",key); getch(); } 則2. 則iu khin cursor v袖 ansi.sys 1.Kh存i nim chung :Tp tin ansi.sys cung cp tp 速揃 chun ho存 c存c m揃 速iu khin cursor . ANSI - America National Standards Institut. 則 b其o 速其m s湛 c袖i 速t c単a tp tin ansi.sys trong tp tin config.sys ta 速t dng lnh : device = ansi.sys 2. 則iu khin cursor b損ng ansi.sys : ansi.sys d誰ng d揃y escape 速 速iu khin con nh存y . Chu巽i escape g奪m nhiu k t湛 速c bit . Ansi.sys tm chu巽i escape n袖y qua th袖nh phn c単a chu巽i trong h袖m prinft() v袖 gi其i m揃 c存c lnh theo sau n達 . Chu巽i escape lu束n lu束n gi竪ng nhau , g奪m k t湛 kh束ng in 速樽c x1B(l袖 m揃 c単a k t湛 escape) sau 速達 l袖 du [ . Sau chu巽i escape c達 th c達 m辿t hay nhiu k t湛 . Nh棚 chu巽i n袖y con nh存y c達 th 速i l捉n , xu達ng , sang tr存i , ph其i hay 速nh v t孫i m辿t v tr n袖o 速達 . V d担 速 di chuyn con nh存y xu竪ng d鱈i ta d誰ng chu巽i x1B[B Ch測ng trnh 2-3 : Vit ch測ng trnh in m辿t chu巽i theo 速棚ng cho : main() { clrscr(); printf("Cho mot chuoi tan cung bang dau .:"); while (getche()!='.') printf("x1B[B"); getch(); } 3. D誰ng #define v袖 chu巽i escape : Chu巽i x1B[B 速樽c m揃 ho存 v袖 rt kh達 速辰c . Khi d誰ng c存c ch測ng trnh ph淡c t孫p n捉n ghi ch坦 r但 r袖ng b損ng c存ch d誰ng dn h鱈ng #define . Ch測ng trnh 2-4 : #define c_down "x1B[B" main() { while (getche()!='.') printf(c_down); getch(); } T達m t他t c存c lnh 速iu khin con nh存y M揃 C束ng d担ng
3.
14 [2J Xo存 m袖n
hnh v袖 速a con nh存y v home [K Xo存 速n cu竪i dng [A 則a con nh存y l捉n m辿t dng [B 則a con nh存y xu竪ng m辿t dng [C 則a con nh存y sang ph其i m辿t c辿t [D 則a con nh存y sang tr存i m辿t c辿t [%d;%df 則a con nh存y 速n v tr n袖o 速達 [s Ct gi歎 v tr con nh存y [u Kh束i ph担c v tr con nh存y [%dA 則a con nh存y l捉n m辿t s竪 dng [%dB 則a con nh存y xu竪ng m辿t s竪 dng [%dC 則a con nh存y sang ph其i m辿t s竪 c辿t [%dD 則a con nh存y sang tr存i m辿t dng v袖 nhiu c辿t 4. 則iu khin con nh存y t探 b袖n phm : Sau 速息y l袖 ch測ng trnh cho php b孫n v c存c hnh 速測n gi其n tr捉n m袖n hnh Ch測ng trnh 2-5 : #define clear "x1B[2J" #define c_left "x1B[D" #define c_right "x1B[C" #define c_up "x1B[A" #define c_down "x1B[B" #define l_arrow 75 #define r_arrow 77 #define u_arrow 72 #define d_arrow 80 #define across 205 #define updown 186 main() { int key; printf(clear); while ((key=getch())==0) { key=getche(); switch (key) { case l_arrow : printf(c_left); putch(across); break; case r_arrow : printf(c_right); putch(across); break; case u_arrow : printf(c_up); putch(updown); break; case d_arrow : printf(c_down); putch(updown); break; }
4.
15 printf(c_left); } getch(); } 5. 則a con
nh存y 速n v tr bt k : Chu巽i escape d孫ng sau s 速a con nh存y 速n v tr bt k tr捉n m袖n hnh S竪 hex 1B c単a k t湛 escape S竪 hiu dng S竪 hiu c辿t Ch歎 c存i f x 1 B [ 10 ; 40 f Sau 速息y l袖 m辿t ch測ng trnh v d担 v c存ch d誰ng chu巽i 速達 Ch測ng trnh 2-6 : #define true 1 #define clear "x1B[2J" #define erase "x1B[K" main() { int row=1,col=1; printf(clear); while(true) { printf("x1B[23;1f"); printf(erase); printf("Nhap vao so dong va so cot dang(20,40)"); scanf("%d%d",&row,&col); printf("x1B[%d;%df",row,col); printf("*(%d,%d)",row,col); } } 則6. Trnh b袖y ch巽 bt k tr捉n m袖n hnh Sau 速息y l袖 ch測ng trnh d誰ng chu巽i 速nh v cursor .Ch測ng trnh cung cp hai menu 速nh v d辰c theo m袖n hnh . Ch測ng trnh 2-7 : #define size1 5 #define size2 4 #define clear "x1B[2J" main() { static char *menu1[]= { "Open", "Close" "Save" "Print" "Quit"
5.
16 }; static char *menu2[]= { "Cut", "Copy", "Paste", "Reformat" }; void
display(char *[],int ,int); printf(clear); display(menu1,size1,20); display(menu2,size2,20); getch(); } void display(char *arr[],int size,int hpos) { int j; for (j=0;j<size;j++) { printf("x1B[%d",j+1,hpos); printf("%sn",*(arr+j)); } } C存c m担c cho t探ng menu 速樽c ct gi歎 trong m其ng c存c con tr叩 tr叩 t鱈i chu巽i . Sau 速達 ch測ng trnh d誰ng h袖m 速 hin th menu . H袖m 速nh v con nh存y nh棚 d揃y 速nh v ANSI.SYS , ly s竪 hiu dng t探 s竪 hiu c単a m担c tr捉n menu v袖 s竪 hiu c辿t 速樽c ch測ng trnh chnh truyn sang . 則7. C存c thu辿c tnh c単a k t湛 M巽i k t湛 hin th tr捉n m袖n hnh 速樽c ct gi歎 trong hai byte b辿 nh鱈 . M辿t byte l袖 m揃 th束ng th棚ng c単a k t湛 v袖 byte kia l袖 thu辿c tnh c単a n達 . Byte thu辿c tnh n 速nh din m孫o c単a k t湛 nh ch鱈p nh存y , 速m , g孫ch d鱈i , 速其o m袖u . Ta c達 th d誰ng chu巽i escape c単a ANSI 速 n 速nh thu辿c tnh c単a k t湛 . Theo sau chu巽i k t湛 escape v袖 ngoc vu束ng l袖 con s竪 v袖 ch歎 m . Sau 速息y l袖 danh s存ch c存c s竪 t孫o hiu 淡ng tr捉n m袖n hnh : 2,3,6 m袖u t竪i 0 t他t thu辿c tnh , th棚ng l袖 m袖u tr他ng tr捉n nn 速en 1 速m 4 g孫ch d鱈i 5 ch鱈p nh存y 7 速其o m袖u 8 kh束ng thy 速樽c Chu巽i escape c達 d孫ng nh sau : S竪 hex 1B c単a k t湛 escape S竪 cho bit kiu thu辿c tnh
6.
17 x
1 B [ 10 m Chu巽i n袖y 速樽c g谷i trong tin trnh hin th . M巽i khi bt m辿t thu辿c tnh , tt c其 c存c k t湛 s hin th theo thu辿c tnh m鱈i cho 速n khi n達 t他t 速i . Sau 速息y l袖 ch測ng trnh biu din c存c thu辿c tnh c単a k t湛 Ch測ng trnh 2-8 : #define NORMAL "x1B[Om" #define BOLD "x1B[1m" #define UNDER "x1B[4m" #define BLINK "x1B[5m" #define REVERSE "x1B[7m" main() { printf("normal%s blink %s normal nn",BLINK,NORMAL); printf("normal%s bold %s normal nn",BOLD,NORMAL); printf("normal%s underline %s normal nn",UNDER,NORMAL); printf("normal%s reversed %s normal nn",REVERSE,NORMAL); printf("%s%s reversed and blink %s nn",BLINK,REVERSE,NORMAL); } 則8. Menu Ta x息y d湛ng m辿t ch測ng trnh g奪m 5 m担c menu l袖 Open ,Close,Save,Print,Quit . C存c phm m嘆i t捉n l捉n xu竪ng s di chuyn vt s存ng 速n c存c m担c cn ch辰n.Phm INS 速 ch辰n v袖 th湛c hin c束ng vic t測ng 淡ng . M担c Quit s kt th坦c ch測ng trnh . Ch測ng trnh 2-9 : #define true 1 #define num 5 #define clear "x1B[2J" #define erase "x1B[K" #define normal "x1B[Om" #define reverse "x1B[7m" #define home"x1B[1;1f" #define bottom "x1B[20:1f" #define u_arro 72 #define color "x1B[4m" /*#define l_arro 75 #define r_arro 77*/ #define d_arro 80 #define insert83 main() { static char *item[num]= { "Open", "Close", "Save", "Print", "Quit" };
7.
18 int curpos; int code; void
display(char *[],int,int); int getcode(void); void action(int); printf(clear); curpos=0; while(true) { display(item,num,curpos); code=getcode(); switch (code) { case u_arro:if (curpos>0) --curpos; break; case d_arro:if (curpos<num-1) ++curpos; break; case insert:action(curpos); break; } } } void display(char *arr[],int size,int pos) { int j; printf(home); for (j=0;j<size;j++) { if (j==pos) printf(reverse); printf("%sn",*(arr+1)); printf("%s%5s",color,*(arr+j)); printf(normal); printf("%s"," "); printf(home); } } int getcode() { int key; while(getch()!=0) ; return (getch()); } void action(int pos)
8.
19 { switch(pos) { case 0: printf("Open"); break; case
1: printf("Close"); break; case 2: printf("Save"); break; case 3: printf("Print"); break; case 4: exit(); } } 則9. G存n phm ch淡c n即ng b損ng ansi.sys Nh棚 g存n chu巽i v袖o phm ch淡c n即ng ta c達 th cu hnh l孫i b袖n phm 速amg d誰ng . D孫ng th淡c c単a chu巽i g存n phm ch淡c n即ng nh sau : m揃 escape g奪m 1xB[ byte th淡 nht c単a m揃 m谷 r辿ng cho phm ch淡c n即ng du ; byte th淡 hai c単a m揃 m谷 r辿ng cho phm ch淡c n即ng du ; chu巽i cn g存n du ; xu竪ng dng ch歎 p x 1 B [ 0 ; 68 ; s ; 13 p Ch測ng trnh 2-10: main() { char str[81]; int key; clrscr(); printf("Nhap vao mot so cua phim chuc nang :"); gets(str); key=atoi(str); printf("Nhap vao mot chuoi de gan phim nay : "); gets(str); printf("x1B[0;%d;"%s";13p",key+58,str); }
Download