上节我们讲了关于C措辞做一个让小球运动起来的动画,但是对付弹球游戏,最主要切实其实定是会回弹!

做一个大略的C措辞绘制弹球游戏:第一步,让小球运动起来!

弹球游戏是一种经典的打算机游戏,它的基本事理是让一个小球在屏幕上不断地移动和反弹,同时避免掉落到屏幕底部。

接下来,我们将利用easy x 软件来编写一个弹球游戏的第二个版本,即碰墙自动反弹的游戏。

C措辞常识分享运用easy X编写一个小球弹跳的动画简单又易懂

类似于光的折射征象一样,当一束光被镜子挡住之后,就会发生一个折射征象,那么我们编写弹球游戏也是一样的,小球碰撞到阻挡物时,就会朝着另一个方向回弹。

明白了事理,那么我们如何实现呢?

剖析过程:

要编写一个弹球游戏,我们首先须要理解小球的运动规律。
小球的运动可以用两个方向的速率来表示,即水平方向的速率和垂直方向的速率。
这两个速率可以用两个变量来存储,比如vx和vy。
每次小球移动一步,就相称于在水平方向上加上vx,在垂直方向上加上vy。
例如,如果vx为2,vy为-1,那么每次小球移动一步,就相称于在x轴上加2,y轴上减1。

那么,当小球碰到屏幕的边界时,它的运动会发生什么变革呢?

通过不雅观察可以创造,当球碰撞底部之后,小球的x轴方向实在是没有变革的!
而y轴方向变成了反方向!
连续想象,如果是碰到顶部呢?是一样的!
那么高下考虑之后,再考虑旁边墙壁碰撞时候,类似的,小球的y轴方向是没有变革的,而x轴方向变成反方向!
这个时候,思路基本就清晰了,我们只须要在每次小球移动之前,检讨一下它是否碰到了边界,如果是的话,就把相应的速率变量取反,这样就可以实现小球的反弹效果。

编程实现:

接下来,我们来看看如何用C措辞和easy x 软件来实现这个游戏。
首先,我们须要引入easy x 软件的头文件,以及定义一些常量和变量,如下:

#include <graphics.h> // 引用图形库头文件#include <conio.h> #define WIDTH 640#define HIGH 480#define R 10

然后,我们须要初始化一个图形窗口,设置窗口的标题和大小,以及设置背景色和小球的颜色,如下:

int i;int Vx=5,Vy=5;int x=WIDTH/2,y=HIGH/2; //表示小球的圆心坐标initgraph(WIDTH, HIGH); // 创建绘图窗口,大小为 640x480 像素

接下来,我们须要进入一个去世循环,不断地更新小球的位置和绘制小球,同时检讨小球是否碰到了边界,如果是的话,就反转相应的速率,如下:

while(1) { //绘制小球图案 setfillcolor(GREEN); fillcircle(x,y,R); Sleep(50); //原位置擦除小球图案 setcolor(BLACK); setfillcolor(BLACK); fillcircle(x,y,R); x=x+Vx; y=y+Vy; if(x<=R || x>=WIDTH-R) Vx=-Vx; if(y<=R || y>=HIGH-R) Vy=-Vy; }

完全代码:

//微信"大众年夜众号:工控小新#include <graphics.h> // 引用图形库头文件#include <conio.h> #define WIDTH 640#define HIGH 480#define R 10int main(){ int i; int Vx=5,Vy=5; int x=WIDTH/2,y=HIGH/2; //表示小球的圆心坐标 initgraph(WIDTH, HIGH); // 创建绘图窗口,大小为 640x480 像素 while(1) { //绘制小球图案 setfillcolor(GREEN); fillcircle(x,y,R); Sleep(50); //原位置擦除小球图案 setcolor(BLACK); setfillcolor(BLACK); fillcircle(x,y,R); x=x+Vx; y=y+Vy; if(x<=R || x>=WIDTH-R) Vx=-Vx; if(y<=R || y>=HIGH-R) Vy=-Vy; } getch(); // 按任意键连续 closegraph(); // 关闭绘图窗口 return 0;}

原文连接:

C措辞知识分享:利用easy X编写一个小球弹跳的动画,大略又易懂!

以为有用的话,动动你们的小手,点个转发在看,非常感谢!


点赞加关注,学习不迷路

微信"大众年夜众号|工控小新

EPLAN电气绘图、TIA根本 、CAD、C措辞传授教化、单片机根本、三菱PLC ... 逐日持续更新中

#春日生活打卡季#