master
胡巍 7 years ago
parent 23f1346967
commit f31d0cd0ef

@ -0,0 +1,261 @@
#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;i<tetris->y+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);
}
Loading…
Cancel
Save