首页 俄罗斯方块c++源代码

俄罗斯方块c++源代码

举报
开通vip

俄罗斯方块c++源代码第一个Cpp #include #include #include #include #include #pragma comment(lib,"winmm.lib") //播放背景音乐的头文件 #include "colorConsole.h" #include #define SQUARE_COLOR BACKGROUD_BLUE|BACKGROUD_RED| BACKGROUD_INTENSITY //背景颜色 #define SQUARE_COLOR F...

俄罗斯方块c++源代码
第一个Cpp #include #include #include #include #include #pragma comment(lib,"winmm.lib") //播放背景音乐的头文件 #include "colorConsole.h" #include #define SQUARE_COLOR BACKGROUD_BLUE|BACKGROUD_RED| BACKGROUD_INTENSITY //背景颜色 #define SQUARE_COLOR FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_INTENSITY //方块的颜色 #define up 72 #define down 80 #define left 75 #define right 77 #define esc 27 #define MAPW 15 //地图的宽度 #define MAPH 25 //地图的高度 void initiate1(); int * build(); //创建方块 //初始化工作 BOOL isavailable(int a[],int x,int y,int w,int h); //判定是否能放下 void drawblocks(int a[],int w,int h,int x,int y,WORD wColors[],int nColors); void delete_cache(); //清除键盘缓冲区 void revolve(int a[][4],int w,int h,int *x,int y); //转动方块 void pro(); void end(); void delete_blocks(int *a,int w,int h,int x,int y); void gameover(); void deletefull_line(int m[][MAPW],int row,int w,int h); //消除一行 int dx=30,dy=5; //屏幕上的偏移量 int score=0,level=0; int map[MAPH][MAPW]; int a1[4][4]={{1},{1,1,1}}; int a2[4][4]={{0,1},{1,1,1}}; int a3[4][4]={{1,1},{0,1,1}}; int a4[4][4]={{0,0,1},{1,1,1}}; int a5[4][4]={{0,1,1},{1,1}}; int a6[4][4]={{1,1,1,1}}; int a7[4][4]={{1,1},{1,1}}; int a[4][4]; int main() { HANDLE handle; handle=initiate(); WORD wColors[1]={FOREGROUND_BLUE| FOREGROUND_GREEN|FOREGROUND_INTENSITY }; while(1) { sndPlaySound("Resource\\Just Dance.wav",SND_LOOP|SND_ASYNC);//用异步方式播放音乐,PlaySound函数在开始播放后立即返回 system("CLS"); int n=0; printf("目录\n1.开始游戏\n2.退出游戏\n\n\n"); scanf("%d",&n); switch(n) { case 1: system("CLS"); textout(handle,22,6,wColors+2,1,"请选择游戏等级:"); textout(handle,32,8,wColors+2,1,"1.初级"); textout(handle,32,10,wColors+2,1,"2.中级"); textout(handle,32,12,wColors+2,1,"3.高级"); while(1) { char choice; choice=_getch(); if(choice=='1') { textout(handle,22,6,wColors+2,1,"开始游戏,初级"); textout(handle,32,8,wColors+2,1," "); textout(handle,32,10,wColors+2,1," "); textout(handle,32,12,wColors+2,1," "); level=0,score=0; Sleep(2000); textout(handle,22,6,wColors+2,1," "); break; } else if(choice=='2') { textout(handle,22,6,wColors+2,1,"开始游戏,中级"); textout(handle,32,8,wColors+2,1," "); textout(handle,32,10,wColors+2,1," "); textout(handle,32,12,wColors+2,1," "); level=2,score=20; Sleep(2000); textout(handle,22,6,wColors+2,1," "); break; } else if(choice=='3') { textout(handle,22,6,wColors+2,1,"开始游戏,高级"); textout(handle,32,8,wColors+2,1," "); textout(handle,32,10,wColors+2,1," "); textout(handle,32,12,wColors+2,1," "); level=4,score=40; Sleep(2000); textout(handle,22,6,wColors+2,1," "); break; } else if(choice!='1'&&choice!='2'&&choice!='3') continue; } pro(); break; case 2: return 0; default: printf("错误,按键继续"); while(!_kbhit()); } } } void pro() //游戏主题 { initiate1(); int *b=NULL; b=build(); //创建方块 int sign,blank,x,y; while(1) { for(int i=0;i<4;i++) //复制方块 for(int j=0;j<4;j++) if(a[i][j]=*(b+i*4+j)) blank=i; y=1-blank;x=4; delete_blocks(&a[0][0],4,4,16,10); b=build(); HANDLE handle; handle=initiate(); WORD wColors[1]={FOREGROUND_BLUE| FOREGROUND_GREEN|FOREGROUND_INTENSITY }; drawblocks(b,4,4,16,10,wColors,1); wColors[0]=SQUARE_COLOR; drawblocks(&a[0][0],4,4,x,y,wColors,1); delete_cache(); char string[5]; wColors[0]=FOREGROUND_RED| FOREGROUND_GREEN|FOREGROUND_INTENSITY; textout(handle,dx-10,8+dy,wColors,1,itoa(score,string,10)); textout(handle,dx-10,14+dy,wColors,1,itoa(level,string,10)); sign=1; while(sign) { int delay=0,max_delay=100-10*level; //延迟量 while(delay0) { if(temp==-3) { textout(handle,2*(x+j)+dx,y+i+dy,wColors,nColors,"◎"); _sleep(30); } else if(temp==-2) { textout(handle,2*(x+j)+dx,y+i+dy,wColors,nColors,"║"); _sleep(30); } else if(temp==1) textout(handle,2*(x+j)+dx,y+i+dy,wColors,nColors,"◎"); else if(temp==-1) { textout(handle,2*(x+j)+dx,y+i+dy,wColors,nColors,"═"); _sleep(30); } } } void delete_cache() //清除缓冲区 { while(_kbhit()) { _getch(); } } void delete_blocks(int *a,int w,int h,int x,int y) //覆盖方块 { HANDLE handle; handle=initiate(); WORD wColors[1]={SQUARE_COLOR}; for(int i=0;i0) textout(handle,2*(x+j)+dx,y+i+dy,wColors,1," "); } void revolve(int a[][4],int w,int h,int *x,int y) //转动方块 { int b[4][4]={{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}}; int sign=0,line=0; for(int i=h-1;i>=0;i--) { for(int j=0;j1;i--) { delete_blocks(&m[i][1],MAPW-2,1,1,i); for(int j=1;j
本文档为【俄罗斯方块c++源代码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_477472
暂无简介~
格式:doc
大小:56KB
软件:Word
页数:11
分类:工学
上传时间:2012-03-28
浏览量:355