用C语言制作Fly bird飞鸟游戏

制作思路:

  1. 鸟每隔一段时间下降一格
  2. 按空格键使鸟跳跃
  3. 出现障碍(墙),障碍中间有空隙使鸟通过
  4. 墙会向鸟这边移动
  5. 判断鸟是否撞墙,撞墙死亡,没撞继续
  6. 无限循环随机出现墙

原版游戏:
在这里插入图片描述
用C制作出来的效果:
在这里插入图片描述
全部代码:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>

int bird_x,bird_y;							//小鸟坐标
int fast;									//速度
int width,high;								//边框
int safe_up,safe_down,Up,Down,distance;		//安全区,上墙,下墙,距离原点的长度

void HideCursor()//隐藏光标,避免光标闪烁
{
	//关闭光标
	CONSOLE_CURSOR_INFO cci;    
	cci.bVisible = FALSE;    
	cci.dwSize = sizeof(cci);    
	HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);    
	SetConsoleCursorInfo(handle, &cci);
}

void makeNum()//随机制造墙和距离
{
	SYSTEMTIME sys;
	GetLocalTime(&sys);
	char tmp[64]={0};
	int nUp;
	sprintf(tmp,"%02d",sys.wSecond);
	nUp = atoi(tmp);//上限
	int nJL = nUp;//距离
	
	nUp = nUp%10;
	nJL = nJL%30;
	
	Up = nUp;
	safe_up = Up+1;
	safe_down = safe_up+3;
	Down = safe_down+1;
	distance = nJL;
}

void ready()//初始化
{
	bird_x = 1;
	bird_y = 5;
	width = 20;
	high = 15;
	makeNum();
	fast = 200;
	
}

void birdUpdate()//内部更新
{
	bird_y ++;
	distance --;
	if(distance <= 1 && (bird_y <= Up || bird_y >= Down))//撞到墙
	{
		system("cls");
		printf("Game over!");
		getch();
		exit(0);
	}
	else if(distance == -1)
	{
		makeNum();
	}
	
	Sleep(fast);
	fast -= 10;
	if(fast<=10)
	{
		fast = 200;
	}
}

void print()//打印界面
{
	system("cls");
	int i,j;
	for(i=0;i<=high;i++)//---
	{
		for(j=0;j<=width;j++)//|||
		{
			if(i==bird_y && j==bird_x)
				printf(">");
			else if(j==distance && (i<=Up || i>=Down))
				printf("*");
			else
				printf(" ");
		}
		printf("\n");
	}
}

void userUpdate() //用户输入所致的更新
{
	//printf("123");
	char chInput;
	if(kbhit())
	{
		chInput = getch();
		if(chInput == ' ')
			bird_y = bird_y - 2;
	}
}

int main()
{
	HideCursor();
	ready();
	while(1)
	{
		print();
		//getch();
		birdUpdate();
		userUpdate();
	}
	
	return 0;
}
  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值