C語言程序設(shè)計(jì)課程大型作業(yè)課件_第1頁
C語言程序設(shè)計(jì)課程大型作業(yè)課件_第2頁
C語言程序設(shè)計(jì)課程大型作業(yè)課件_第3頁
C語言程序設(shè)計(jì)課程大型作業(yè)課件_第4頁
C語言程序設(shè)計(jì)課程大型作業(yè)課件_第5頁
已閱讀5頁,還剩95頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

C語言程序設(shè)計(jì)課程大型作業(yè)大型作業(yè)內(nèi)容介紹圖形操作簡介鼠標(biāo)操作簡介西文狀態(tài)下漢字的顯示DOS下如何發(fā)聲良好的程序設(shè)計(jì)風(fēng)格C語言程序設(shè)計(jì)課程大型作業(yè)大型作業(yè)內(nèi)容介紹1題目簡介

五子棋游戲的棋盤功能,要求能悔棋一步,判斷玩家輸贏。中國象棋游戲的棋盤功能,能判斷走棋是否合法,允許悔棋一步,并能對玩家記時。俄羅斯方塊,要求能選難度,記分規(guī)則同掌上機(jī)。題目簡介

五子棋游戲的棋盤功能,要求能悔棋一步,判斷玩家輸贏2所有題目簡介中文窗口下拉式菜單設(shè)計(jì),漢化界面,只要求實(shí)現(xiàn)菜單,不要求TC功能BMP圖象處理,柔化SMOOTH、銳化SHARPEN、浮雕EMBOSS、擴(kuò)散DIFFUSE和定制過濾器。對640*480*256色圖象處理所有題目簡介中文窗口下拉式菜單設(shè)計(jì),漢化界面,只要求實(shí)現(xiàn)菜單3題目簡介二維圖象動畫演示,移動、翻轉(zhuǎn)、旋轉(zhuǎn)。題目簡介二維圖象動畫演示,移動、翻轉(zhuǎn)、旋轉(zhuǎn)。4題目簡介三維模型處理,對一個立方體進(jìn)行旋轉(zhuǎn)、平移、放大縮小。題目簡介三維模型處理,對一個立方體進(jìn)行旋轉(zhuǎn)、平移、放大縮小。5題目簡介細(xì)胞生命演示,考慮到二維大數(shù)組的存取,及大數(shù)組的動態(tài)生成。數(shù)據(jù)庫的讀寫,對FOXBASE數(shù)據(jù)庫的DBF和MEM文件進(jìn)行讀寫。題目簡介細(xì)胞生命演示,考慮到二維大數(shù)組的存取,及大數(shù)組的動態(tài)6題目簡介電腦音樂程序,能根據(jù)樂譜用PC喇叭演奏。DOS版畫筆程序,要求用不同粗細(xì)的點(diǎn)、線和不同填充模式的方塊、圓,以不同顏色畫圖。題目簡介電腦音樂程序,能根據(jù)樂譜用PC喇叭演奏。7題目簡介漢諾塔的動態(tài)演示,自動移動HANIO,要求能輸入塔盤的數(shù)量。題目簡介漢諾塔的動態(tài)演示,自動移動HANIO,要求能輸入塔盤8題目簡介數(shù)據(jù)加密技術(shù)探討,DES加密算法的實(shí)現(xiàn),要求能夠加密解密,密鑰位數(shù)可以指定。撲克牌24點(diǎn)游戲,人機(jī)對弈,提供難度選擇。題目簡介數(shù)據(jù)加密技術(shù)探討,DES加密算法的實(shí)現(xiàn),要求能夠加密9題目簡介TIC-TAC-TOE的人機(jī)對弈,機(jī)器判斷輸贏。題目簡介TIC-TAC-TOE的人機(jī)對弈,機(jī)器判斷輸贏。10題目簡介人工智能“重排九宮”,8個數(shù)字放在3*3九個格子中,余下一個格子為空。要求可以用鼠標(biāo)拖動數(shù)字,并記錄玩家花費(fèi)的時間。題目簡介人工智能“重排九宮”,8個數(shù)字放在3*3九個格子中,11題目簡介跳棋,將三只黑子放在123方格中,3只白子放在567方格中,空格是4,將白子移到黑子位置,黑子移到白子位置。規(guī)則,可以走一步或跳一格,不能后退。題目簡介跳棋,將三只黑子放在123方格中,3只白子放在56712題目簡介中文文本文件閱讀器。能處理HOME,END,PGUP,PGDN,ARROW,SPACEBAR,ESCAPE鍵。顯示文件名,文件大小,以及操作提示。題目簡介中文文本文件閱讀器。能處理HOME,END,PGUP13題目簡介模擬PCTOOLS對文件進(jìn)行編輯同時顯示16進(jìn)制和字符格式信息。題目簡介模擬PCTOOLS對文件進(jìn)行編輯同時顯示16進(jìn)制和字14題目簡介自動發(fā)牌程序,能夠?qū)?4張牌隨機(jī)發(fā)給四個人。題目簡介自動發(fā)牌程序,能夠?qū)?4張牌隨機(jī)發(fā)給四個人。15課題要求四個人一組,自由組合。每組選一個題目,確定組長。上機(jī)時坐在一起。學(xué)期結(jié)束前每組提交一份正規(guī)的源程序清單,要有詳盡的注釋,同時注明哪個人負(fù)責(zé)編寫哪部分程序。最后兩周驗(yàn)收。課題要求四個人一組,自由組合。每組選一個題目,確定組長。上機(jī)16圖形操作簡介必要的頭文件必須的系統(tǒng)變量初始化圖形界面初始化出錯處理取得必須的信息關(guān)閉圖形界面一些常用的畫圖函數(shù)圖形操作簡介必要的頭文件17必要的頭文件#include<dos.h>#include<conio.h>#include<stdio.h>#include<stdlib.h>#include<graphics.h>必要的頭文件#include<dos.h>18必須的變量intGraphDriver; intGraphMode; doubleAspectRatio; intMaxX,MaxY; intMaxColors; intErrorCode;structpalettetypepalette; 必須的變量intGraphDriver; 19初始化圖形界面GraphDriver=DETECT;initgraph(&GraphDriver,&GraphMode,"");

initgraph(&GraphDriver,&GraphMode,”d:\\tc");初始化圖形界面GraphDriver=DETECT;20初始化出錯處理ErrorCode=graphresult(); if(ErrorCode!=grOk){printf("GraphicsSystemError:%s\n",grapherrormsg(ErrorCode));exit(1);}初始化出錯處理ErrorCode=graphresul21取得必須的參數(shù)getpalette(&palette); MaxColors=getmaxcolor()+1; MaxX=getmaxx();MaxY=getmaxy(); AspectRatio=(double)xasp/(double)yasp;取得必須的參數(shù)getpalette(&palette)22關(guān)閉圖形界面closegraph(); /*Returnthesystemtotextmode*/關(guān)閉圖形界面closegraph(); 23一些常用的畫圖函數(shù)outtext(buffer),outtextxy(x,y,buffer)line(x0,y0,x1,y1);linerel();lineto()circle(intx,inty,intradius);arc()bar(intl,intt,intr,intb);bar3d();moveto(intx,inty);moverel(dx,dy);getx()putpixel(x,y,color);getpixel(x,y)setcolor();setbkcolor();getcolor();getbkcolor一些常用的畫圖函數(shù)outtext(buffer),out24鼠標(biāo)操作鼠標(biāo)簡介鼠標(biāo)驅(qū)動程序的主要功能鼠標(biāo)功能調(diào)用方法鼠標(biāo)的初始化鼠標(biāo)光標(biāo)的顯示與隱藏讀取按鈕狀態(tài),讀取或設(shè)置光標(biāo)位置設(shè)置鼠標(biāo)的光標(biāo)形狀和移動范圍鼠標(biāo)操作鼠標(biāo)簡介25鼠標(biāo)簡介鼠標(biāo)系統(tǒng)實(shí)際上由兩個主要元素組成:鼠標(biāo)機(jī)制和稱作鼠標(biāo)驅(qū)動程序的內(nèi)存駐留程序。鼠標(biāo)驅(qū)動程序提供與鼠標(biāo)通信所需的全部低級支持。此外,它自動維持鼠標(biāo)光標(biāo)位置和發(fā)現(xiàn)是否按下了某個鍵。一旦裝入驅(qū)動程序,鼠標(biāo)就可以被隨后執(zhí)行的任意程序使用。鼠標(biāo)簡介鼠標(biāo)系統(tǒng)實(shí)際上由兩個主要元素組成:鼠標(biāo)機(jī)制和稱26鼠標(biāo)簡介可以通過PC中斷33H訪問鼠標(biāo)和鼠標(biāo)驅(qū)動程序的各種功能。所選擇的特定函數(shù)依賴于中斷時AX寄存器的值。三個其它寄存器(BX、CX和DX)用于把各種參數(shù)傳送給鼠標(biāo)例程。同樣,鼠標(biāo)函數(shù)使用這四個寄存器把鼠標(biāo)的位置和按鈕的狀態(tài)返回給調(diào)用函數(shù)。鼠標(biāo)簡介可以通過PC中斷33H訪問鼠標(biāo)和鼠標(biāo)驅(qū)動程序的27鼠標(biāo)驅(qū)動程序主要功能鼠標(biāo)驅(qū)動程序主要功能28鼠標(biāo)驅(qū)動程序主要功能鼠標(biāo)驅(qū)動程序主要功能29鼠標(biāo)功能調(diào)用方法用TC通過INT33H中斷來編制基本函數(shù),有三種常用方法:嵌入?yún)R編程序,如:ASMCLI清中斷利用全程變量賦予寄存器值,然后通過函數(shù)geninterrupt()調(diào)用中斷實(shí)現(xiàn)利用聯(lián)合類型REGS,SREGS通過函數(shù)int86(),int86x()調(diào)用中斷,原型在鼠標(biāo)功能調(diào)用方法用TC通過INT33H中斷來編制基本30鼠標(biāo)的初始化InitMouse(){unionREGSregs; regs.x.ax=0; int86(0x33,®s,®s); if(regs.x.ax==0) returnfalse; elsereturntrue;}鼠標(biāo)的初始化InitMouse()31鼠標(biāo)光標(biāo)的隱藏HideCur(){unionREGSregs; if(visual){ regs.x.ax=2; int86(0x33,®s,®s); visual=false;}}鼠標(biāo)光標(biāo)的隱藏HideCur()32鼠標(biāo)光標(biāo)的顯示ShowCur(){unionREGSregs; if(!visual){ regs.x.ax=1; int86(0x33,®s,®s); visual=true;}}鼠標(biāo)光標(biāo)的顯示ShowCur()33鼠標(biāo)光標(biāo)的顯示與隱藏在鼠標(biāo)驅(qū)動程序中,鼠標(biāo)的顯示狀態(tài)用0值表示,隱藏用負(fù)值表示,每調(diào)用一次顯示功能則該值加一,每調(diào)用一次隱藏功能,則該值減一。這樣,在多次調(diào)用了驅(qū)動程序的隱藏鼠標(biāo)光標(biāo)功能后,再調(diào)用顯示鼠標(biāo)光標(biāo)功能時,將不能正常顯示鼠標(biāo)光標(biāo)。需要加入一個visual布爾型變量,來取代驅(qū)動程序中的數(shù)值。鼠標(biāo)光標(biāo)的顯示與隱藏在鼠標(biāo)驅(qū)動程序中,鼠標(biāo)的顯示狀態(tài)用034讀取鼠標(biāo)的狀態(tài)Status(){ unionREGSregs; regs.x.ax=3; int86(0x33,®s,®s); x=regs.x.cx;y=regs.x.dx; status=regs.x.bx;}讀取鼠標(biāo)的狀態(tài)Status()35讀取鼠標(biāo)的狀態(tài)其中X,Y為光標(biāo)位置status&1左鍵狀態(tài),1為按下,0為未按status&2右鍵狀態(tài),1為按下,0為未按status&4中鍵狀態(tài),1為按下,0為未按要注意循環(huán)檢測時的抖動現(xiàn)象,可增加一些空循環(huán)或延時來清除剩余的按鍵信號。讀取鼠標(biāo)的狀態(tài)其中X,Y為光標(biāo)位置36設(shè)置光標(biāo)位置voidMoveMouse(intx,inty){ REGSregs; regs.x.ax=4; regs.x.cx=x; regs.x.dx=y; int86(0x33,®s,®s);}設(shè)置光標(biāo)位置voidMoveMouse(intx,int37設(shè)置鼠標(biāo)光標(biāo)形狀設(shè)置鼠標(biāo)光標(biāo)需要三個方面信息:鼠標(biāo)的外邊界:8*8點(diǎn)陣,16個整數(shù)鼠標(biāo)的內(nèi)部形狀:8*8點(diǎn)陣,16個整數(shù)以及鼠標(biāo)的熱點(diǎn)的相對坐標(biāo):intx,y其中外邊界和內(nèi)邊界連續(xù)存放,為長度為32的整型數(shù)組intmarks[32]設(shè)置鼠標(biāo)光標(biāo)形狀設(shè)置鼠標(biāo)光標(biāo)需要三個方面信息:38設(shè)置鼠標(biāo)光標(biāo)形狀SetCurs(unsignedmasks[32],x,y){ unionREGSregs; structSREGSsregs; regs.x.ax=9; regs.x.bx=x;regs.x.cx=y;/*hotspot*/ regs.x.dx=(unsigned)masks; segread(&sregs);int86(0x33,®s,®s);}設(shè)置鼠標(biāo)光標(biāo)形狀SetCurs(unsignedmasks39手的光標(biāo)數(shù)據(jù){0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,/*cursormask*/0x0c00,0x1200,0x1200,0x1200,0x13fe,0x1249,0x1249,0x1249,0x7249,0x9001,0x9001,0x9001,0x8001,0x8001,0x4002,0x3ffc/*cursormask*/}{4,0}/*hotspot*/手的光標(biāo)數(shù)據(jù){0xffff,0xffff,0xffff40設(shè)置鼠標(biāo)的移動范圍SetMouseArea(intx0,inty0,intx1,inty1){ unionREGSregs; regs.x.ax=7;regs.x.cx=x0;regs.x.dx=x1; int86(0x33,®s;®s); regs.x.ax=8;regs.x.cx=y0;regs.x.dx=y1; int86(0x33,®s,®s);}設(shè)置鼠標(biāo)的移動范圍SetMouseArea(intx0,i41西文狀態(tài)下漢字的顯示漢字庫簡介取得字節(jié)的某一位顯示24點(diǎn)陣漢字顯示16點(diǎn)陣漢字在字庫中取字模西文狀態(tài)下漢字的顯示漢字庫簡介42漢字庫簡介程序中可直接使用UCDOS中的HZK16,ASC16和HZK24三個文件。HZK16中存儲的是16*16點(diǎn)陣漢字是按行存儲的以便于顯示,每個漢字字模32BYTE,按照國標(biāo)碼順序存儲,其中也包含了682個純中文符號字母。漢字庫簡介程序中可直接使用UCDOS中的HZK16,AS43漢字庫的情況ASC16存儲256個西文ASCII碼的8*16點(diǎn)陣格式,按行存儲,每個ASCII碼16字節(jié)。HZK24X存儲24*24點(diǎn)陣打印字模,按列存儲,每個漢字字模占576字節(jié)。24*24點(diǎn)陣漢字存儲兩比較大,所以從16區(qū)1位“啊”字開始存儲,以減少字庫大小。其中X為KS表示楷體,宋體等。漢字庫的情況ASC16存儲256個西文ASCII碼的8*1644取得字節(jié)某一位的值intgetbit(unsignedcharbyte,intbit){ if(bit<0||bit>7) return0; return(byte>>bit)&0x1;}函數(shù)getbit用于得出一個字節(jié)中每個位(bit)是0還是1。取得字節(jié)某一位的值intgetbit(unsignedc45顯示24點(diǎn)陣的漢字voidPutChn24(x,y,char*by,color){ inti1,i2,i3; for(i1=0;i1<24;i1++)//LINES for(i2=0;i2<3;i2++) //3bytesperline for(i3=0;i3<8;i3++) f(getbit(by[i1*3+i2],7-i3)) putpixel(x+i1,y+(i2*8+i3),color);}顯示24點(diǎn)陣的漢字voidPutChn24(x,y,cha46顯示16點(diǎn)陣的漢字voidPutChn16(x,y,char*buf,color){ inti1,i2,i3; for(i1=0;i1<16;i1++) for(i2=0;i2<2;i2++) for(i3=0;i3<8;i3++) if(getbit(buf[i1*2+i2],7-i3)) putpixel(x+i2*8+i3,y+i1,color);}顯示16點(diǎn)陣的漢字voidPutChn16(x,y,cha47在字庫中找字模qu=c1-0xa1;wei=c2-0xa1;通過計(jì)算個計(jì)算出該區(qū)位碼在漢字庫中的偏移量:lenth=32longoffset=((qu)*94+wei)*(long)lenth;24*24點(diǎn)陣漢字字模的讀取類似,只是其偏移量計(jì)算稍有不同:lenth=72longoffset=((qu-15)*94+wei)*(long)lenth;在字庫中找字模qu=c1-0xa1;wei=c248DOS下如何發(fā)聲在下,有如下三個函數(shù)可以處理聲音:sound(longfreq):發(fā)出特定頻率的聲音nosound():停止發(fā)聲delay():延時特定時間DOS下如何發(fā)聲在下,有如下三個函數(shù)可以處理聲音:49良好的程序設(shè)計(jì)風(fēng)格使用有意義的變量名匈牙利式命名法文檔的模塊化組織(縮進(jìn)、對齊)自頂向下的設(shè)計(jì)方法增加程序的可讀性(增加注釋)不要濫用語言技巧良好的程序設(shè)計(jì)風(fēng)格使用有意義的變量名50C語言程序設(shè)計(jì)課程大型作業(yè)大型作業(yè)內(nèi)容介紹圖形操作簡介鼠標(biāo)操作簡介西文狀態(tài)下漢字的顯示DOS下如何發(fā)聲良好的程序設(shè)計(jì)風(fēng)格C語言程序設(shè)計(jì)課程大型作業(yè)大型作業(yè)內(nèi)容介紹51題目簡介

五子棋游戲的棋盤功能,要求能悔棋一步,判斷玩家輸贏。中國象棋游戲的棋盤功能,能判斷走棋是否合法,允許悔棋一步,并能對玩家記時。俄羅斯方塊,要求能選難度,記分規(guī)則同掌上機(jī)。題目簡介

五子棋游戲的棋盤功能,要求能悔棋一步,判斷玩家輸贏52所有題目簡介中文窗口下拉式菜單設(shè)計(jì),漢化界面,只要求實(shí)現(xiàn)菜單,不要求TC功能BMP圖象處理,柔化SMOOTH、銳化SHARPEN、浮雕EMBOSS、擴(kuò)散DIFFUSE和定制過濾器。對640*480*256色圖象處理所有題目簡介中文窗口下拉式菜單設(shè)計(jì),漢化界面,只要求實(shí)現(xiàn)菜單53題目簡介二維圖象動畫演示,移動、翻轉(zhuǎn)、旋轉(zhuǎn)。題目簡介二維圖象動畫演示,移動、翻轉(zhuǎn)、旋轉(zhuǎn)。54題目簡介三維模型處理,對一個立方體進(jìn)行旋轉(zhuǎn)、平移、放大縮小。題目簡介三維模型處理,對一個立方體進(jìn)行旋轉(zhuǎn)、平移、放大縮小。55題目簡介細(xì)胞生命演示,考慮到二維大數(shù)組的存取,及大數(shù)組的動態(tài)生成。數(shù)據(jù)庫的讀寫,對FOXBASE數(shù)據(jù)庫的DBF和MEM文件進(jìn)行讀寫。題目簡介細(xì)胞生命演示,考慮到二維大數(shù)組的存取,及大數(shù)組的動態(tài)56題目簡介電腦音樂程序,能根據(jù)樂譜用PC喇叭演奏。DOS版畫筆程序,要求用不同粗細(xì)的點(diǎn)、線和不同填充模式的方塊、圓,以不同顏色畫圖。題目簡介電腦音樂程序,能根據(jù)樂譜用PC喇叭演奏。57題目簡介漢諾塔的動態(tài)演示,自動移動HANIO,要求能輸入塔盤的數(shù)量。題目簡介漢諾塔的動態(tài)演示,自動移動HANIO,要求能輸入塔盤58題目簡介數(shù)據(jù)加密技術(shù)探討,DES加密算法的實(shí)現(xiàn),要求能夠加密解密,密鑰位數(shù)可以指定。撲克牌24點(diǎn)游戲,人機(jī)對弈,提供難度選擇。題目簡介數(shù)據(jù)加密技術(shù)探討,DES加密算法的實(shí)現(xiàn),要求能夠加密59題目簡介TIC-TAC-TOE的人機(jī)對弈,機(jī)器判斷輸贏。題目簡介TIC-TAC-TOE的人機(jī)對弈,機(jī)器判斷輸贏。60題目簡介人工智能“重排九宮”,8個數(shù)字放在3*3九個格子中,余下一個格子為空。要求可以用鼠標(biāo)拖動數(shù)字,并記錄玩家花費(fèi)的時間。題目簡介人工智能“重排九宮”,8個數(shù)字放在3*3九個格子中,61題目簡介跳棋,將三只黑子放在123方格中,3只白子放在567方格中,空格是4,將白子移到黑子位置,黑子移到白子位置。規(guī)則,可以走一步或跳一格,不能后退。題目簡介跳棋,將三只黑子放在123方格中,3只白子放在56762題目簡介中文文本文件閱讀器。能處理HOME,END,PGUP,PGDN,ARROW,SPACEBAR,ESCAPE鍵。顯示文件名,文件大小,以及操作提示。題目簡介中文文本文件閱讀器。能處理HOME,END,PGUP63題目簡介模擬PCTOOLS對文件進(jìn)行編輯同時顯示16進(jìn)制和字符格式信息。題目簡介模擬PCTOOLS對文件進(jìn)行編輯同時顯示16進(jìn)制和字64題目簡介自動發(fā)牌程序,能夠?qū)?4張牌隨機(jī)發(fā)給四個人。題目簡介自動發(fā)牌程序,能夠?qū)?4張牌隨機(jī)發(fā)給四個人。65課題要求四個人一組,自由組合。每組選一個題目,確定組長。上機(jī)時坐在一起。學(xué)期結(jié)束前每組提交一份正規(guī)的源程序清單,要有詳盡的注釋,同時注明哪個人負(fù)責(zé)編寫哪部分程序。最后兩周驗(yàn)收。課題要求四個人一組,自由組合。每組選一個題目,確定組長。上機(jī)66圖形操作簡介必要的頭文件必須的系統(tǒng)變量初始化圖形界面初始化出錯處理取得必須的信息關(guān)閉圖形界面一些常用的畫圖函數(shù)圖形操作簡介必要的頭文件67必要的頭文件#include<dos.h>#include<conio.h>#include<stdio.h>#include<stdlib.h>#include<graphics.h>必要的頭文件#include<dos.h>68必須的變量intGraphDriver; intGraphMode; doubleAspectRatio; intMaxX,MaxY; intMaxColors; intErrorCode;structpalettetypepalette; 必須的變量intGraphDriver; 69初始化圖形界面GraphDriver=DETECT;initgraph(&GraphDriver,&GraphMode,"");

initgraph(&GraphDriver,&GraphMode,”d:\\tc");初始化圖形界面GraphDriver=DETECT;70初始化出錯處理ErrorCode=graphresult(); if(ErrorCode!=grOk){printf("GraphicsSystemError:%s\n",grapherrormsg(ErrorCode));exit(1);}初始化出錯處理ErrorCode=graphresul71取得必須的參數(shù)getpalette(&palette); MaxColors=getmaxcolor()+1; MaxX=getmaxx();MaxY=getmaxy(); AspectRatio=(double)xasp/(double)yasp;取得必須的參數(shù)getpalette(&palette)72關(guān)閉圖形界面closegraph(); /*Returnthesystemtotextmode*/關(guān)閉圖形界面closegraph(); 73一些常用的畫圖函數(shù)outtext(buffer),outtextxy(x,y,buffer)line(x0,y0,x1,y1);linerel();lineto()circle(intx,inty,intradius);arc()bar(intl,intt,intr,intb);bar3d();moveto(intx,inty);moverel(dx,dy);getx()putpixel(x,y,color);getpixel(x,y)setcolor();setbkcolor();getcolor();getbkcolor一些常用的畫圖函數(shù)outtext(buffer),out74鼠標(biāo)操作鼠標(biāo)簡介鼠標(biāo)驅(qū)動程序的主要功能鼠標(biāo)功能調(diào)用方法鼠標(biāo)的初始化鼠標(biāo)光標(biāo)的顯示與隱藏讀取按鈕狀態(tài),讀取或設(shè)置光標(biāo)位置設(shè)置鼠標(biāo)的光標(biāo)形狀和移動范圍鼠標(biāo)操作鼠標(biāo)簡介75鼠標(biāo)簡介鼠標(biāo)系統(tǒng)實(shí)際上由兩個主要元素組成:鼠標(biāo)機(jī)制和稱作鼠標(biāo)驅(qū)動程序的內(nèi)存駐留程序。鼠標(biāo)驅(qū)動程序提供與鼠標(biāo)通信所需的全部低級支持。此外,它自動維持鼠標(biāo)光標(biāo)位置和發(fā)現(xiàn)是否按下了某個鍵。一旦裝入驅(qū)動程序,鼠標(biāo)就可以被隨后執(zhí)行的任意程序使用。鼠標(biāo)簡介鼠標(biāo)系統(tǒng)實(shí)際上由兩個主要元素組成:鼠標(biāo)機(jī)制和稱76鼠標(biāo)簡介可以通過PC中斷33H訪問鼠標(biāo)和鼠標(biāo)驅(qū)動程序的各種功能。所選擇的特定函數(shù)依賴于中斷時AX寄存器的值。三個其它寄存器(BX、CX和DX)用于把各種參數(shù)傳送給鼠標(biāo)例程。同樣,鼠標(biāo)函數(shù)使用這四個寄存器把鼠標(biāo)的位置和按鈕的狀態(tài)返回給調(diào)用函數(shù)。鼠標(biāo)簡介可以通過PC中斷33H訪問鼠標(biāo)和鼠標(biāo)驅(qū)動程序的77鼠標(biāo)驅(qū)動程序主要功能鼠標(biāo)驅(qū)動程序主要功能78鼠標(biāo)驅(qū)動程序主要功能鼠標(biāo)驅(qū)動程序主要功能79鼠標(biāo)功能調(diào)用方法用TC通過INT33H中斷來編制基本函數(shù),有三種常用方法:嵌入?yún)R編程序,如:ASMCLI清中斷利用全程變量賦予寄存器值,然后通過函數(shù)geninterrupt()調(diào)用中斷實(shí)現(xiàn)利用聯(lián)合類型REGS,SREGS通過函數(shù)int86(),int86x()調(diào)用中斷,原型在鼠標(biāo)功能調(diào)用方法用TC通過INT33H中斷來編制基本80鼠標(biāo)的初始化InitMouse(){unionREGSregs; regs.x.ax=0; int86(0x33,®s,®s); if(regs.x.ax==0) returnfalse; elsereturntrue;}鼠標(biāo)的初始化InitMouse()81鼠標(biāo)光標(biāo)的隱藏HideCur(){unionREGSregs; if(visual){ regs.x.ax=2; int86(0x33,®s,®s); visual=false;}}鼠標(biāo)光標(biāo)的隱藏HideCur()82鼠標(biāo)光標(biāo)的顯示ShowCur(){unionREGSregs; if(!visual){ regs.x.ax=1; int86(0x33,®s,®s); visual=true;}}鼠標(biāo)光標(biāo)的顯示ShowCur()83鼠標(biāo)光標(biāo)的顯示與隱藏在鼠標(biāo)驅(qū)動程序中,鼠標(biāo)的顯示狀態(tài)用0值表示,隱藏用負(fù)值表示,每調(diào)用一次顯示功能則該值加一,每調(diào)用一次隱藏功能,則該值減一。這樣,在多次調(diào)用了驅(qū)動程序的隱藏鼠標(biāo)光標(biāo)功能后,再調(diào)用顯示鼠標(biāo)光標(biāo)功能時,將不能正常顯示鼠標(biāo)光標(biāo)。需要加入一個visual布爾型變量,來取代驅(qū)動程序中的數(shù)值。鼠標(biāo)光標(biāo)的顯示與隱藏在鼠標(biāo)驅(qū)動程序中,鼠標(biāo)的顯示狀態(tài)用084讀取鼠標(biāo)的狀態(tài)Status(){ unionREGSregs; regs.x.ax=3; int86(0x33,®s,®s); x=regs.x.cx;y=regs.x.dx; status=regs.x.bx;}讀取鼠標(biāo)的狀態(tài)Status()85讀取鼠標(biāo)的狀態(tài)其中X,Y為光標(biāo)位置status&1左鍵狀態(tài),1為按下,0為未按status&2右鍵狀態(tài),1為按下,0為未按status&4中鍵狀態(tài),1為按下,0為未按要注意循環(huán)檢測時的抖動現(xiàn)象,可增加一些空循環(huán)或延時來清除剩余的按鍵信號。讀取鼠標(biāo)的狀態(tài)其中X,Y為光標(biāo)位置86設(shè)置光標(biāo)位置voidMoveMouse(intx,inty){ REGSregs; regs.x.ax=4; regs.x.cx=x; regs.x.dx=y; int86(0x33,®s,®s);}設(shè)置光標(biāo)位置voidMoveMouse(intx,int87設(shè)置鼠標(biāo)光標(biāo)形狀設(shè)置鼠標(biāo)光標(biāo)需要三個方面信息:鼠標(biāo)的外邊界:8*8點(diǎn)陣,16個整數(shù)鼠標(biāo)的內(nèi)部形狀:8*8點(diǎn)陣,16個整數(shù)以及鼠標(biāo)的熱點(diǎn)的相對坐標(biāo):intx,y其中外邊界和內(nèi)邊界連續(xù)存放,為長度為32的整型數(shù)組intmarks[32]設(shè)置鼠標(biāo)光標(biāo)形狀設(shè)置鼠標(biāo)光標(biāo)需要三個方面信息:88設(shè)置鼠標(biāo)光標(biāo)形狀SetCurs(unsignedmasks[32],x,y){ unionREGSregs; structSREGSsregs; regs.x.ax=9; regs.x.bx=x;regs.x.cx=y;/*hotspot*/ regs.x.dx=(unsigned)masks; segread(&sregs);int86(0x33,®s,®s);}設(shè)置鼠標(biāo)光標(biāo)形狀SetCurs(unsignedmasks89手的光標(biāo)數(shù)據(jù){0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,/*cursormask*/0x0c00,0x1200,0x1200,0x1200,0x13fe,0x1249,0x1249,0x1249,0x7249,0x9001,0x9001,0x9001,0x8001,0x8001,0x4002,0x3ffc/*cursormask*/}{4,0}/*hotspot*/手的光標(biāo)數(shù)據(jù){0xffff,0xffff,0xffff90設(shè)置鼠標(biāo)的移動范圍SetMouseArea(intx0,inty0,intx1,inty1){ unionREGSregs; regs.x.ax=7;regs.x.cx=x0;regs.x.dx=x1; int86(0x33,®s;®s); regs.x.ax=8;regs.x.cx=y0;regs.x.dx=y1; int86(0x33,®s,®s);}設(shè)置鼠標(biāo)的移動范圍SetMouseArea(intx0,i91西文狀態(tài)下漢字的顯示漢字庫簡介取得字節(jié)的某一位顯示24點(diǎn)陣漢字顯示16點(diǎn)陣漢字在字庫中取字模西文狀態(tài)下漢字的顯示漢字庫簡介92漢字庫簡介程序中可直接使用UCDOS中的HZK16,ASC16和HZK24三個文件。HZK16中

溫馨提示

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

最新文檔

評論

0/150

提交評論