该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
http://cjhacker.bokee.com/
加了play again功能.....并且都写成函数了.....main()相当简洁了....心情好的时候会把注释加上的.
全局变量太多了,有点乱........
#include
#include
#include
#include
#include
#define UP 0x4800
#define DOWN 0x5000
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define ESC 0x011b
#define SPACE 0x3920
int map[81][51]={1},bomb=3,win1=0;
float time1=30;
char str[]="lost";
time_t first,second;
void initmap(void)
{
int i,j;
clrscr();
randomize();
for(i=2;i<=79;i++)
for(j=11;j<=39;j++)
map[i][j]=rand()%3;
for(i=1;i<=80;i++)
map[i][10]=map[i][40]=0;
for(j=11;j<=39;j++)
map[1][j]=map[80][j]=0;
map[2][11]=map[79][39]=1;
for(i=1;i<=80;i++)
for(j=10;j<=40;j++)
if(map[i][j]==0)
{
gotoxy(i,j);
printf("%c",177);
}
gotoxy(2,11);printf("%c",1);
gotoxy(79,39);printf("%c",2);
gotoxy(2,8);printf("%c:I'm coming!",1);
gotoxy(20,8);printf("Bomb:%d",bomb);
gotoxy(74,42);printf("%c:Help!",2);
gotoxy(65,46);printf("Made by cjhacker");
textcolor(4);
gotoxy(40,8);cprintf("Time left:30s");
textcolor(7);
}
void timeleft(void)
{
second=time(NULL);
time1=30-difftime(second,first);
if(time1<=0){win1=0;winna();}
if(difftime(second,first)>=1)
{ textcolor(4);
gotoxy(50,8);printf("%2.0f",time1);
textcolor(7);
}
}
winna()
{ long c=0;
clrscr();
if(win1==1) {str[0]='w';str[1]='i';str[2]='n';str[3]='!';}
gotoxy(20,10);printf("You %s",str);
gotoxy(60,45);printf("Made by cjhacker");
gotoxy(30,20);printf("Play again(SPACE)");
gotoxy(30,25);printf("Exit(ESC)");
while(1)
{
c=bioskey(0);
if(c==SPACE)
{
bomb=3,win1=0;
time1=30;str[0]='l';str[1]='o';str[2]='s';str[3]='t';
initmap();
playgame();
}
if(c==ESC) exit(0);
}
}
playgame()
{
int key=0;
struct Man
{
int x,y;
}man;
man.x=2;man.y=11;
textcolor(7);
first=time(NULL);
time1=30;
while(1)
{
while(!kbhit())
{//delay(100);
timeleft();
}
key=bioskey(0);
switch(key)
{
case UP: if(map[man.x][man.y-1]==0)break;gotoxy(man.x,man.y);printf("%c",32);man.y-=1;break;
case DOWN: if(map[man.x][man.y+1]==0)break;gotoxy(man.x,man.y);printf("%c",32);man.y+=1;break;
case LEFT: if(map[man.x-1][man.y]==0)break;gotoxy(man.x,man.y);printf("%c",32);man.x-=1;break;
case RIGHT: if(map[man.x+1][man.y]==0)break;gotoxy(man.x,man.y);printf("%c",32);man.x+=1;break;
case SPACE:
if(bomb>0)
{ map[man.x][man.y-1]=map[man.x][man.y+1]=map[man.x-1][man.y]=map[man.x+1][man.y]=1;
gotoxy(man.x,man.y-1);printf("%c",32);
gotoxy(man.x,man.y+1);printf("%c",32);
gotoxy(man.x-1,man.y);printf("%c",32);
gotoxy(man.x+1,man.y);printf("%c",32);
bomb--;gotoxy(20,8);printf("Bomb:%d",bomb);break;
}
else break;
case ESC: exit(0);
default: ;break;
}
gotoxy(man.x,man.y);
printf("%c",1);
if(man.x==79&&man.y==39) {win1=1;winna();}
}
}
main()
{
initmap();
playgame();
}