首页 >> 知识经验 > 百科经验 >

俄罗斯方块c语言程序代码(c语言俄罗斯方块源代码)

2023-03-22 08:01:03 来源: 用户: 

大家好,小讯来为大家解答以上的问题。俄罗斯方块c语言程序代码,c语言俄罗斯方块源代码这个很多人还不知道,现在让我们一起来看看吧!

1、#include #include #include #define mDRAW 5 #define mLINE 6 #define mADOWN 7 #define mGEN 8 #define mLEFT 75 #define mRIGHT 77 #define mSPACE 57 #define mDOWN 80 #define mESC 1 #define TIMEINT 2 #define MAXX 9 #define MAXY 30 #define BACKCOLOR BLACK #define WINX 50 #define WINY 470 #define GAP 6 #define AREAX (WINX+GAP) #define AREAY (WINY-GAP) #define BOXW 15 int oldarea[MAXY+1][MAXX]; int area[MAXY+1][MAXX]; int actW,actH,actX,actY; int curX,curY,curColor,curW,curH; int newX,newY,newColor,newW,newH; int active; int box[4][4]; int FORCOLOR; int MESSAGE; int BOX[7][4][4]={ { {1,1,1,1}, {0,0,0,0}, {0,0,0,0}, {0,0,0,0} },{ {1,1,1,0}, {1,0,0,0}, {0,0,0,0}, {0,0,0,0} },{ {1,1,1,0}, {0,0,1,0}, {0,0,0,0}, {0,0,0,0} },{ {1,1,1,0}, {0,1,0,0}, {0,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,1,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} } }; void init(); void draw(); int genBox(); int getKey(); void lineFull(); int moveLeft(); int moveRight(); int moveDown(); int rotate(); int getW(); int getH(); void clearOldBox(); void putNewBox(); int collisionRotate(int box[][4]); void getMessage(); void dispatchMessage(); int timeCome(); void fallDown(); int gameOver(); main() { int i; init(); do { getMessage(); dispatchMessage(); } while(!gameOver()); getch(); closegraph(); } void getMessage() { if(MESSAGE) return; if(timeCome()) { MESSAGE=mADOWN; return; } if(bioskey(1)) { MESSAGE=bioskey(0)>>8; return; } } void dispatchMessage() { switch(MESSAGE) { case mLEFT: moveLeft();break; case mRIGHT: moveRight();break; case mADOWN: moveDown();break; case mSPACE: rotate();break; case mDOWN: fallDown(); break; case mDRAW: draw();break; case mLINE: lineFull();break; case mGEN: genBox();break; case mESC: closegraph(); exit(0); default: MESSAGE=0; } } void fallDown() { while(active) { moveDown(); draw(); } MESSAGE=mLINE; } int timeCome() { static long tm, old; tm=biostime(0,tm); if(tm-old=MAXX)curX=MAXX-1-curW; curY=MAXY-1-curH; newX=curX; newY=curY; actX=curX;actY=curY; actW=newW=curW; actH=newH=curH; active=1; if(collision(box)) return 0; putNewBox(); draw(); MESSAGE=0; return 1; } void lineFull() { int row,col, rowEnd,full,i,j; rowEnd=newY+newH; if(rowEnd>=MAXY-1) rowEnd=MAXY-2; for(row=newY; row<=rowEnd;) { full=1; for(col=0;colcurH? newH:curH; actW=curX+actH-newX; actX=newX; actY=newY; curX=newX; curY=newY; curW=newW; curH=newH; MESSAGE=mDRAW; return 1; } int getW() { int i,j; for(i=3;i>0;i--) for(j=0;j<4;j++) if(box[j][i]) return i; return 0; } int getH() { int i,j; for(j=3;j>0;j--) for(i=0;i<4;i++) if(box[j][i]) return j; return 0; } void clearOldBox() { int i,j; for(j=0;j<=curH; j++) for(i=0;i<=curW; i++) if(box[j][i]) area[curY+j][curX+i]=0; } void putNewBox() { int i,j; for(j=0;j<=newH;j++) for(i=0;i<=newW;i++) if(box[j][i]) area[newY+j][newX+i]=FORCOLOR; } int collision(int cbox[][4]) { int i,j; if(newX<0) return 1; if(newX+newW>=MAXX) return 1; if(newY<0) return 1; for(j=0;j<=newH;j++) for(i=0;i<=newW;i++) if(area[newY+j][newX+i]&&cbox[j][i]) return 1; return 0; } int collisionRotate(int cbox[][4]) { int i,j; if(newX+newW>=MAXX) newX=MAXX-1-newW; if(newY+newH>=MAXY) newY=MAXY-1-newH; if(collision(cbox)) return 1; for(i=0;i<=newW;i++) for(j=0;j<=newH;j++) if(area[newY+j][newX+i]) { newX-=newW-i+1; goto L; } L: return collision(cbox); } int gameOver() { if(!active &&(curY+curH>MAXY-3)) return 1; else return 0; }。

本文到此分享完毕,希望对大家有所帮助。

  免责声明:本文由用户上传,与本网站立场无关。财经信息仅供读者参考,并不构成投资建议。投资者据此操作,风险自担。 如有侵权请联系删除!

 
分享:
最新文章
  • 【经典句子大全】在日常生活中,无论是写作、演讲还是表达情感,一句经典的句子往往能起到画龙点睛的作用。它...浏览全文>>
  • 【经典句句戳心的话】在生活的长河中,有些话虽然简单,却能直击人心,让人久久不能忘怀。这些句子往往蕴含着...浏览全文>>
  • 【经典精辟句子】在日常生活中,我们常常会遇到一些让人深思、令人难忘的句子。这些句子简洁有力,富有哲理,...浏览全文>>
  • 【经典惊悚片有哪些】惊悚片以其紧张的节奏、扣人心弦的情节和令人不安的氛围,成为电影史上最受欢迎的类型之...浏览全文>>
  • 【经典教师简单自我介绍】在教育工作中,教师的自我介绍是展示个人风格、教学理念和职业态度的重要方式。一个...浏览全文>>
  • 【经典简短句子一句话】在日常生活中,一句经典而简短的句子往往能给人留下深刻印象。它们简洁有力,蕴含深意...浏览全文>>
  • 【禁不住念什么】在日常生活中,我们常常会遇到一些词语让人“禁不住”去读、去想,甚至去写。其中,“禁不住...浏览全文>>
  • 【禁闭岛结局】《禁闭岛》(英文名:Shutter Island)是一部由马丁·斯科塞斯执导,莱昂纳多·迪卡普里奥主演...浏览全文>>
  • 【禁闭岛的结局真相】《禁闭岛》(英文名:Shutter Island)是一部由马丁·斯科塞斯执导,莱昂纳多·迪卡普里...浏览全文>>
  • 【靳字怎么读】在日常生活中,我们经常会遇到一些不常见的汉字,这些字不仅发音复杂,含义也常常让人感到困惑...浏览全文>>