1. 項目概述
項目說明
該項目是實現(xiàn)經(jīng)典的街機游戲——彈球機。使用DE1-SOC開發(fā)板上的滑動開關(guān),玩家可以設(shè)置球的初始速度。然后,按下按鈕將球釋放到柜子中,球?qū)⒏鶕?jù)其當(dāng)前的速度和方向與周圍的物體進(jìn)行碰撞交互。玩家可以按下另外兩個按鈕來控制左右兩個撥片,以嘗試將移動的球保持在柜子中。分?jǐn)?shù)根據(jù)球的比賽時長進(jìn)行記錄,當(dāng)球離開柜子/顯示器時游戲結(jié)束。此外,玩家還可以切換 DE1-SOC上的開關(guān)來啟用/禁用藝術(shù)模式,藝術(shù)模式是讓玩家可以根據(jù)球的路徑在柜子上進(jìn)行繪畫。
2. 物理原理
將速度分解為 x 和 y 分量,負(fù)速度表示向顯示屏上的 0,0 或屏幕的左上角移動,正速度表示向屏幕右下角移動。
發(fā)射球時系統(tǒng)會根據(jù)滑動開關(guān)的設(shè)定來給球一個 y 方向的初速度,球的運動過程中要考慮重力對球的影響。比如在玩實際機器時,如果球沒有足夠的速度,由于箱體的角度,它會落回到彈簧上。
當(dāng)球沿斜面向下移動,若不考慮摩擦、滾動、滑動等其他因素時,加速度方程只基于箱體的傾斜度。如下圖所示,加速度的方向是朝向柜子的底部,大小等于重力乘以傾斜角的正弦值。這意味著需要在一定數(shù)量的循環(huán)后將 y 方向(即朝向顯示屏底部)的速度增加 1。
當(dāng)球繞柜子移動與物體發(fā)生碰撞時,速度會在 x 和 y 方向上發(fā)生變化。當(dāng)球從靜止物體上彈起時,它會以與該物體撞擊時相同的角度離開。
為有效計算,只考慮當(dāng)前速度矢量 [x 速度,y 速度] 和正在撞擊的物體的單位法線矢量。然后將使用以下方程計算新的速度矢量:v' = 2*(n dot v)*n + v。
審核編輯:劉清
-
顯示器
+關(guān)注
關(guān)注
21文章
4970瀏覽量
139926 -
速度矢量
+關(guān)注
關(guān)注
0文章
2瀏覽量
1296
原文標(biāo)題:街機彈球機的模擬
文章出處:【微信號:友晶FPGA,微信公眾號:友晶FPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論