弹球游戏设计

Posted ping2yingshi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了弹球游戏设计相关的知识,希望对你有一定的参考价值。

此博客链接:https://www.cnblogs.com/ping2yingshi/p/12164369.html

一、问题描述

1、问题描述

c语言实现一个弹球游戏,实现小球在控制台的一定范围内(可自行定义范围,此博客小球的横坐标范围在(5,15),小球的纵坐标在(0,19)做抛物线运动。

二、解决问题的物理模型

2.1、没有大小的小球。

2.2、运动轨迹。

小球合运动轨迹是一个抛物线,把小球运动分解,分为水平方向运动和竖直方向运动。小球在水平方向是匀速直线运动,在竖直方向是加速度向下的变速运动。

2.3.小球的运动学方程。

小球合运动轨迹是一个抛物线,把小球运动速度分解,分为水平方向速度和竖直方向速度。小球在水平方向是匀速直线运动,水平方向速度不变;小球在竖直方向是加速度向下的变速运动,速度的运动学方程:velocity_y(竖直方向的速度)=v0(初速度)-g*t。

2.4.小球由上一位置移动到下一个位置时,速度改变。

2.5. 位移是速度在时间上的累积,速度是加速度在时间上的累积。

2.6.小球在设定的范围内运动。

三、物理模型对应的技术原型

3.1 在指定位置显示小球。

3.1.1 原理(包含公式)

以字母o代表小球。

3.1.2 函数

void Show(int x,int y);

函数作用:在控制台打印输出小球每次移动的位置

Ø  函数参数说明:

参数名1:x

参数类型:int

参数意义:小球在控制台位置的纵坐标(竖直方向)

参数名2:y

参数类型:int

参数意义:小球在控制台位置的横坐标(水平方向)

Ø  返回值说明:

返回值类型:void

3.1.3 举例说明/解释函数实现的功能

   使用双重for循环,以换行为x竖直方向,空格为y水平方向。例如当x=5,y=6时,会在(5,6)位置显示一个小球o。

3.2 一段时间后,小球的新位置计算

3.2.1 原理(2.5节物理模型对应的代码模型,以及时间在代码中如何实现)

循环每执行一次,小球的新纵坐标y=y(小球上一次移动后的纵坐标)+delta(y)( delta(y)代表y的增量),横坐标x=0.1*(y-20)*y+15。

3.2.2 函数

Adrress  Getnext_y(struct Adrress A,int y)

结构体Adrress定义:

struct Adrress
{
    int x;//小球竖直方向坐标
    int y;//小球水平方向坐标
};

函数作用:根据小球上一次横纵坐标的位置,得到小球新的横纵坐标位置

Ø  函数参数说明:

 参数名1:A

 参数类型:struct Adrress

 参数意义:保存小球新的横纵坐标位置

 

参数名2:y

参数类型:int

参数意义:小球在控制台上一次位置的横坐标(水平方向)

Ø  返回值说明:

返回值类型:Address

3.2.3 举例说明/解释函数实现的功能

    小球从初始坐标x=13,y=1开始移动,每次执行Getnext_y(struct Adrress A,int y)函数,y都加上y方向位移,x=f(y),然后用新得到的x,y更新结构体中的A.x和A.y。检测小球x是否等于15的边界条件,如果小球坐标满足x=15,小球重新从x=13,y=1位置按照上述规则开始移动。

3.3 小球的移动

3.3.1 原理

视觉暂留原理:人眼在观察景物时,光的作用结束后,视觉形象并不立即消失,这种残留的视觉称“后像”,视觉的这一现象则被称为“视觉暂留”。

3.3.2 函数

   在main() 中调用了system("cls") ;

Adrress  Getnext_y(struct Adrress A,int y);

void Show(int x,int y);

3.3.3 举例说明/解释函数实现的功能

使用system("cls") 清除显示过的小球。我们看到小球消失后,虽然小球消失了,但是小球影像还存在于我们大脑中,把消失的小球坐标y传入Adrress  Getnext_y(struct Adrress A,int y);函数中,得到新小球x,y的坐标,使用void Show(int x,int y)函数,新小球会在新的位置再次显示,我们脑中的小球影像会和看到的新小球有一个连接,这让我们感觉小球像是在移动。

3.4、小球在设定的范围内运动的技术原型

3.4.1 函数

bool Isrepeat (int x)

函数作用:对小球运动界定范围。

Ø  函数参数说明:

参数名:x

参数类型:int

参数意义:小球在控制台上位置的纵坐标(竖直方向)

Ø  返回值说明:

返回值类型:bool

3.4.2举例说明/解释函数实现的功能

小球坐标每改变一次,都在Adrress  Getnext_y(struct Adrress A,int y)中判断Isrepeat (int x)函数是否为当小球坐标到达x=15时,Isrepeat (int x)函数为真,使小球从初始位置x=13,y=1重新开始运动。

四、运行结果

 技术图片技术图片技术图片

代码git地址: https://e.coding.net/SpringSun/Ball_parabolic.git 。

以上是关于弹球游戏设计的主要内容,如果未能解决你的问题,请参考以下文章

童年乐趣十分钟就能用Python做谁是卧底和弹球小游戏

趣学Python之弹球游戏第一阶段

使用html+css+js实现弹球游戏

C++实现打飞机与弹球游戏

趣学Python之弹球游戏最后阶段--击球结束

弹球游戏