C++小游戏 flappy_bird2

接上

#include<bits/stdc++.h>
#include<Windows.h>
#define PR_Box printf("■")
#define PR_Gold printf("★")
#define PR_Ag printf("☆")
#define PR_FBird printf("Ю")
#define PR_DBird printf("Ф")
#define PR_Land printf("┳┳┯")
#define PR_Bg_TL printf("╔")
#define PR_Bg_TR printf("╗")
#define PR_Bg_DL printf("╚")
#define PR_Bg_DR printf("╝")
#define PR_Bg_X printf("═")
#define PR_Bg_Y printf("║")
#define PR_Blank printf(" ");
int Grade=1,C_Gold=0,C_Ag=0,Score=0,Delay_time=1000,Max_blank=9,Distance=18;
struct Birds {
int x,y;
int condition;
};
Birds*Bird=(Birds*)malloc(sizeof(Birds));
struct Bg {
int x,y;
int l_blank;
int reward[9];
Bg*pri;
Bg*next;
};
Bg*Bg1=new Bg[sizeof(Bg)];
void Position(int x,int y) {
COORD pos= {x-1,y-1};
HANDLE Out=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(Out,pos);
}
void CreatBird() {
Bird->x=41;
Bird->y=10;
Bird->condition=0;
}
void CreatBg() {
Bg*Bg2=(Bg*)malloc(sizeof(Bg));
Bg1->x=90;
Bg1->y=8;
Bg2->x=Bg1->x+Distance;
Bg2->y=9;
Bg1->l_blank=Max_blank-Grade;
Bg2->l_blank=Max_blank-Grade;
Bg1->next=Bg2;
Bg1->pri=Bg2;
Bg2->next=Bg1;
Bg2->pri=Bg1;
}
void InsertBg(Bg*p) {
int temp;
Bg*Bgs=(Bg*)malloc(sizeof(Bg));
Bgs->x=p->pri->x+Distance;
Bgs->l_blank=Max_blank-Grade;
srand((int)time(0));
temp=rand();
if(temp%2==0) {
    if((temp%4+p->pri->y+Max_blank-Grade)<21)Bgs->y=p->pri->y+temp%4;
    else Bgs->y=p->pri->y;
} else {
    if((p->pri->y-temp%4)>2)Bgs->y=p->pri->y-temp%4;
    else Bgs->y=p->pri->y;
}
Bgs->pri=p->pri;
Bgs->next=p;
p->pri->next=Bgs;
p->pri=Bgs;
}
void Check_Bg(Bg*q) {
Bg*p=q;
int i=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;
            else p->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;
            else p->y=p->y;
            p->x=p->pri->x+Distance;
            p->l_blank=Max_blank-Grade;
        }
    }
}
}
void Loop_Bg(Bg*q) {
Bg*p=q;
int i=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++;
    }
}
}
void Prt_Bg(Bg*q) {
Bg*p=q;
int i=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);
            PR_Box;
            PR_Box;
            PR_Blank
        }
        Position(p->x,p->y);
        PR_Box;
        PR_Box;
        PR_Box;
        PR_Blank;
        Position(p->x,p->y+p->l_blank);
        PR_Box;
        PR_Box;
        PR_Box;
        PR_Blank;
        k=k+p->l_blank+1;
        for(k; k<=22; k++) {
            Position(p->x+1,k);
            PR_Box;
            PR_Box;
            PR_Blank;
        }
        Position(p->x,23);
        for(k=1; k<Distance/3-2; k++)PR_Land;
    }
    p=p->next;
    if(p->x==0) {
        for(j=2; j<p->y; j++) {
            Position(p->x+1,j);
            PR_Blank;
            PR_Blank;
        }
        Position(p->x+1,p->y);
        PR_Blank;
        PR_Blank;
        PR_Blank;
        Position(p->x+1,p->y+Max_blank-Grade);
        PR_Blank;
        PR_Blank;
        PR_Blank;
        j=j+Max_blank-Grade+1;
        for(j; j<=22; j++) {
            Position(p->x+1,j);
            PR_Blank;
            PR_Blank;
        }
    }
}
}
void PrtBg() {
int i;
Position(1,1);
PR_Bg_TL;
Position(79,1);
PR_Bg_TR;
Position(1,24);
PR_Bg_DL;
Position(79,24);
PR_Bg_DR;
for(i=3; i<=78; i+=2) {
    Position(i,1);
    PR_Bg_X;
    Position(i,24);
    PR_Bg_X;
}
}
void PrtBird() {
Position(Bird->x,Bird->y-1);
PR_Blank;
Position(Bird->x,Bird->y);
PR_FBird;
Position(38,2);
printf("Score:%d",Score);
}
int CheckYN(Bg*q) {
Bg*p=q;
int i=0;
while(++i<=5) {
    if(Bird->y>23)return 0;
    if(Bird->x==p->x&&Bird->y<=p->y)return 0;
    if((Bird->x==p->x||Bird->x==p->x+1||Bird->x==p->x+2)&&Bird->y==p->y)return 0;
    if(Bird->x==p->x&&Bird->y>p->y+p->l_blank)return 0;
    if((Bird->x==p->x||Bird->x==p->x+1||Bird->x==p->x+2)&&Bird->y==p->y+p->l_blank)return 0;
    p=p->next;
}
return 1;
}
void Prtfirst() {
printf("══════════════════════════════════════\n");
printf(" ■■ ■■\n");
printf(" ■■ ■■\n");
printf(" ■■ ■■\n");
printf(" ■■ ■■\n");
printf(" ■■ ■■ C++语言版 Flappy Bird\n");
printf(" ■■ ■■ 瞎搞人:侦探鼠\n");
printf(" ■■ ■■ 瞎搞日期:2019.7.3\n");
printf(" ■■ ■■ 耗时:2.46小时\n");
printf(" ■■■ ■■ 游戏说明:\n");
printf(" ■■ 1-按上箭头使鸟起飞\n");
printf(" ■■ 2-等级越高,难度越大!\n");
printf(" Ю ■■■\n");
printf("\n");
printf(" \n\n\n\n\n\n\n\n");
printf(" ┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳\n");
system("pause");
Position(1,1);
int i=0;
while(i++<40*25)PR_Blank;
}
int main() {
int i=0;
char ch;
Prtfirst();
PrtBg();
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);
        PR_Blank;
        Bird->y=Bird->y-4;
    }
    while(i++<500);
    {
        Sleep(100);
    }
    i=0;
}
Position(38,10);
printf("Game Over!");
Position(1,25);
system("pause");
}

 
求点赞加关注!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值