用 Digilent Basys 3 設計推箱子小遊戲

好玩的又來啦~~厲害的Digilent Maker 利用 Digilent Basys 3 設計出《推箱子》的休閒小遊戲,利用 VGA 介面在液晶螢幕上顯示遊戲介面,不但可以玩推箱子,還具有關卡選擇、重新開局、錯步退回等功能,真的很有趣,歡迎大家都來試試看喲!

 

系統結構與各模組連接圖

image 20171020 59ea0aa95962f

 

Push_Box_CTL: 遊戲控制模組,控制遊戲狀態的轉變。
Push_Box_Key: 按鍵輸入消抖和延遲處理模組
Push_Box_window: 遊戲各環節介面顯示及是否可以移動的衝突處理。
Push_Box_Move: 人和箱子移動位置更新模組
Push_Box_RAM: 遊戲初始界面的數據儲存
Push_Box_VGA: VGA 顯示的介面標準設置及顯示驅動模組。

 

image 20171020 59ea0b9b2c013

 

Push_Box_CTL模組採用有限狀態機FSM(Finite State Machine),控制各環節的狀態轉變。當 game_start 訊號給出後,進入 Initial 初始介面。Start 每次按下會有一個cycle 的高電平信號,以控制 initial 狀態向 level_select 狀態的改變, 及每個關卡的重新開始。進入 Level_select 界面後,通過 select 的值,控制進入哪一關卡。每一關結束後,拉高相應的 level_end 信號,進入下一關卡。所有關卡結束後,進入 game_end 狀態

 

image 20171020 59ea0baf03d09

Push_Box_RAM : 儲存初始化界面的數據,當遊戲開始後,在控制端有效的條件下,用40M的顯示時鐘依次讀取RAM中的值,賦給GRB的輸出端。RAM一共可以存儲512個數據,每個數據1bit。根據顏色需求,GRB信號有選擇的擴增和輸出RAM中存儲的數據。

Push_Box_Key: 程序中通過寄存器對系統時鐘計數分頻,產生 1M 的時鐘,去延時讀取按鍵值。當檢測到按鍵按下時,延時 1M 時脈週期,如果按鍵依舊按下,則認為出現了按鍵上升沿。由此,可以經過延時避開抖動區,實現按鍵消抖。

把介面顯示需要的座標值傳給相應模組,人和箱子的初始化只佔兩個時脈週期,在這兩個週期裡,初始化數據傳給移動模組。牆和終點不需要移動,只需要把二者的值直接傳送給顯示模組。同時,始終監控人、箱子、牆與終點的位置,處理碰撞邏輯,判斷人是否能移動,以及所有箱子是否到達了終點。 採用組合邏輯判斷各種碰撞條件。判斷人是否能移動:人撞到牆的指示信號,人撞到箱子的指示信號,箱子撞到牆的指示信號,箱子撞到箱子的指示信號。在每個方向上,分別判斷這些組合電路的高低電平值。人能移動的邏輯是People_en = ~ (people_touch_wall && (people_touch_box && (box_touch_wall || box_touch_box) ) ) ;箱子能移動的邏輯是Box_en_up = people_en && ( people_x =box_x ) && (people_y = box_y – y_step)並同時監控本關是否已經通過,通過的條件是所有的箱子都移動到了終點。

 

image 20171020 59ea0bbd36e1f

Push_Box_Move : 搭建多級選擇器電路,當接收到位置初始化訊號或者 key_start 時,人和箱子的初始中心座標值被賦給當前值。初始化結束後,檢測 key_up, key_down, key_left, key_right 的值,來控制人和箱子位置上的移動。每次按鍵按下,人往相應方向移動一格。

Push_Box_VGA : 解析度取 800*600,時序循環時脈採用 40M,由分頻模組的 IP 產生。 VGA 介面及控制時序如下圖所示,場同步訊號VSYNC 在每幀數據開始的時候 產生一個固定寬度的低脈衝,行同步信號 HSYNC 在每行開始的時候產生一個固定寬度的低脈衝,數據在設定的行和列交匯處有效 (本文為南京大學 FPGA 部落作品)


文章連結 │ 基於basys3的推箱子遊戲項目的DIY動手指南
程式碼下載  https://drive.google.com/file/d/1Mw8O-t-XTrDwzQ9OpfPCwo9eVqOYt9CD/view?usp=sharing

和澄科技 Haley Technology

電話 │ 886-3-5790380
傳真 │ 886-3-5790370
信箱 │ sales@haleytech.com
地址 │ 新竹市關新路27號18樓之2

               

 

 

M有任何問題嗎? Line 我們最快! 

產品搜尋