您的位置首页百科问答

c语言游戏编程,下落的小鸟 求代码

c语言游戏编程,下落的小鸟 求代码

的有关信息介绍如下:

c语言游戏编程,下落的小鸟 求代码

下落的小鸟

#include<stdio.h>

#include<stdlib.h>

#席立本让种视教include<conio.h>

#include<time.h>

#include<Windows.h>

intGrad360问答e=1,Score=0,Max_blank=9,Distance=18;

structBirds{intx;inty;}; //定义一种Birds数据类型(含3个成员)

B著突容坐省深irds*Bird=味迅头(Birds*)malloc(sizeof(李已若端Birds)); //定义B责资八官工推山irds类型指针变量Bird并赋初值

stru内消采婷固买范克移从各ctBg{intx,y;intl_blank;Bg*宗伯岩武述座穿菜触季pri;Bg*next;脸西待次采今哥怕}; //定义一种Bg数据类型(含5个成员)

Bg*Bg1=(Bg*)malloc(sizeof(Bg)); //定义Bg类型指针变量Bg1并赋初值

voidPosition(intx,inty) //光标定位函数(用于指定位置输出)

{COORDpos={x-1,y-1}艺众头掌比伟宽型同阳脚;

HANDLEOut=GetS载多烈则抓州议只农材tdHandle(STD_OUTPUT_HANDLE);

SetConsoleCursorPositi简组环器台on(Out,pos);

}

voidCsh() //初始化界面

{

printf("══════════════════════════════════════\n");

printf("编■■■■C语言版FlappyBird\n");

printf("■■■■\n");

printf("■由部考鱼短危水■■■\n");

printf("■■■■瞎搞人:yyp独硫吃可始班成层养落离oss原创\n");

pr剧满还层作击型门引intf("■■盾短声粉销虽期审别作■■瞎搞日期:2014.2\n");

printf("■■■■\n");

printf("■■■■改编:鸣蝉百2021.7\n");

printf("■■■■操作:按向上方向键让小鸟起飞\n");

printf("■■\n");

printf("■■\n");

printf("■■■■\n");

printf("■■■■\n");

printf("■■■■\n");

printf("■■■■\n");

printf("■■■■DEVc++运行通过\n");

printf("══════════════════════════════════════\n");

printf(" 按键继续…");

getch();

system("cls");

}

 

voidPrFK() //输出方框(游戏范围区)

{inti;

Position(1,1);printf("╔"); Position(79,1);printf("╗");

Position(1,24);printf("╚"); Position(79,24);printf("╝");

for(i=3;i<=78;i+=2){Position(i,1);printf("═");Position(i,24);printf("═");}

for(i=2;i<=23;i++)

 {Position(1,i);printf("║");if(i<11)printf("0%d",i-1);elseprintf("%d",i-1);

  Position(79,i);printf("║");

 }

Position(4,25);printf("小鸟即将出现,请准备按键起飞…");

getch();

Position(4,25);printf("                                 ");

}

voidCreatBg() //创建障碍物坐标(便于打印输出)

{Bg*Bg2=(Bg*)malloc(sizeof(Bg));

Bg1->x=90;Bg1->y=8; //确定障碍物的一对基本坐标(此时值是在游戏框之外)

Bg2->x=Bg1->x+Distance;Bg2->y=9; //下一障碍物的基本坐标x、y

Bg1->l_blank=Max_blank-Grade; //障碍物上下两部分之间的空白距离l_blank

Bg2->l_blank=Max_blank-Grade;

Bg1->next=Bg2;Bg1->pri=Bg2;

Bg2->next=Bg1;Bg2->pri=Bg1;

}

voidInsertBg(Bg*p) //随机改变障碍物的y坐标,让空白通道有上下变化

{inttemp;

Bg*Bgs=(Bg*)malloc(sizeof(Bg));

Bgs->x=p->pri->x+Distance;

Bgs->l_blank=Max_blank-Grade;

srand((int)time(0)); //启动随机数发生器

temp=rand(); //产生一个随机数并赋值给temp

if(temp%2==0)

{if((temp%4+p->pri->y+Max_blank-Grade)<21)

Bgs->y=p->pri->y+temp%4;

elseBgs->y=p->pri->y;

}

else

{if((p->pri->y-temp%4)>2)Bgs->y=p->pri->y-temp%4;

elseBgs->y=p->pri->y;

}

Bgs->pri=p->pri;Bgs->next=p;

p->pri->next=Bgs;p->pri=Bgs;

}

 

voidCreatBird() //建立小鸟的坐标(初始打印输出小鸟的位置)

{Bird->x=41;Bird->y=10;}

intCheckYN(Bg*q) //判断游戏结束与否(值为0是要结束,为1没有要结束)

{Bg*p=q;inti=0;

while(++i<=5)

{if(Bird->y>23)return0;

if(Bird->x==p->x&&Bird->y<=p->y)return0;

if((Bird->x==p->x||Bird->x==p->x+1||Bird->x==p->x+2)&&Bird->y==p->y)return0;

if(Bird->x==p->x&&Bird->y>p->y+p->l_blank)return0;

if((Bird->x==p->x||Bird->x==p->x+1||Bird->x==p->x+2)&&Bird->y==p->y+p->l_blank)

return0;

p=p->next;

}

return1;

}

voidCheck_Bg(Bg*q) //核查开头的障碍物坐标是否在游戏区内

{Bg*p=q;inti=0,temp;

while(++i<=5)

{if(p->x>-4)p=p->next;

else

{srand((int)time(0)); temp=rand();

if(temp%2==0)

{if((temp%4+p->y+Max_blank-Grade)<21)p->y=p->y+temp%4;

elsep->y=p->y;p->x=p->pri->x+Distance;

p->l_blank=Max_blank-Grade;

}

else

{if((p->y-temp%4)>2)p->y=p->y-temp%4;

elsep->y=p->y;p->x=p->pri->x+Distance;

p->l_blank=Max_blank-Grade;

}

}

}

}

 

voidPrt_Bg(Bg*q) //打印输出障碍物(依据其x、y坐标进行相应输出)

{Bg*p=q;inti=0,k,j;

while(++i<=5)

{if(p->x>0&&p->x<=78)

{for(k=2;k<p->y;k++){Position(p->x+1,k);printf("■");printf("■");printf("");}

Position(p->x,p->y);

printf("■");printf("■");printf("■");printf("");

Position(p->x,p->y+p->l_blank);

printf("■");printf("■");printf("■");printf("");

k=k+p->l_blank+1;

for(k;k<=23;k++){Position(p->x+1,k);printf("■");printf("■");printf("");}

}

p=p->next;

if(p->x==0)

{for(j=2;j<p->y;j++){Position(p->x+1,j);printf("");printf("");}

Position(p->x+1,p->y);

printf("");printf("");printf("");

Position(p->x+1,p->y+Max_blank-Grade);

printf("");printf("");printf("");

j=j+Max_blank-Grade+1;

for(j;j<=22;j++){Position(p->x+1,j);printf("");printf("");}

}

}

}

 

voidPrtBird() //打印输出小鸟

{Position(Bird->x,Bird->y-1);printf("");

Position(Bird->x,Bird->y);printf("Ю");

Position(38,2);printf("Score:%d",Score);

}

voidLoop_Bg(Bg*q) //障碍物x坐标左移,并记录成绩

{Bg*p=q;inti=0;

while(++i<=5)

{p->x=p->x-1;p=p->next;

if(Bird->x==p->x)

{Score+=1;

if(Score%4==0&&Grade<4)Grade++;

}

}

}

intmain()

{inti=0;intt;

while(1)

{

Csh();PrFK();CreatBg();

InsertBg(Bg1);InsertBg(Bg1);InsertBg(Bg1);

CreatBird();

while(1)

{if(!CheckYN(Bg1))break;

Check_Bg(Bg1);Prt_Bg(Bg1);

PrtBird();Loop_Bg(Bg1);

Bird->y=Bird->y+1;

if(GetAsyncKeyState(VK_UP)) //按下了向上方向键

{Position(Bird->x,Bird->y-1);printf("");

Bird->y=Bird->y-4;

}

Sleep(200); //程序延时200毫秒(数值大小决定游戏速度快慢)

i=0;

}

Position(6,25);

printf("游戏结束! 请输入:0.退出 1.重玩");

scanf("%d",&t);

if(t==0)break;

system("cls");Score=0;

}

return0;

}