版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、#define MAXROW 14 /* 游戲屏幕大小*/#include < conio.h >#include < graphics.h >#include < stdlib.h >#ifdef _cplusplus#define _CPPARGS .#else#define _CPPARGS#endif# define MINBOXSIZE 15 /* 最小方塊的尺寸*/# define BGCOLOR 7 /* 背景著色*/# define GX 200# define GY 10*/#define SJNUM 10000 /* 每當(dāng)玩家打到一萬(wàn)分等
2、級(jí)加一級(jí)/* 按鍵碼 */#define VK_RIGHT 0x4d00 #define VK_DOWN 0x5000#define VK_UP 0x4800#define VK_HOME 0x4700#define VK_END 0x4f00#define VK_SPACE 0x3920#define VK_ESC 0x011b#define VK_ENTER 0x1c0d/* 定義俄羅斯方塊的方向(我定義他為4 種) */# define F_DONG 0# define F_NAN 1# define F_XI 2# define F_BEI 3# define NEXTCOL 20 /
3、* 要出的下一個(gè)方塊的縱坐標(biāo)*/#define NEXTROW 12 /* 要出的下一個(gè)方塊的橫從標(biāo)*/#define MAXCOL 20#define SCCOL 100 /*游戲屏幕大顯示器上的相對(duì)位置*/#define SCROW 60int gril2216; /*游戲屏幕坐標(biāo)*/int col=1,row=7; /* 當(dāng)前方塊的橫縱坐標(biāo)*/int boxfx=0,boxgs=0; /* 當(dāng)前寺塊的形壯和方向*/int nextboxfx=0,nextboxgs=0,maxcol=22;/* 下一個(gè)方塊的形壯和方向*/int minboxcolor=6,nextminboxcolor=
4、6;int num=0; /* 游戲分 */int dj=0,gamedj10=18,16,14,12,10,8,6,4,2,1;/*游戲等級(jí)*/* 以下我用了一個(gè)3 維數(shù) 組來(lái)紀(jì)錄方塊的最初形狀和方向*/int boxstr7416=1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0, 1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0, 0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0,1,
5、0,0,0,0,0,0,0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0, 0,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0, 1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0, 0,1,0,0,0,1,0,0,1,1,0,0,0,0,0
6、,0, 1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0.0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0.0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0.0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0.0,0,0,0,0,0,0,0,
7、1,1,1,0,0,1,0,0,0,0,0,0,1,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0,0,0,0.0,0,0,0,0,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0 ;/* 隨機(jī)得到當(dāng)前方塊和下一個(gè)方塊的形狀和方向*/ void boxrad() minboxcolor=nextminboxcolor;boxgs=nextboxgs;boxfx=nextboxfx;nextminboxcolor=random(14)+1;if(nextminboxcolor=4|nextminboxcolor=7|nextminboxc
8、olor=8)nextminboxcolor=9;nextboxfx=F_DONG;nextboxgs=random(7);/* 初始化圖形模試*/ void init(int gdrive,int gmode) int errorcode;initgraph(&gdrive,&gmode,"e:tc");errorcode=graphresult();if(errorcode!=grOk) printf("error of: %s",grapherrormsg(errorcode);exit(1);/* 在圖形模式下的清屏*/void
9、cls()setfillstyle(SOLID_FILL,0);setcolor(0);bar(0,0,640,480);/* 在圖形模式下的高級(jí)清屏*/void clscr(int a,int b,int c,int d,int color)setfillstyle(SOLID_FILL,color);setcolor(color);bar(a,b,c,d);/* 最小方塊的繪制*/void minbox(int asc,int bsc,int color,int bdcolor)int a=0,b=0;a=SCCOL+asc;b=SCROW+bsc;clscr(a+1,b+1,a-1+MI
10、NBOXSIZE,b-1+MINBOXSIZE,color);if(color!=BGCOLOR)setcolor(bdcolor);line(a+1,b+1,a-1+MINBOXSIZE,b+1);line(a+1,b+1,a+1,b-1+MINBOXSIZE);line(a-1+MINBOXSIZE,b+1,a-1+MINBOXSIZE,b-1+MINBOXSIZE); line(a+1,b-1+MINBOXSIZE,a-1+MINBOXSIZE,b-1+MINBOXSIZE); /* 游戲中出現(xiàn)的文字*/ void txt(int a,int b,char *txt,int font,i
11、nt color)setcolor(color);settextstyle(0,0,font);outtextxy(a,b,txt);/*windows 繪制 */void win(int a,int b,int c,int d,int bgcolor,int bordercolor) clscr(a,b,c,d,bgcolor);setcolor(bordercolor);line(a,b,c,b);line(a,b,a,d);line(a,d,c,d);line(c,b,c,d);/* 當(dāng)前方塊的繪制*/void funbox(int a,int b,int color,int bdcol
12、or) int i,j;int boxz44;for(i=0;i<16;i+)boxzi/4i%4=boxstrboxgsboxfxi;for(i=0;i<4;i+)for(j=0;j<4;j+)if(boxzij=1)minbox(j+row+a)*MINBOXSIZE,(i+col+b)*MINBOXSIZE,color,bdcolor);/* 下一個(gè)方塊的繪制*/void nextfunbox(int a,int b,int color,int bdcolor)int i,j;int boxz44;for(i=0;i<16;i+) boxzi/4i%4=boxst
13、rnextboxgsnextboxfxi;for(i=0;i<4;i+) for(j=0;j<4;j+)if(boxzij=1)minbox(j+a)*MINBOXSIZE,(i+b)*MINBOXSIZE,color,bdcolor);/* 時(shí)間中斷定義*/#define TIMER 0x1cint TimerCounter=0;void interrupt ( *oldhandler)(_CPPARGS);void interrupt newhandler(_CPPARGS)TimerCounter+;oldhandler();void SetTimer(void interr
14、upt (*IntProc)(_CPPARGS)oldhandler=getvect(TIMER);disable();setvect(TIMER,IntProc);enable();/* 由于 游戲的規(guī)則,消掉都有最小方塊的一行*/void delcol(int a)int i,j;for(i=a;i>1;i-)for(j=1;j<15;j+)minbox(j*MINBOXSIZE,i*MINBOXSIZE,BGCOLOR,BGCOLOR);grilij=grili-1j;if(grilij=1)minbox(j*MINBOXSIZE,i*MINBOXSIZE,minboxcol
15、or,0);/* 消掉所有都有最小方塊的行*/ void delete()int i,j,zero,delgx=0;char *nm="00000"for(i=1;i<21;i+)zero=0;for(j=1;j<15;j+)if(grilj=0)zero=1;if(zero=0)delcol(i);delgx+;num=num+delgx*delgx*10;dj=num/10000;sprintf(nm,"%d",num);clscr(456,173,500,200,4);txt(456,173,"Number:",1,
16、15);txt(456,193,nm,1,15);/* 時(shí)間中斷結(jié)束*/void KillTimer()disable();setvect(TIMER,oldhandler);enable();/* 測(cè)試當(dāng)前方塊是否可以向下落*/int downok()int i,j,k=1,a44;for(i=0;i<16;i+)ai/4i%4=boxstrboxgsboxfxi;for(i=0;i<4;i+) for(j=0;j<4;j+)if(aj && grilcol+i+1row+j) k=0;return(k);/* 測(cè)試當(dāng)前方塊是否可以向左行*/int left
17、ok()int i,j,k=1,a44;for(i=0;i<16;i+)ai/4i%4=boxstrboxgsboxfxi;for(i=0;i<4;i+)for(j=0;j<4;j+)if(aj && grilcol+irow+j-1)k=0;return(k);/* 測(cè)試當(dāng)前方塊是否可以向右行*/int rightok() int i,j,k=1,a44;for(i=0;i<16;i+)ai/4i%4=boxstrboxgsboxfxi;for(i=0;i<4;i+)for(j=0;j<4;j+)if(aj && grilc
18、ol+irow+j+1)k=0;return(k);/* 測(cè)試當(dāng)前方塊是否可以變形*/int upok()int i,j,k=1,a44;for(i=0;i<4;i+)for(i=0;i<16;i+) ai/4i%4=boxstrboxgsboxfx+1i;for(i=3;i>=0;i-) for(j=3;j>=0;j-)if(aj && grilcol+irow+j)k=0;return(k);/* 當(dāng)前方塊落下之后,給屏幕坐標(biāo)作標(biāo)記*/void setgril()int i,j,a44;funbox(0,0,minboxcolor,0);for(i=
19、0;i<16;i+)ai/4i%4=boxstrboxgsboxfxi;for(i=0;i<4;i+)for(j=0;j<4;j+)if(aj) grilcol+irow+j=1;col=1;row=7;/* 游戲結(jié)束*/void gameover()int i,j;for(i=20;i>0;i-)for(j=1;j<15;j+)minbox(j*MINBOXSIZE,i*MINBOXSIZE,2,0);txt(103,203," Game Over",3,10);/* 按鍵的設(shè)置*/void call_key(int keyx)switch(
20、keyx)case VK_DOWN: /* 下方向鍵,橫坐標(biāo)加一。*/if(downok() col+;funbox(0,0,minboxcolor,0); elsefunbox(0,0,minboxcolor,0);setgril();nextfunbox(NEXTCOL,NEXTROW,4,4);boxrad();nextfunbox(NEXTCOL,NEXTROW,nextminboxcolor,0);delete();break;case VK_UP: /* 上方向鍵,方向形狀旋轉(zhuǎn)90 度 */if(upok()boxfx+;if(boxfx>3) boxfx=0;funbox(
21、0,0,minboxcolor,0);break;case VK_LEFT: /* 左方向鍵,縱坐標(biāo)減一*/if(leftok()row-;funbox(0,0,minboxcolor,0);break;case VK_RIGHT: /* 右方向鍵,縱坐標(biāo)加一*/if(rightok()row+;funbox(0,0,minboxcolor,0);break;case VK_SPACE: /* 空格鍵 ,直接落到最后可以落到的們置*/while(downok() col+;funbox(0,0,minboxcolor,0);setgril();nextfunbox(NEXTCOL,NEXTRO
22、W,4,4);boxrad();nextfunbox(NEXTCOL,NEXTROW,nextminboxcolor,0);delete();break;default:txt(423,53,"worng key!",1,4);txt(428,80,"Plese Enter Anly Key AG!",1,4);getch() ();clscr(420,50,622,97,BGCOLOR);/* 時(shí)間中斷開始*/void timezd(void)int key;SetTimer(newhandler);boxrad();nextfunbox(NEXTCOL,NEXTROW,nextminboxcolor,0);for(;)if(bioskey(1)key=bioskey(0);funbox(0,0,BGCOLOR,BGCOLOR);if(key=VK_ESC)break;call_key(key);if(TimerCounter>gamedjdj)TimerCounter=0;if(downok()funbox(0,0,BGCOLOR,BGCOLOR);col+;funbox(0,0,minboxcolor,0);else if(col=1)gameover();getch() ();break;setgril
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年自行車租賃協(xié)議模板版B版
- 2024淘寶店鋪創(chuàng)意裝修模板定制與執(zhí)行服務(wù)合同3篇
- 簡(jiǎn)支梁橋課程設(shè)計(jì)范例
- 2024年獨(dú)家經(jīng)銷商銷售合同范本3篇
- 2024年純凈水灌裝設(shè)備技術(shù)升級(jí)改造合同
- 二零二五年度海淀京張鐵路遺址公園安全風(fēng)險(xiǎn)評(píng)估與管理合同2篇
- 男士泡泡燙發(fā)型課程設(shè)計(jì)
- 2024年餐廳全權(quán)承包經(jīng)營(yíng)協(xié)議模板3
- 二零二五年度AI智能助手應(yīng)用開發(fā)與授權(quán)合同3篇
- 二零二五年度農(nóng)村土地流轉(zhuǎn)及租賃合作合同示范文本3篇
- 浙江省杭州市2023-2024學(xué)年高二上學(xué)期期末學(xué)業(yè)水平測(cè)試政治試題 含解析
- 人力資源規(guī)劃
- 2024年中考語(yǔ)文名著閱讀《儒林外史》內(nèi)容簡(jiǎn)介、主要人物形象及相關(guān)練習(xí)
- 夜泊牛渚懷古
- 安全生產(chǎn)標(biāo)準(zhǔn)化管理工作流程圖
- 德龍自卸車合格證掃描件(原圖)
- 初一英語(yǔ)單詞辨音專項(xiàng)練習(xí)(共4頁(yè))
- 塔式起重機(jī)檢查表(共18頁(yè))
- 河北省建設(shè)工程竣工驗(yàn)收?qǐng)?bào)告
- 付款申請(qǐng)單打印版模板
- 畢業(yè)設(shè)計(jì)范本
評(píng)論
0/150
提交評(píng)論