#include "test2.c" #include "elsfk.c" /**开始游戏**/ void Gameplay() { int n; struct Tetris t,*tetris=&t; char ch; tetris->number=0; tetris->speed=280; tetris->level=1; tetris->score=0; while(1) { Flag(tetris); Temp=tetris->flag; tetris->x=FrameX+2*Frame_width+6; tetris->y=FrameY+10; tetris->flag=tetris->next; PrintTetris(tetris); tetris->x=FrameX+Frame_width; tetris->y=FrameY-1; tetris->flag=Temp; //按键操作 while(1) { label:PrintTetris(tetris); Sleep(tetris->speed); CleanTetris(tetris); Temp1=tetris->x; Temp2=tetris->flag; if(kbhit()) { ch=getch(); if(ch==75) { tetris->x-=2; } if(ch==77) { tetris->x+=2; } if(ch==80) { if(ifMove(tetris)!=0) { tetris->y+=2; } if(ifMove(tetris)==0) { tetris->y=FrameY+Frame_height-2; } } if(ch==72) { if(tetris->flag>=2&&tetris->flag<=3) { tetris->flag++; tetris->flag%=2; tetris->flag+=2; } if(tetris->flag>=4&&tetris->flag<=7) { tetris->flag++; tetris->flag%=4; tetris->flag+=4; } if(tetris->flag>=8&&tetris->flag<=11) { tetris->flag++; tetris->flag%=4; tetris->flag+=8; } if(tetris->flag>=12&&tetris->flag<=15) { tetris->flag++; tetris->flag%=4; tetris->flag+=12; } if(tetris->flag>=16&&tetris->flag<=19) { tetris->flag++; tetris->flag%=4; tetris->flag+=16; } } if(ch==32) { PrintTetris(tetris); while(1) { if(kbhit()) { ch=getch(); if(ch==32) { goto label; } } } } if(ch==27) { system("cls"); memset(a,0,6400*sizeof(int)); welcome(); } if(ifMove(tetris)==0) { tetris->x=Temp1; tetris->flag=Temp2; } else {goto label; } } tetris->y++; if(ifMove(tetris)==0) { tetris->y--; PrintTetris(tetris); Del_Fullline(tetris); break; } } for(i=tetris->y-2;iy+2;i++) { if(i==FrameY) { system("cls"); gotoxy(38,12); printf("游戏结束\n"); gotoxy(17,18); printf("我要重新玩一局--------1"); gotoxy(44,18); printf("不玩了,退出吧-------2\n"); int n; gotoxy(32,20); printf("选择【1/2】:"); scanf("%d",&n); switch(n) { case 1: system("cls"); Replay(tetris); break; case 2: exit(0); break; } } } tetris->flag=tetris->next; tetris->x=FrameX+2*Frame_width+6; tetris->y=FrameY+10; CleanTetris(tetris); } } /** * 重新开始游戏 */ void Replay(struct Tetris *tetris) { system("cls"); memset(a,0,6400*sizeof(int)); DrawGameframe(); Gameplay(); } /** *按键说明 */ void explation() { int i,j=1; system("cls"); gotoxy(32,3); printf("按键说明"); for(i=6;i<=16;i++) { for(j=15;j<=60;j++) { gotoxy(j,i); if(i==6||i==16) { printf("="); } else if(j==15||j==59) { printf("||"); } } } gotoxy(18,7); printf("tip1:玩家可以通过←→方向键来移动方块"); gotoxy(18,9); printf("tip2:通过↑使方块旋转"); gotoxy(18,11); printf("tip3:通过↓加速方块下落"); gotoxy(18,13); printf("tip4:按空格键暂停游戏,再按空格键继续"); gotoxy(18,15); printf("tip5:按ESC退出游戏"); getch(); system("cls"); main(); } /** *游戏规则 */ void regulation() { int i,j=1; system("cls"); gotoxy(34,3); printf("游戏规则"); for (i=6;i<=18;i++) { for(j=12;j<=70;j++) { gotoxy(j,i); if(i==6||i==18) { printf("="); } else if(j==12||j==69) { printf("||"); } } } gotoxy(16,7); printf("tip1:不同形状的小方块从屏幕上方落下,玩家通过调整"); gotoxy(22,9); printf("方块的位置和方向,使他们在屏幕底部拼出完整的"); gotoxy(22,11); printf("一条或几条"); gotoxy(16,13); printf("tip2:每消除一行,积分增加100"); gotoxy(16,15); printf("tip3:每累计1000分,会提升一个等级"); gotoxy(16,17); printf("tip4:提升等级会使方块下落速度加快,游戏难度加大"); getch(); system("cls"); main(); } /** *退出游戏 */ void close() { exit(0); }