已掉线,重新登录

首页 > 绿虎论坛 > 杂类 > 超级灌水 (发帖)

标题: C语言来涨姿势啦

作者: @Ta

时间: 2014-03-14

点击: 1443

Joseph:大神的C语言版flappy bird,亲测通过。。。[em]e7020[/em][em]e7020[/em][em]e7020[/em]
涨姿势了
#include<stdio.h>

#include<stdlib.h>
#include<conio.h>
#include<time.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;
    }
    /*for(i=2;i<=23;i++)
    { Position(1,i);PR_Bg_Y;printf("%d",i-1);
    Position(79,i);PR_Bg_Y;
    }*/
}
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(" ■■ ■■ C语言版 Flappy Bird\n");
    printf(" ■■ ■■ 瞎搞人:yyposs\n");
    printf(" ■■ ■■ 瞎搞日期:2014.2\n");
    printf(" ■■ ■■ 耗时:4小时\n");
    printf(" ■■■ ■■ 游戏说明:\n");
    printf(" ■■ 1-按上箭头使鸟起飞\n");
    printf(" ■■ 2-等级越高,难度越大!\n");
    printf(" Ю ■■■\n");
    printf("\n");
    printf(" ■■■ 欢迎各路大神与我探讨C、C++、VB、PHP、C#\n");
    printf(" ■■\n");
    printf(" ■■\n");
    printf(" ■■ ■■■ 【无版权,随意修改】\n");
    printf(" ■■ ■■\n");
    printf(" ■■ Ф ■■\n");
    printf(" ■■ ■■\n");
    printf(" ■■ ■■\n");
    printf(" ■■ ■■\n");
    printf(" ■■ ■■\n");
    printf(" ┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳\n");
    system("pause");
    Position(1, 1);
    int i = 0;
    while (i++<40 * 25)
        PR_Blank;
}
void 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("You Lost!");
    Position(1, 25);
    system("pause");
}

[隐藏样式|查看源码]


『回复列表(4|隐藏机器人聊天)』

1. 五爱
(/@Ta/2014-03-14 10:04//)

2. win7为了测试这个程序,我竟然装了个xp。。。
(/@Ta/2014-03-14 10:17//)

3. @huge,你可以用虚拟机
(/@Ta/2014-03-14 11:26//)

4. @幻晨,就是用虚拟机,接着想要建立共享,建立失败了。
(/@Ta/2014-03-15 12:46//)

回复需要登录

8月14日 06:06 星期四

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1