最近見網友們對跑酷類小游戲的興趣正濃,便不免也想來湊個熱鬧,以前它是在單色OLED屏上實現的,于是便用手頭的單色屏看來了一下效果,見圖1和圖2所示。 圖1 跳躍障礙中
圖2 游戲結束
可能是屏幕的分辨率相對較小吧,游戲的界面顯示的不太完整,于是將顯示屏換成了手頭分辨率相對高一點的雙色OLED屏。 更換后,其顯示效果如圖3和圖4所示,是不是效果明顯提高了許多? 圖3 跳躍障礙中
圖4 游戲結束
為了游戲在整體上更完整,又使用漢字顯示函數為游戲添加了封面效果。 提取字模所用的工具軟件為PCtoLCD2002,見圖5所示,完成后的界面如圖6所示。 圖5 提取字模
圖6 游戲封面
興之所至,不免覺得在哪些地方還是尚有不足的地方,在哪里? 有了色彩,有了游戲情節,還缺啥? 背景音樂唄! 要添加背景音樂這不難,咱有MP3播放模塊呀! 只是缺少,合適的游戲類背景音樂,那就只好用歌曲來臨時將就吧。 要添加背景音樂,完全不影響游戲的流暢性,因為MP3播放模塊是靠串行通訊的指令來控制,MP3音樂的播放與游戲的運行完全是并行的,可謂是井水、河水各不相犯。 CH32V103有3個串口可供使用,選哪個來用呢? 從方便性來講,還是使用串口1比較方便,因為串口1原本就是來供調試之用,既能輕松地輸出字符串,也能方便地發送字節數據。 MP3播放模塊的引腳排列如圖7所示,其實除了電源引腳之外,真正要用的引腳是在有限。 SPK_1和SPK_2是連接喇叭的,RX是用來接收串口指令的,BUSY是指示MP3模塊是否處于播放狀態,而IO_2是觸發播放下一首歌曲。 圖7 模塊引腳排列
其實,但從配置背景音樂的角度講,只需1個I/O口即可,也就是在游戲開始后觸發音樂播放。 而之所以選用串口控制是因為,它比按鍵控制模式在功能上更豐富,有利于游戲功能的進一步擴展。 例如,在串口控制模式下,當游戲結束時可以通過指令關閉背景音樂;當游戲通關后,可以通過指令更好背景音樂等,這是鍵控模式所不能企及的。 實現游戲功能的主程序為: - int main(void)
- {
- uint8_t i;
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
- Delay_Init();
- //USART1 A.9 A.10
- USART_Printf_Init(9600);
- TIM3_Int_Init(359, 199);
- TIM_Cmd(TIM3, DISABLE); //TIM3
- Touch_Key_Init();
- OLED_Init(); //初始化OLED
- OLED_Clear();
- //顯示游戲名稱
- OLED_ShowCHinese(5,1,1);
- OLED_ShowCHinese(21,1,0);
- OLED_ShowCHinese(37,1,2);
- OLED_ShowCHinese(53,1,3);
- OLED_ShowCHinese(69,1,4);
- OLED_ShowCHinese(85,1,5);
- //音量設置
- setVolume(26);
- for(i=0;i<10;i++)
- {
- while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
- USART_SendData(USART1, cmd6[i]);
- }
- Delay_Ms(200);
- //歌曲設置
- playn(2);
- for(i=0;i<10;i++)
- {
- while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
- USART_SendData(USART1, cmd3[i]);
- }
- Delay_Ms(1000);
- while(1)
- {
- KeyScan();
- if(start_flag == 1)
- {
- OLED_ShowLine(0, 3, 128, data_ob);
- OLED_ShowPeople(30, start_jump, 3, start_jump_flag);
- show_num();
- game_over();
- }
- else if(start_flag == 2)
- {
- OLED_ShowString(24,1,"GAME OVER",9);
- start_flag = 0;
- for(i=0;i<10;i++)
- {
- while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
- USART_SendData(USART1, cmd5[i]);
- }
- }
- }
- }
復制代碼 完成游戲功能的整體構成如圖8所示,所使用的存儲卡則是512MB的T卡。 圖8 游戲封面
既然雙色OLED屏能提升游戲的效果,那換做彩色屏呢,是不是又能產生出新的契機呢?有時間的話,不妨一試。
|