Danh mục

C++ và lập trình hướng đối tượng_chương 10

Số trang: 52      Loại file: pdf      Dung lượng: 189.01 KB      Lượt xem: 8      Lượt tải: 0    
Hoai.2512

Xem trước 6 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Tham khảo tài liệu c++ và lập trình hướng đối tượng_chương 10, công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Nội dung trích xuất từ tài liệu:
C++ và lập trình hướng đối tượng_chương 10 Ch¬ng 10 Mét sè ch¬ng tr×nh híng ®èi tîng trªn C++ Ch¬ng nµy tr×nh bÇy thªm mét sè ch¬ng tr×nh híng ®èi tîng trªn C++. §©y lµ c¸c ch¬ng tr×nh t¬ng®èi phøc t¹p, h÷u Ých vµ sö dông c¸c c«ng cô m¹nh cña C++ nh: C¸ch truy nhËp trùc tiÕp bé nhí mµn h×nh, küthuËt ®å ho¹, con trá void, tÝnh kÕ thõa, líp c¬ së trõu tîng, t¬ng øng béi, ph¬ng thøc ¶o. § 1. Líp cöa sæ Ch¬ng tr×nh gåm líp cua_so vµ líp stack+ Líp cöa sæ Thuéc tÝnh gåm: char *noidung; // Trá ®Õn vïng nhí chøa néi dung // so¹n th¶o trªn cöa sæ int cao,rong ; // ChiÒu cao vµ chiÒu réng cöa sæ int mau; // mau = 16*mau_nen + mau_chu int ra_mh; // Cho biÕt cöa sæ ®· ®îc ®a ra mµn h×nh cha? int posx,posy; // VÞ trÝ trªn tr¸i cña cöa sæ trªn mµn h×nh word *pluu; // Trá ®Õn vïng nhí chøa néi dung // phÇn mµn h×nh bÞ cöa sæ ®Ì lªn Ph¬ng thøc gåm: cua_so(); cua_so(int c,int r,byte mau_nen, byte mau_chu); int push(int x,int y); // §a cöa sæ ra mµn h×nh t¹i (x,y) // cho phÐp so¹n th¶o trªn cöa sæ // BÊm F6 chuyÓn sang cöa sæ kh¸c // BÊm ESC kÕt thóc504 void pop(); // Th¸o gì cöa sæ vµ kh«i phôc mµn h×nh int get_ra_mh();+ Líp stack (dïng ®Ó qu¶n lý mét dÉy cöa sæ) Thuéc tÝnh gåm: int max; //Sè cöa sæ cùc ®¹i cã thÓ qu¶n lý int num; //Sè cöa sæ hiÖn cã trong stack cua_so **pcs; //Con trá trá ®Õn vïng nhí chøa //®Þa chØ cña c¸c ®èi tîng cua_so Ph¬ng thøc gåm: stack(); stack(int max_cs); int accept(cua_so *cs,int x,int y); //§a mét cöa sæ //vµo stack, nã sÏ hiÖn lªn mµn h×nh void del(); // Lo¹i cöa sæ khái stack, nã sÏ bÞ xo¸ // khái mµn h×nh Néi dung ch¬ng tr×nh: + §Çu tiªn hiÖn cöa sæ thø nhÊt nÒn GREEN ch÷a WHITE. Cã thÓ so¹n th¶o trªn ®ã. + NÕu bÊm ESC kÕt thóc ch¬ng tr×nh, nÕu bÊm F6 th× hiÖn thªm cöa sæ thø hai nÒn CYAN ch ÷ MAGENTA. Cã thÓso¹n th¶o trªn ®ã. + NÕu bÊm ESC kÕt thóc ch¬ng tr×nh, nÕu bÊm F6 th× hiÖn thªm cöa sæ thø ba nÒn RED ch÷ YELLOW. Cã t hÓ so¹nth¶o trªn ®ã. + §ang ë mét cöa sæ, nÕu bÊm ESC th× kÕt thóc ch¬ng tr×nh, nÕu bÊm F6 th× hiÖn cöa sæ tiÕp theo (theo thø tùvßng quanh: 1 -> 2 -> 3 -> 1). Ch¬ng tr×nh sö dông ph¬ng ph¸p truy nhËp trùc tiÕp bé nhí mµn h×nh tr×nh bÇy trong ch¬ng 9. // CT10_01.CPP// lop cua_so#include #include #include #include typedef unsigned int word;typedef unsigned char byte;struct kt_word { word kt; };struct kt_byte { byte ma, mau; };union ky_tu { struct kt_byte h; struct kt_word x; };typedef union ky_tu far *VP;VP vptr=(VP)MK_FP(0xb800,0);// Vi tri x,y tren man hinh#define VPOS(x,y) (VP)(vptr + ((y)-1)*80+(x)-1)class cua_so { private: char *noidung; int cao, rong; int mau; // mau = 16*mau_nen + mau_chu int ra_mh; int posx,posy;506 word *pluu; public: cua_so(); cua_so(int c,int r,byte mau_nen, byte mau_chu); int push(int x,int y); void pop(); int get_ra_mh(); }; cua_so::cua_so() { cao=rong=mau=ra_mh=posx=posy=0; noidung=NULL; pluu=NULL; } cua_so::cua_so(int c,int r,byte mau_nen, byte mau_chu) { cao=c; rong=r; mau= 16*mau_nen+mau_chu; ra_mh=posx=posy=0; noidung = (char*)malloc(cao*rong); for (int i=0;i pluu= (word*)malloc(2*cao*rong); }int cua_so::push(int x,int y) { word *p= pluu; char *pnd=noidung; VP ptr; int i,j; // Luu man hinh if (ra_mh==0) { ra_mh=1; posx=x;posy=y; for (i=posx;i int xx=posx,yy=posy,ch1,ch2; while (1) { gotoxy(xx,yy); if ((ch1=getch())==0) ch2=getch(); if (ch1==27)break; // ESC Ket Thuc Soan Thao else if (ch1==0&&ch2==64)break; //F6 else if (ch1==13) { ++yy; xx=posx; if(yy>=posy+cao) break; } else if (ch1!=0)508 { ptr=VPOS(xx,yy); ptr->h.ma=ch1; ++xx; if (xx>=posx+rong) {++yy; xx=posx;} if (yy>=posy+cao) break; } else if (ch2==72||ch2==80||ch2==75||ch2==77) { if (ch2==72) yy--; else if (ch2==80) ++yy; else if (ch2==75) --xx; else ++xx; if (xx if (xx>=posx+rong) {++yy; xx=posx;} if (yy=posy ...

Tài liệu được xem nhiều: