前言:
上节我们讲了关于C语言做一个让小球运动起来的动画,但是对于弹球游戏,最重要的肯定是会回弹!
做一个简单的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 10
int 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 ... 每日持续更新中
本文暂时没有评论,来添加一个吧(●'◡'●)