在《FlappyBird》这款游戏中,玩家需要用一根手指来操控小鸟往上飞,不断的点击屏幕就会不断的往高处飞。放松手指,则会快速下降。所以玩家要控制小鸟一直向前飞行,然后注意躲避途中高低不平的管子得分。
在这里,我们主要使用C语言中的printf和scanf函数实现一个简单的FlappyBird游戏
整体思路
在开始游戏之前,我们先了解一些辅助函数
void gotoxy(int x, int y) //将光标调整到(x,y)的位置
{
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos;
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition(handle, pos);
}
void HideCursor() //隐藏光标
{
CONSOLE_CURSOR_INFO cursor_info = {
1, 0 };
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
主函数
我们使用一个简单的游戏框架,来减小游戏实现的难度
int main()
{
startup(); //初始化变量
while (1)
{
show(); //显示画面
updateWithoutInput();//与用户无关的更新
updateWithInput();//与用户输入有关的更新
}
return 0;
}
全局变量的定义
//游戏画面大小
int high; //行
int width; //列
//小鸟的坐标
int bird_x; //行
int bird_y; //列
//障碍物的相关坐标
int bar1_y; //障碍物与左边界的距离
int bar1_xTop; //上边障碍物底部与上边界的距离
int bar1_xDown; //下边障碍物顶部与上边界的距离
int score; //得分
数据的初始化
//游戏界面大小
high = 15;
width = 25;
//小鸟的初始位置
bird_x = high / 2;
bird_y = width / 4;
//障碍物的初始位置
bar1_y = width - 1;
bar1_xTop = high / 4;
bar1_xDown = high / 2;
//得分
score = 0;
显示画面
每一次循环,都需要重新输出一次画面,在这里,我们使用 @ 表示小鸟, * 表示障碍物
for (i = 0; i < high; i++) //行
{
for (j = 0; j < width; j++)