码迷,mamicode.com
首页 > 其他好文 > 详细

弹球游戏设计

时间:2020-01-08 01:08:44      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:模型   解释   根据   nbsp   结构体   city   博客   影像   app   

此博客链接: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 。

弹球游戏设计

标签:模型   解释   根据   nbsp   结构体   city   博客   影像   app   

原文地址:https://www.cnblogs.com/ping2yingshi/p/12164369.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!