第2章-用c語(yǔ)言編寫小游戲快速入門_第1頁(yè)
第2章-用c語(yǔ)言編寫小游戲快速入門_第2頁(yè)
第2章-用c語(yǔ)言編寫小游戲快速入門_第3頁(yè)
第2章-用c語(yǔ)言編寫小游戲快速入門_第4頁(yè)
第2章-用c語(yǔ)言編寫小游戲快速入門_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第二章文本窗口第一節(jié)文本窗口的定義 Turbo C2.0的字符屏幕函數(shù)主要包括文本窗口大小的設(shè)定、窗口顏色的設(shè)置、窗口文本的清除和輸入輸出等函數(shù)。Turbo C2.0默認(rèn)定義的文本窗口為整個(gè)屏幕,共有80列(或40列)25行的文本單元,每個(gè)單元包括一個(gè)字符和一個(gè)屬性,字符即ASCII碼字符,屬性規(guī)定該字符的顏色和強(qiáng)度。Turbo C2.0可以定義屏幕上的一個(gè)矩形域作為窗口,使用window()函數(shù)定義。窗口定義之后,用有關(guān)窗口的輸入輸出函數(shù)就可以只在此窗口內(nèi)進(jìn)行操作而不超出窗口的邊界。window()函數(shù)的調(diào)用格式為: void window(int left, int top, int ri

2、ght, int bottom);該函數(shù)的原型在conio.h 中 (關(guān)于文本窗口的所有函數(shù)其頭文件均為conio.h,后面不再說明)。 函數(shù)中形式參數(shù)(int left, int top)是窗口左上角的坐標(biāo),(int right, int bottom)是窗口的右下角坐標(biāo),其中(left, top)和(right, bottom) 是相對(duì)于整個(gè)屏幕而言的。Turbo C 2.0規(guī)定整個(gè)屏幕的左上角坐標(biāo)為(1, 1),右下角坐標(biāo)為(80, 25)。并規(guī)定沿水平方向?yàn)?X軸,方向朝右;沿垂直方向?yàn)?Y軸,方向朝下。若window()函數(shù)中的坐標(biāo)超過了屏幕坐標(biāo)的界限,則窗口的定義就失去了意義,也就

3、是說定義將不起作用,但程序編譯鏈接時(shí)并不出錯(cuò)。另外,一個(gè)屏幕可以定義多個(gè)窗口,但現(xiàn)行窗口只能有一個(gè) (因?yàn)镈OS為單任務(wù)操作系統(tǒng)),當(dāng)需要用另一窗口時(shí),可將定義該窗口的window() 函數(shù)再調(diào)用一次,此時(shí)該窗口便成為現(xiàn)行窗口了。如要定義一個(gè)窗口左上角在屏幕(20,5)處,大小為30列15行的窗口可寫成: window(20, 5, 50, 25);文本窗口顏色的設(shè)置文本窗口顏色的設(shè)置包括背景顏色的設(shè)置和字符顏色的設(shè)置,使用的函數(shù)及其調(diào)用格式為: 設(shè)置背景顏色: void textbackground(int color); 設(shè)置字符顏色: void textcolor(int color);

4、 有關(guān)顏色的定義見下表。符號(hào)常數(shù) 數(shù)值 含義 字符或背景BLACK 0 黑 兩者均可BLUE 1 蘭 兩者均可GREEN 2 綠 兩者均可CYAN 3 青 兩者均可RED 4 紅 兩者均可MAGENTA 5 洋紅 兩者均可BROWN 6 棕 兩者均可LIGHTGRAY 7 淡灰 兩者均可DARKGRAY 8 深灰 只用于字符LIGHTBLUE 9 淡蘭 只用于字符LIGHTGREEN 10 淡綠 只用于字符LIGHTCYAN 11 淡青 只用于字符LIGHTRED 12 淡紅 只用于字符LIGHTMAGENTA 13 淡洋紅 只用于字符YELLOW 14 黃 只用于字符WHITE 15 白 只

5、用于字符BLINK 128 閃爍 只用于字符上表中的符號(hào)常數(shù)與相應(yīng)的數(shù)值等價(jià),二者可以互換。例如設(shè)定蘭色背景可以使用extbackground(1), 也可以使用textbackground(BLUE),兩者沒有任何區(qū)別,只不過后者比較容易記憶,一看就知道是蘭色。Turbo C 另外還提供了一個(gè)函數(shù),可以同時(shí)設(shè)置文本的字符和背景顏色,這個(gè)函數(shù)的調(diào)用格式為: void textattr(int attr); 其中: attr的值表示顏色形式編碼的信息,每一位代表的含義如下:位 7 6 5 4 3 2 1 0B b b b c c c c 閃爍 背景顏色 字符顏色字節(jié)低四位cccc設(shè)置字符顏色(0

6、到15),4-6三位bbb設(shè)置背景顏色(0到7),第7位B設(shè)置字符是否閃爍。假如要設(shè)置一個(gè)蘭底黃字,定義方法如下: textattr(YELLOW+(BLUE4); 若再要求字符閃爍,則定義變?yōu)椋?textattr(128+YELLOW+(BLUE4);注意:(1) 對(duì)于背景只有0 到7 共八種顏色,若取大于7 小于15的數(shù),則代表的顏色與減 7后的值對(duì)應(yīng)的顏色相同。(2) 用textbackground()和textcolor() 函數(shù)設(shè)置了窗口的背景與字符顏色后,在沒有用clrscr()函數(shù)清除窗口之前,顏色不會(huì)改變,直到使用了函數(shù)clrscr(),整個(gè)窗口和隨后輸出到窗口中的文本字符才會(huì)

7、變成新顏色。(3) 用textattr()函數(shù)時(shí)背景顏色應(yīng)左移4位,才能使3位背景顏色移到正確位置。下面這個(gè)程序使用了關(guān)于窗口大小的定義、顏色的設(shè)置等函數(shù),在一個(gè)屏幕上不同位置定義了7個(gè)窗口,其背景色分別使用了7種不同的顏色。#include #include main()int i;textbackground(0); /* 設(shè)置屏幕背景色 */clrscr(); /* 清除文本屏幕 */for(i=1; i8; i+)window(10+i*5, 5+i, 30+i*5, 15+i); /* 定義文本窗口 */textbackground(i); /* 定義窗口背景色 */clrscr()

8、; /* 清除窗口 */getch();第二節(jié)窗口內(nèi)文本的輸入輸出函數(shù)、窗口內(nèi)文本的輸出函數(shù) int cprintf(, ); int cputs(char*string); int putch(int ch); cprintf() 函數(shù)輸出一個(gè)格式化的字符串或數(shù)值到窗口中。它與printf()函數(shù)的用法完全一樣,區(qū)別在于cprintf() 函數(shù)的輸出受窗口限制,而printf() 函數(shù)的輸出為整個(gè)屏幕。cputs()函數(shù)輸出一個(gè)字符串到屏幕上,它與puts()函數(shù)用法完全一樣,只是受窗口大小的限制。putch()函數(shù)輸出一個(gè)字符到窗口內(nèi)。注意:(1)使用以上幾種函數(shù),當(dāng)輸出超出窗口的右邊界時(shí)

9、會(huì)自動(dòng)轉(zhuǎn)到下一行的開始處繼續(xù)輸出。當(dāng)窗口內(nèi)填滿內(nèi)容仍沒有結(jié)束輸出時(shí),窗口屏幕將會(huì)自動(dòng)逐行上卷直到輸出結(jié)束為止。(2)窗口內(nèi)文本的輸入函數(shù)int getche(void); 該函數(shù)在前面已經(jīng)講過,需要說明的是,getche()函數(shù)從鍵盤上獲得一個(gè)字符,在屏幕上顯示的時(shí)候,如果字符超過了窗口右邊界,則會(huì)被自動(dòng)轉(zhuǎn)移到下一行的開始位置。下面這個(gè)程序給上例中加入了一些文本的輸出函數(shù)。#include #include int main()int i;char *c=BLACK, BLUE, GREEN, CYAN, RED,MAGENTA, BROWN, LIGHTGRAY;textbackground

10、(0); /* 設(shè)置屏幕背景色 */clrscr(); /* 清除文本屏幕 */for(i=1; i8; i+)window(10+i*5,5+i,30+i*5,15+i); /* 定義文本窗口 */textbackground(i); /* 定義窗口背景色 */clrscr(); /* 清除窗口 */getch();return 0;、有關(guān)屏幕操作的函數(shù)void clrscr(void); 清除當(dāng)前窗口中的文本內(nèi)容, 并把光標(biāo)定位在窗口的左上角(1, 1)處。 void clreol(void); 清除當(dāng)前窗口中從光標(biāo)位置到行尾的所有字符, 光標(biāo)位置不變。void gotoxy(x, y);

11、 該函數(shù)很有用, 它用來定位光標(biāo)在當(dāng)前窗口中的位置。這里x,y是指光標(biāo)要定位處的坐標(biāo)(相對(duì)于窗口而言),當(dāng)x,y超出了窗口的大小時(shí),該函數(shù)就不起作用了。int gettext(int xl,int yl,int x2,int y2,void *buffer);int puttext(int x1,int y1,int x2,int y2,void *buffer); gettext()函數(shù)是將屏幕上指定的矩形區(qū)域內(nèi)文本內(nèi)容存入buffer 指針指向的一個(gè)內(nèi)存空間。內(nèi)存的大小用下式計(jì)算: 所用字節(jié)大小=行數(shù)*列數(shù)*2其中:行數(shù)=y2-y1+1 列數(shù)=x2-x1+1 puttext()函數(shù)則是將g

12、ettext()函數(shù)存入內(nèi)存buffer中的文字內(nèi)容拷貝到屏幕上指定的位置。int movetext(int x1, int x2, int y2, int x3, int y3); movetext()函數(shù)將屏幕上左上角為(x1, y1),右下角為(x2, y2)的一矩形窗口內(nèi)的文本內(nèi)容拷貝到左上角為(x3, y3)的新的位置。該函數(shù)的坐標(biāo)也是相對(duì)于整個(gè)屏幕而言的。注意:(1) gettext()函數(shù)和puttext() 函數(shù)中的坐標(biāo)是對(duì)整個(gè)屏幕而言的, 即是屏幕的絕對(duì)坐標(biāo),而不是相對(duì)窗口的坐標(biāo)。(2) movetext()函數(shù)是拷貝而不是移動(dòng)窗口區(qū)域內(nèi)容, 即使用該函數(shù)后, 原位置區(qū)域的文

13、本內(nèi)容仍然存在。#includemain()int i;char *f=Load F3,Pick Alt-F3,New ,Save F2,Write to ,Directory,Change dir,Os shell ,Quit Alt-X;char buf11*16*2;clrscr();textcolor(YELLOW);textbackground(BLUE);clrscr();gettext(10, 2, 24, 11, buf);window(10, 2, 24, 11);textbackground(RED);textcolor(YELLOW);clrscr();for(i=0; i9; i+)gotoxy(1, i+1);cprintf(%s, fi);getch();movetext(10, 2, 24, 11, 40, 10)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論