通过前面的基础准备,我们已经可以开始实现一个简单的弹球游戏了,这一节,我们先制作一个小球下落的动态效果。


那么既然要实现动态效果,本质就是游戏动画的原理,大家可以思考,小球从一个位置变到另一个位置,本质就是原来的位置擦除,在新的位置的重绘即可,是不是这样?

接着这个思路,如果我们反复执行下面四个步骤,会怎样?

  1. 绘制一个小球

  2. 等待x秒

  3. 擦除小球

  4. 将原先小球的位置下移


大家细想每一步,然后我们开始准备我们的代码。这一次,我们把小球再弄小一些,我们再绘制小球的时候,圆心的坐标我们不必写死(即固定的数值),而是用x,y变量替代x初始化为200,y初始化为10,从x轴200的位置下落,每次下落20,即fillcircle(x,y,10);  然后利用Sleep函数让小球停留,即可实现动态下落的效果。完整代码如下:

//弹球游戏
//www.dotcpp.com
#include <graphics.h>		// 引用图形库头文件
#include <conio.h>
int main()
{
	int i;
	int x=200,y=10;				//表示小球的圆心坐标
	initgraph(640, 480);	// 创建绘图窗口,大小为 640x480 像素

	for(i=0;i<100;i++)
	{	
		//绘制小球图案
		setfillcolor(GREEN);	
		fillcircle(x,y,10);
		Sleep(100);
		//原位置擦除小球图案
		setcolor(BLACK);
		setfillcolor(BLACK);
		fillcircle(x,y,10);

		y=y+10;	//向下移动小球位置		
	}
	
	getch();				// 按任意键继续
	closegraph();			// 关闭绘图窗口
	return 0;
}


编译运行后效果如下:

小球下落1

请大家自行上机实验理解程序,并尝试将小球向右水平移动。


好,大家完成之后,接下来我们可以尝试将小球从屏幕中心的位置开始,斜着像右下角移动,我们可以首先将圆心的位置x,y设置为屏幕的一半,每次的变化由原来的只更改y轴方向变为x轴和y轴都递增,实现向右下角的移动。代码如下:

//弹球游戏
//www.dotcpp.com
#include <graphics.h>		// 引用图形库头文件
#include <conio.h>

#define WIDTH 640
#define HIGH 480
int main()
{
	int i;
	int x=WIDTH/2,y=HIGH/2;				//表示小球的圆心坐标
	initgraph(WIDTH, HIGH);	// 创建绘图窗口,大小为 640x480 像素
	for(i=0;i<100;i++)
	{	
		//绘制小球图案
		setfillcolor(GREEN);	
		fillcircle(x,y,10);
		Sleep(50);
		//原位置擦除小球图案
		setcolor(BLACK);
		setfillcolor(BLACK);
		fillcircle(x,y,10);
		
		x=x+5;
		y=y+5;		
	}
	
	getch();				// 按任意键继续
	closegraph();			// 关闭绘图窗口
	return 0;
}


运行后效果如下:

小球下落2

请大家自行理解并尝试

点赞(0)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)