c语言again的用法,[开源]加了play again功能的迷宫游戏

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

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();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值