首先需要先画出一直小鸟,而且自由下落。并且输入键盘“空格”,则小鸟会上飞。
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
//设置全局变量
int high,width; //画布
int bird_x,bird_y; //小鸟定位
int barrier_x_Top; //障碍物的上部分长度
int barrier_x_Down; //障碍物的下部分长度=上部分+缺口。
int barrier_y; //障碍物从右至左的距离。
//清屏
void clearScreen(int x, int y)
{
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos;
pos.X=x;
pos.Y=y;
SetConsoleCursorPosition(handle,pos);
}
//隐藏光标
void HideConsor()
{
CONSOLE_CURSOR_INFO cursor_info = {1,0}; //第二个值为0,隐藏光标
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
}
void init()
{
high =40;
width =45;
bird_x =high/2;
bird_y =width/3;
//障碍物初始化
barrier_y =width/2;
barrier_x_Top = high/4;
barrier_x_Down = high*2/4;
HideConsor();
}
void show()
{
//清屏
clearScreen(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("@"); // 刻画小鸟
//else if((barrier_y == i) && ((barrier_x_Top ==j) || (barrier_x_Down ==j)))
// printf("#"); //障碍物
else if(i == high)
printf("-");
else if(j == width)
printf("|");
else
printf(" ");
}
printf("\n");
}
}
void userInput()
{
char userInput;
if(kbhit())
{
userInput = getch();
if(userInput == ' ')
bird_x = bird_x -2;
}
}
void gameController()
{
//小鸟自由下落
bird_x++;
}
//主函数rukou
int main()
{
init(); //初始化
while(1)
{
show(); //展示
userInput(); //用户控制
gameController(); //游戏控制和规则限制
}
}
第二步,画出障碍物。。让障碍物动起来
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
//设置全局变量
int high,width; //画布
int bird_x,bird_y; //小鸟定位
int barrier_x_Top; //障碍物的上部分长度
int barrier_x_Down; //障碍物的下部分长度=上部分+缺口。
int barrier_y; //障碍物从右至左的距离。
int score; //得分
//清屏
void clearScreen(int x, int y)
{
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos;
pos.X=x;
pos.Y=y;
SetConsoleCursorPosition(handle,pos);
}
//隐藏光标
void HideConsor()
{
CONSOLE_CURSOR_INFO cursor_info = {1,0}; //第二个值为0,隐藏光标
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
}
void init()
{
high =40;
width =45;
bird_x =high/2;
bird_y =width/3;
//障碍物初始化
barrier_y =width ;
barrier_x_Top = high/4;
barrier_x_Down = high/2;
//得分
score = 0;
HideConsor();
}
void show()
{
//清屏
clearScreen(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("@"); // 刻画小鸟
else if((barrier_y == j) && ((barrier_x_Top >=i) || (barrier_x_Down <=i)))
printf("#"); //障碍物
else if(i == high)
printf("-");
else if(j == width)
printf("|");
else
printf(" ");
}
printf("\n");
}
printf("得分:%d \n",score);
}
void userInput()
{
char userInput;
if(kbhit())
{
userInput = getch();
if(userInput == ' ')
bird_x = bird_x -2;
}
}
void gameController()
{
//累计加分
if(bird_y == barrier_y)
{
if((bird_x >=barrier_x_Top) && (bird_x <=barrier_x_Down))
score++;
else
{
printf("GAME OVER!!!");
exit(0);
}
}
//小鸟自由下落
bird_x++;
//障碍物动起来
if(barrier_y>0)
barrier_y--;
else
{
barrier_y=width;
int randPos=rand()%(high-5);
barrier_x_Top =randPos;
barrier_x_Down = randPos + high/4;
}
}
//主函数rukou
int main()
{
init(); //初始化
while(1)
{
show(); //展示
userInput(); //用户控制
gameController(); //游戏控制和规则限制
}
}