本文是基於stm32戰艦v3開發板平台的貪吃蛇遊戲,主要用到了開發板上的atk-hc05藍芽模組,按鍵模組,lcd液晶顯示屏模組;在程式設計方面主要是對貪吃蛇遊戲進行程式設計,深入理解貪吃蛇遊戲的設計思想以及開發板與手機藍芽的資訊互動,最終通過軟體與硬體的配合實現stm32戰艦v3開發板平台的貪吃蛇遊戲。
.主要用到的軟體資源有:串列埠3、定時器3
主要用到的硬體資源有:按鍵4個、液晶顯示屏、atk-hc05藍芽模組
主迴圈中控制遊戲程序與顯示屏現實,通過定時器中斷服務程式和串列埠中斷服務程式,協調手機與藍芽模組連線向開發板傳送的控制資料與按鍵檢測獲取控制資料,結合主迴圈的遊戲程序以按鍵和手機兩種方式實現控制遊戲的進行。
最終效果圖:
可利用按鍵key_up、key0、key1、 key2分別代表上、左、下、右或者手機端控制蛇的走位
基本思路:蛇每吃乙個食物蛇身子就增加一格,用wasd控制蛇頭的運動,而蛇身子跟著蛇頭走,每後一格蛇身子下一步走到上一格蛇身子的位置,以此類推
附加功能:包含等級選擇、暫停/繼續、分數制、關卡的選擇,難度的設定等
地圖的建立:建立地圖,遊戲開始前先建立好地圖, 將外圍一圈設定為城牆。
void show_map(void)
食物的產生
利用隨機函式(rand())產生隨機食物的座標,該座標的值不能與牆重合,不能與蛇身重合。食物我這裡用的是紅色方塊表示。
void creat_food(void)
lcd_fill(food_x,food_y,food_x+10,food_y+10,red);
}
構造一條蛇
使用兩個unsigned char型別的二維陣列。 snack_x[100] snack_y[100]
snack_x[100] snack_y[100]
snack_x[0]=90,snack_y[0]=50;
snack_x[1]=80,snack_y[1]=50;
snack_x[2]=70,snack_y[2]=50;
for(i=0;i<3;i++)//初始化蛇身長為snack_l=3,初始化蛇的位置:
利用按鍵key_up、key0、key1、 key2分別代表上、左、下、右或者手機端控制蛇的走位,以及當蛇每走一步就利用清屏,重新列印蛇身,模擬蛇的移動。
#define left 1
#define right 2
#define up 3
#define down 4
for(i=snack_l-1;i>0;i--)//記錄蛇身
//計算蛇頭位置
if(dir==right) snack_x[0]=snack_x[0]+10;
if(dir==left) snack_x[0]=snack_x[0]-10;
if(dir==up) snack_y[0]=snack_y[0]-10;
if(dir==down) snack_y[0]=snack_y[0]+10;
遊戲結束
當蛇撞牆, 以及咬到自己的身體時候遊戲結束.
if(snack_x[0]==0||snack_x[0]==470||snack_y[0]==0||snack_y[0]==590)//是否撞牆
for(i=1;i完整工程資源鏈結:
ARM開發(2)基於STM32的蜂鳴器
基於stm32的蜂鳴器 一 蜂鳴器原理 1.1 本實驗實現1個蜂鳴器間隔1s鳴叫。1.3 開發環境 mdk5 庫函式版本開發 jlink 二 實驗步驟 2.1 beep.h ifndef beep h define beep h include sys.h define beep pbout 10 ...
STM32軟體復位 基於庫檔案V3 5
源 stm32軟體復位 基於庫檔案v3.5 void softreset void 在官方軟體庫的 core cm3.h 檔案裡 直接提供了 系統復位的函式 static inline void nvic systemreset void 但是不是直接呼叫這個函式就ok了?在cortex m3權威指...
基於STM32的開發板除錯Review
在此之前,應該是有接觸過微控制器的,比如本科學習的微控制器還有嵌入式 因為我沒有好好聽課,所以基本等於不會 所以就此認為這是第一次接觸微控制器吧。首先拿到微控制器,應該查閱資料手冊,了解有多少外設,比如adc有幾個,usart有幾個,spi有幾個 基於stm32的開發板除錯review 目的 快速學...