做游戏,学编程(C语言) 4 flappy bird

在学习数组之前,我们再做一个好玩的游戏:flappy bird。大家可以按照上一个教程中空战游戏的思路,先按照我们的提示,逐步地实现,如果有困难,再参考我们分步骤的代码,这样的锻炼效果最好。

备注:#include <windows.h> 或者 #include <cwindows.h>,大家测试下选适合自己编译器的版本。

第一步,实现一个简单下落的小鸟,实际上和飞机游戏中下落的敌机类似的效果。按空格键后,小鸟上升。

v2-cde7c4c4b5d65c8722de2cdcb47e5e82_b.png
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <cwindow.h>

// 全局变量
int high,width; // 游戏画面大小
int bird_x,bird_y; // 小鸟的坐标
int bar1_y,bar1_xDown,bar1_xTop; // 障碍物

void gotoxy(int x,int y)//类似于清屏函数
{
     
    HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD pos;
    pos.X = x;
    pos.Y = y;
    SetConsoleCursorPosition(handle,pos);
}

void startup()  // 数据初始化
{
     
	high = 15;
	width = 20;
	bird_x = 0;
	bird_y = width/3;
}

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("@");  //   输出小鸟
			else
				printf(" ");  //   输出空格
		}
		printf("\n");
	}
}	

void updateWithoutInput()  // 与用户输入无关的更新
{
     
	bird_x ++;
	Sleep(150);
}

void updateWithInput()  // 与用户输入有关的更新
{
     	
	char input;
	if(kbhit())  // 判断是否有输入
	{
     
		input = getch();  // 根据用户的不同输入来移动,不必输入回车
		if (input == ' ')  
		{
     
			bird_x = bird_x - 2;
		}
		
	}
}

void main()
{
     
	startup();  // 数据初始化	
	while (1)  //  游戏循环执行
	{
     
		show();  // 显示画面
		updateWithoutInput();  // 与用户输入无关的更新
		updateWithInput();     // 与用户输入有关的更新
	}
}


第二步,同时实现下落的小鸟和静止障碍物的显示,注意为了刻画障碍物的位置、中间缝隙的大小,需要多个变量。

v2-5088c0a6fe6bb7d9777eaf91f5547053_b.png
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <cwindow.h>

// 全局变量
int high,width; // 游戏画面大小
int bird_x,bird_y; // 小鸟的坐标
int bar1_y,bar1_xDown,bar1_xTop; // 障碍物的相关坐标

void gotoxy(int x,int y
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值