flappy bird

数据初始化,画面大小,小鸟位置,墙壁位置,得分统计


1
2
3
4
5
6
7
8
9
10
11
void start()
{
    high = 20;
    width = 50;
    bird_x = high / 2;
    bird_y = 3;
    bar_y = width / 2;
    bar_xDown = high / 3;
    bar_xTop = high / 2;
    score = 0;
}

显示小鸟,墙壁位置


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void show()
{
    gotoxy(0, 0);
    int i, j;
    for (i = 0; i < high; i++)
    {
        for (j = 0; j < width; j++)
        {
            if ((i == bird_x) && (j == bird_y))
            {
                printf("@");  //bird
            }
            else if ((j == bar_y) && ((i < bar_xDown) || (i > bar_xTop)))
            {
                printf("*"); //墙壁
            }
            else
            {
                printf(" ");
            }
        }
        printf("\n");
    }
    printf("score : %d \n", score);
}

用户在没有输入的情况下,小鸟前进,如果碰到墙壁游戏结束,通过墙壁随即刷新一个新的墙壁。(墙壁上端和下端的距离够一个小鸟飞过)。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
void updateWithoutInput()
{
    bird_x++;
    bar_y--;
    if (bird_y == bar_y)
    {
        if ((bird_x >= bar_xDown) && (bird_x <= bar_xTop))
        {
            score++;
        }
        else
        {
            printf("Game Over!");
            system("pause");
            exit(0);
        }
    }
    if (bar_y <= 0)
    {
        bar_y = width;
        int temp = rand() % (int)(high * 0.8);
        bar_xDown = temp - high / 10;
        bar_xTop = temp + high / 10;
    }
    Sleep(150);
}

用户输入更新小鸟位置


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void updateWithInput()
{
    char input;
    if (kbhit())
    {
        input = getch();
        if (input == ' ')
        {
            bird_x = bird_x - 2;
        }
    }
}
int main()
{
    start();
    while (1)
    {
        show();
        updateWithoutInput();
        updateWithInput();
    }
    return 0;
}

一个障碍物的flappy bird就完成了。

上一篇
下一篇

鄂公网安备 42082102000192号