街机弹球机的模拟设计实现

描述

1. 项目概述

项目说明

该项目是实现经典的街机游戏——弹球机。使用DE1-SOC开发板上的滑动开关,玩家可以设置球的初始速度。然后,按下按钮将球释放到柜子中,球将根据其当前的速度和方向与周围的物体进行碰撞交互。玩家可以按下另外两个按钮来控制左右两个拨片,以尝试将移动的球保持在柜子中。分数根据球的比赛时长进行记录,当球离开柜子/显示器时游戏结束。此外,玩家还可以切换 DE1-SOC上的开关来启用/禁用艺术模式,艺术模式是让玩家可以根据球的路径在柜子上进行绘画。

显示器

显示器

2. 物理原理

将速度分解为 x 和 y 分量,负速度表示向显示屏上的 0,0 或屏幕的左上角移动,正速度表示向屏幕右下角移动。

显示器

发射球时系统会根据滑动开关的设定来给球一个 y 方向的初速度,球的运动过程中要考虑重力对球的影响。比如在玩实际机器时,如果球没有足够的速度,由于箱体的角度,它会落回到弹簧上。

当球沿斜面向下移动,若不考虑摩擦、滚动、滑动等其他因素时,加速度方程只基于箱体的倾斜度。如下图所示,加速度的方向是朝向柜子的底部,大小等于重力乘以倾斜角的正弦值。这意味着需要在一定数量的循环后将 y 方向(即朝向显示屏底部)的速度增加 1。

显示器

当球绕柜子移动与物体发生碰撞时,速度会在 x 和 y 方向上发生变化。当球从静止物体上弹起时,它会以与该物体撞击时相同的角度离开。

显示器

为有效计算,只考虑当前速度矢量 [x 速度,y 速度] 和正在撞击的物体的单位法线矢量。然后将使用以下方程计算新的速度矢量:v' = 2*(n dot v)*n + v。

显示器



审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分