下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、推箱子游戲-c語言/*在這個程序里m表示目的地,w表示墻,b表示箱子,。表示空地,i表示在目 的地的箱子,因為在目的地的箱子顏色與不是的是不一樣的*/ include /*dos接口函數(shù) */ rtinclude rtincludeinclude /*rom基本輸入輸出函數(shù)*/ includestruct clock int hours; int minutes; int seconds; ;char status20 20 ;/*定義二維數(shù)組status來記錄屏幕上各點的狀態(tài),*/char far *printscreen= (char far* ) 0xb8000000; /*定義了 一個
2、遠(yuǎn)指針,它指向 計算機彩色顯示器的視頻緩沖區(qū)地址,用于在屏幕上輸出字符,彩色顯示器的字符緩沖區(qū) 首地址為oxbsoooooo*/void showtime 0 ; void display。; void update ();void putoutchar(int y, int x, char ch, char fc,char be); void drawwall(int x, int y); void drawbox(int x, int y);void drawdestination(int x,int y); void drawman(int x,int y); void drawboxd
3、es(int x, int y); void init();void playgame 0;void moveboxspacetospace (int x, int y, char a) ;/*人空地移動箱子到空地*/ void moveboxdestospace (int x, int y, char a) ;/*從目的地移動箱子到空地*/ void moveboxspacetodes (int x, int y, char a) ;/*從空地移動箱子到目的地*/ void moveboxdestodes (int x, int y, char a) ;/*從目的地移動箱子到目的地*/ vo
4、id move (int x, int y, char a) ; /*人移動*/void maino int key;/*記錄按下的鍵*/int x,y; showtime () ; init 0 ;playgame () ; do_ah;3;/*設(shè)置ah,讀取光標(biāo)位置*/geninterrupt(0x10);x=_dh+l;/*讀取光標(biāo)所在的行,加1*/y=_dl+l;/*讀取光標(biāo)所在的列,加1*/while(bioskey(l)=0) ;/*直接使用bios服務(wù)的鍵盤接口在頭文件bios, h中*/key=bioskey (0) ;/*等待健盤輸入:bioskey (0)表示按下的鍵值*/
5、switch (key)case0x4800:/*如果按下向上鍵*/move (x, y, u);break;case0x5000:/*如果按下向下鍵*/move (x, y,d);break;case0x4b00:/*如果按下向左鍵*/move (x, y/ r );break;case 0x4d00:move (x, y, r ) ;/*如果按下向右鍵*/break;default:break;if (status 6 12 =* i* &status6 13= i &status6 14= i ) /*如果所有的目的地的m,都變?yōu)閕時,說明已經(jīng)嬴了*/gotoxy(15, 20);pri
6、ntf (gotoxy (15,22);printf (getcho ; /*按任意鍵結(jié)束*/break;?while(key!=0x011b); display();key=bioskey(o) ;/*接收按鍵*/if (key=0x011b)/*按 esc 健退出*/return; void showtime 0 int key; while(l)while(!kbhit ()update ();display 0;sleep (1);if (kbhit 0)break;key=bioskey(0);if (key=0x011b)break;return; void display0 ti
7、me_t nowtime; struct tm *timeinfo;time ( snowtime ) ;/*獲取時間,以秒計從1970年1月一日起算,存于nowtime*/ timeinfo = localtime ( &nowtime ) ; /*轉(zhuǎn)為當(dāng)?shù)貢r間,tm 時間結(jié)構(gòu) asctimeo轉(zhuǎn)為標(biāo)準(zhǔn)ascii時間格式*/printf ( return; void update0 struct clock times; times. seconds=o;if (times. seconds=60)/*秒針達到 60 秒時*/times. seconds=0; /*秒針重設(shè)為 0*/time
8、s. minutes+; /*把分針自加*/ if (times. minutes=60)/*分針到達 60 時*/times. minutesr;/*分針重設(shè)為 0*/times. hours+; /*把時鐘自加*/ if (times. hours=24) /*當(dāng)時鐘達到 24 時*/times. hours=0; /*把時鐘重設(shè)為 0*/times. seconds+;return; void putoutchar (int y, int x, char ch, char fc, char be)/*一個字符在視頻緩沖區(qū)里占兩個字節(jié),屏幕上文本顯示格式一行80個字符,所以*160時字符變
9、動一行,視頻 緩沖區(qū)里位置變動160個字節(jié),第一個字節(jié),存的是顯示字符的asch碼eh第二個字節(jié) 高四位存的是顯示字符的背景色be,低四位存的是字符的顏色fh */ printscreen (x*160) + (yl)+01 =ch;printscreen(x*160) + (yl)+l = (bc*16)+fc; return; void drawwall (int x, int y)/*這個 function 用來畫墻*/ putoutchar(y-l, xt, 219, green, black) ; /*用小方塊表示墻(ascii 值為 219),墻 的顏色為綠色,以黑色為背景*/st
10、atus x cy= w* ;/*把這位置設(shè)為 w*/return; void drawbox(int x, int y)/*這個 function 是在非目的地畫箱子*/ putoutchar(y-l, xt, 10, white, black) ;/*用 ascii 值為 10 的字符表示箱子*/statusx y=b ;/*這位置設(shè)為 b*/return; void drawdestination(int x, int y) /*用于畫目的地*/ put out char (y-1, xt, 003, yellow, black) ; /*以黑色為背景畫黃色目的地,用心型表 示(asci
11、i 值為 003) */ statusx y=,m* ;return; void drawman(int x, int y)/*畫人*/ gotoxy (y, x);_al=02;/*設(shè)置寄存器低位02 (ascii值),表示輸出的字符*/_cx=01;/*設(shè)置寄存器cx為01,表示重復(fù)輸出的次數(shù),這里只輸出一次*/_ah=0xa;/*,設(shè)置寄存器高位oxa表示在光標(biāo)位置顯示字符*/geninterrupt (0x10) ; /*產(chǎn)生類型為0x10的中斷,表示顯示器輸出*/return; void drawboxdes(int x, int y)/*在目的地畫箱子*/ putoutchar(y
12、-l, xt, 10, yellow, black) ;/*以黑色為背景畫黃色箱子,仍用 ascii 值 為10 的字符表示箱子*/ statusx y=1 i ; return; void init 0 /*初始化屏幕*/ int i, j;for(i=0;i20;i+)for (j=0;j20;j+)statusi j=0; /*首先將屏幕20*20范圍內(nèi)的狀態(tài)初始化為0,然后根據(jù)具體情況, 在畫箱子時,將箱子所在點的狀態(tài)改為 gotoxy (41, 4);printf(gotoxy (41, 6);/*移動光標(biāo)到指定位置輸出屏幕信息*/printf( /*也就是說在第41行,第6列的地方輸出*/got oxy (41, 8);printf ( /*同理*/ gotoxy (41, 10);printf(gotoxy (41,12);printf (gotoxy(40,16);printf (gotoxy(40,18);printf (return; void playgame 0 int x, y;for(x=l, y=l;x=14;x+)drawwall(x+4, y+10);for(x=l, y=9;x=14;x
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024旋挖樁的合同范本
- 2024版電子競技團隊組建與運營合同
- 2024年食用油采購協(xié)議
- 2024年適用:人工智能語音識別技術(shù)研發(fā)合同
- 2024年股權(quán)投資合同的投資金額、投資方式和投資期限
- 2024年航天器部件研發(fā)與生產(chǎn)合作協(xié)議
- 2025年度建筑材料綠色生產(chǎn)技術(shù)轉(zhuǎn)移合同3篇
- 2024年度文化創(chuàng)意產(chǎn)業(yè)設(shè)計人員派遣合同3篇
- 2025年度汽車4S店銷售合同附帶車輛安全性能檢測服務(wù)3篇
- 2024年高端裝備制造技術(shù)許可合同標(biāo)的及相關(guān)義務(wù)
- 2024年加油站場地出租協(xié)議
- 南寧房地產(chǎn)市場月報2024年08月
- 2024年金融理財-擔(dān)保公司考試近5年真題附答案
- 高中語文古代文學(xué)課件:先秦文學(xué)
- 人教版五年級上冊遞等式計算100道及答案
- 文娛產(chǎn)業(yè)政策與發(fā)展趨勢
- 集團公司2024年度內(nèi)控評價工作方案
- 20以內(nèi)加減法口算練習(xí)題帶括號填空135
- 公廁保潔服務(wù)投標(biāo)方案
- 六年級-上學(xué)期-心理健康教育教案
- 行車組織題庫(199道)
評論
0/150
提交評論