文档库 最新最全的文档下载
当前位置:文档库 › C语言写的 吃豆 源码

C语言写的 吃豆 源码

#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#include "dos.h"
#include "time.h"
#define KEY_UP 0x4800
#define KEY_DOWN 0x5000
#define KEY_LEFT 0x4b00
#define KEY_RIGHT 0x4d00
#define KEY_ENTER 0x1c0d
#define KEY_ESC 0x011b
int food_number=0,food_total_number,level_number=1;
int food_xy[41][21];
int map[41][21];
struct level_score
{
int food_number;
int time_number;
}level_score[20];

void main()
{
void map_dog(int level);
void game_over();//死亡
void food(int level);//对应关卡产生食物
void display_menu(int x);//显示菜单
void control_menu();//控制菜单
void help_author(int x);//作者及帮助
void all_screen(int x);//背景
control_menu();
}
void game_start()
{
int x=4,y=4,ch;
int i,j;
clock_t T2;
window(15,2,55,22);
textcolor(1);
textbackground(3);
clrscr();//画窗口
map_dog(level_number);
food(level_number);//随机产生食物
gotoxy(4,4);cprintf("%c",1);//起始位置
while(1)
{
if(kbhit())ch=bioskey(0);//检查是否有按键
delay(999999999);//延时
if(ch==KEY_UP)
{
gotoxy(x,y);cprintf(" ");//将上一个位置清为空格
if(food_xy[x][y-1]==1)//此处是食物,吃掉,剩下的食物减一
{
food_xy[x][y-1]=0;
food_number++;
food_total_number--;
}
if(map[x][y-1]==1)//此处是陷阱,死亡
game_over();
gotoxy(2,2);
T2=clock();
cprintf("%dB %dS",food_number,T2/20);//画食物数量,以及时间
gotoxy(x,y-1);
cprintf("%c",1);//在下一个位置画脸
if((food_total_number==0)||(y==0))
{
level_score[level_number].food_number=food_number;
level_score[level_number].time_number=T2/20;
level_number++;
cprintf("You Win,Next Level?(Anykey)");
game_start();
}
y--;
if(y==0)
{
level_score[level_number].food_number=food_number;
level_score[level_number].time_number=T2/20;
game_over();
}//到达边界未转向,die
}
else if((ch==KEY_DOWN)||(y==21))
{
gotoxy(x,y);cprintf(" ");
if(food_xy[x][y+1]==1)
{
food_xy[x][y+1]=0;
food_number++;
food_total_number--;
}
if(map[x][y+1]==1)
game_over();
T2=clock();
gotoxy(2,2);
cprintf("%dB %dS",food_number,T2/20);
gotoxy(x,y+1);
cprintf("%c",1);
if(food_total_number==0)
{
level_score[level_number].food_number=food_number;
level_score[level_number].time_number=T2/20;
level_number++;
cprintf("You Win,Next Level?(Anykey)");
game_start();
}
y++;
if(y==22)
{
level_score[level_number].food_number=food_number;
level_score[level_number].time_number=T2/20;
game_over();
} }
else if(ch==KEY_LEFT)
{
gotoxy(x,y);cprintf(" ");
if(food_xy[x-1][y]==1)
{
food_xy[x-1][y]=0;
food_number++;
food_total_number--;
}
if(map[x-1][y]==1)
game_over();
gotoxy(2,2);
T2=clock();
cprintf("%dB %dS",food_number,

T2/20);
gotoxy(x-1,y);
cprintf("%c",1);
if((food_total_number==0)||(x==0))
{
level_score[level_number].food_number=food_number;
level_score[level_number].time_number=T2/20;
level_number++;
cprintf("You Win,Next Level?(Anykey)");
game_start();
}
x--;
if(x==0)
{
level_score[level_number].food_number=food_number;
level_score[level_number].time_number=T2/20;
game_over();
}
}
else if((ch==KEY_RIGHT)||(x==40))
{
gotoxy(x,y);
cprintf(" ");
if(food_xy[x+1][y]==1)
{
food_xy[x+1][y]=0;
food_number++;
food_total_number--;
}
if(map[x+1][y]==1)
game_over();
gotoxy(2,2);
T2=clock();
cprintf("%dB %dS",food_number,T2/20);
gotoxy(x+1,y);
cprintf("%c",1);
if(food_total_number==0)
{
level_score[level_number].food_number=food_number;
level_score[level_number].time_number=T2/20;
level_number++;
cprintf("You Win,Next Level?(Anykey)");
game_start();
}
x++;
if(x==42)
{
level_score[level_number].food_number=food_number;
level_score[level_number].time_number=T2/20;
game_over();
}
}

else if(ch==KEY_ESC)
{

exit(0);
}
}
}
void game_over()
{
int i;
window(1,1,80,25);
textcolor(1);
textbackground(7);
clrscr();
gotoxy(2,2);
cprintf("--------------------------------------------------");
gotoxy(2,4);
cprintf("-Level_number------Level_score------Level_time----");
for(i=1;i<=level_number;i++)
{
gotoxy(2,i*2+4);
cprintf("--%4d------------%4d Beans-------%4d Seconds---",i,level_score[i].food_number,level_score[i].time_number);
}
gotoxy(2,i*2+4);
cprintf("---------------------------------------------------");
gotoxy(2,i*2+6);
cprintf("---------------------------------------------------PRESS ENTER");
while(1)
{
if(bioskey(0)==KEY_ENTER)
control_menu();
else if(bioskey(0)==KEY_ESC)
exit(0);
}
}
void map_dog(int level)
{
int x,y,i,j;
for(i=0;i<41;i++)
for(j=0;j<21;j++)
map[i][j]=0;
for(i=0;i{
x=rand()%37+5;
y=rand()%16+5;
map[x][y]=1;
gotoxy(x,y);
textcolor(BLACK);
cprintf("%c",2);
}
}
void food(int level)
{
int x,y,i,j;
srand((unsigned)time(NULL));
for(i=0;i<41;i++)
for(j=0;j<21;j++)
food_xy[i][j]=0;
for(i=0;i{
x=rand()%37+5;
y=rand()%16+5;
food_xy[x][y]=1;
map[x][y]=0;
gotoxy(x,y);
textcolor(YELLOW);
cprintf("%c",9);
}
for(i=0;i<41;i++)
for(j=0;j<21;j++)
food_total_number+=food_xy[i][j];
}
void control_menu()
{
int i=1,ch;
food_number=0;
food_total_number=0;
level_number=1;
display_menu(1);
while(1)
{
ch=bioskey(0);
if(ch==KEY_UP)
{
if(i==1)i=4;
else i--;
}
if(ch==KEY_DOWN)
{
if(i==4)i=1;
else i++;
}
if(ch==KEY_ENTER)
{
if(i==1){game_start();break;}
else if(i==2)
{
help_author(1);
ge

tch();
}
else if(i==3)
{
help_author(2);
getch();
}
else if(i==4)
exit(0);
}
if(ch==KEY_ESC)
exit(0);
display_menu(i);
}
}
void help_author(int x)
{
all_screen(7);
window(19,4,37,13);
textcolor(RED);
textbackground(7);
clrscr();
if(x==1)
{
gotoxy(3,2);
cprintf("\"UP\"TO UP");
gotoxy(3,3);
cprintf("\"DOWN\"TO DOWN");
gotoxy(3,4);
cprintf("\"LEFT\"TO LEFT");
gotoxy(3,5);
cprintf("\"RIGHT\"TO RIGHT");
gotoxy(3,6);
cprintf("\"ESC\"TO QUIT");
}
if(x==2)
{
gotoxy(3,4);
cprintf("KK v1.0.0 QQ:18716463");
}
}
void all_screen(int x)
{
window(1,1,80,25);
textbackground(x);
clrscr();
}
void display_menu(int x)
{
all_screen(7);
window(19,4,35,13);
textcolor(BLACK);
textbackground(7);
clrscr();
gotoxy(3,2);
if(x==1)
textcolor(RED);
else textcolor(BLACK);
cprintf("Start Game");
gotoxy(3,4);
if(x==2)
textcolor(RED);
else textcolor(BLACK);
cprintf("How to Play");
gotoxy(3,6);
if(x==3)
textcolor(RED);
else textcolor(BLACK);
cprintf("About Author");
gotoxy(3,8);
if(x==4)
textcolor(RED);
else textcolor(BLACK);
cprintf("Exit");
}

相关文档
相关文档 最新文档