999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于單片機的貪吃蛇游戲的實現

2020-09-10 07:22:44吳尚茗楊麗燕劉亞榮
科技尚品 2020年6期

吳尚茗 楊麗燕 劉亞榮

摘 要:文章是基于ALIENTEK精英STM32開發板,在μC/OS-II嵌入式操作系統下,用C語言進行的簡單貪吃蛇游戲設計。本游戲設計主要利用觸屏顯示模塊、LED測試模塊和RTC時鐘模塊來控制游戲運行。利用LCD觸摸屏實現四個輕觸按鍵,將按鍵信息發送至郵箱,控制上下左右,實現貪吃蛇的簡單吃豆、計數和整個游戲界面顯示等相應功能。

關鍵詞:貪吃蛇游戲;STM32單片機;μC/OS-II嵌入式操作系統

中圖分類號:TP368.12 文獻標識碼:A

手機游戲的歷史已經超過十年,其是現代生活的一種娛樂方式。貪吃蛇游戲作為早期的嵌入式開發游戲,雖然游戲內容和畫面都很簡單,但在手機游戲出現的早期,其是一款相當經典的游戲[1]。

1 總體方案設計

本次設計的主要硬件模塊,選擇使用ALIENTEK精英STM32開發板。基于開發板的Cotrex-M3內核,及μC/OS-II嵌入式操作系統,將μC/OS-II嵌入式操作系統移植到ALIENTEK精英STM32開發板上。在μC/OS-II嵌入式操作系統下,利用單片機的內設LED顯示燈模塊以及RTC系統時鐘等兩個模塊相互配合,并結合STM32搭載外設4.3寸TFTLCD液晶顯示屏的顯示和觸摸功能,來實現貪吃蛇游戲的簡單吃豆、計數以及整個游戲界面顯示等相應功能。系統總體設計框圖如圖1所示。

2 游戲的軟件設計

2.1 系統總程序設計

本游戲從游戲開始后進行難度選擇,通過選擇難度確定蛇運動的速度,由此開始游戲。開始游戲時,蛇首先向指定方向運動,再通過按鍵控制蛇的運動方向以及游戲的暫停與開始。如果蛇吃到食物,則蛇身增長;如果蛇碰到自身和墻壁,則游戲結束,通過觸屏按鍵重新開始游戲。游戲的總流程圖如圖2所示。

2.2 優先級任務設計

在μC/OS-II嵌入式操作系統下,軟件設計要分不同任務進行設計,且每個任務按各自優先級高低順序執行,任務之間通過信號量及消息郵箱進行通信。

此次設計主要創建三個不同優先級別的任務:LED任務(led_task)、觸摸屏任務(touch_tesk)、貪吃蛇任務(snake_task)。優先級的順序為touch_tesk>snake_task>led_tesk。即開始游戲就執行貪吃蛇任務,如果屏幕掃描到有觸摸按鍵按下,就發送觸摸事件消息到郵箱;此時,游戲任務從郵箱中獲取消息,開始執行游戲任務。

優先級任務設計流程圖如圖3所示。

2.3 游戲顯示任務設計

設計的主要思路為,將屏幕界面分為按鍵控制模塊和游戲界面模塊,初始頁面使用LCD的畫鍵盤功能設計游戲等級,選擇等級后清屏進入游戲界面。游戲界面將屏幕分成720個小方塊,即地圖上有720個點,每個點的數值代表0位空地,大于0為蛇身,-1為食物。一開始設定所有的點都為0,利用RTC時鐘隨機將一個點的數值設為-1,再將連續3個點分別置1、2、3代表蛇身,這就是貪吃蛇的初始長度,之后蛇身數值增長,因此蛇身的數值都是大于1的。

2.4 蛇身運動設計

根據輸入的鍵位值來確定蛇的方向。蛇的運動方式為柔體傳動,即蛇身的位置不變,蛇頭向相應的方向前進,蛇尾相對于上一次響應減少一個方塊,而不是輸入某一個方向后整體向同一個方向移動。

因此,在設計時要定義一個數組map[i],用來儲存蛇身的數據,用LCD寫入顏色的功能將這個數組涂上貪吃蛇的顏色。定義蛇尾為1,蛇頭每前進一步,len增長,map值自加,向前的格子涂上蛇身顏色。同時,通過坐標檢測確定蛇并沒有吃到食物,此時使用len自減。這樣,貪吃蛇的總長度就沒有發生變化。將map=1的格子涂上白色,即去掉蛇尾,再將map自減,完成蛇的一次向前運動。同理,如果蛇吃到了食物,則將食物涂為蛇身顏色,此時len增長,map增長,且將不做自減。此時,蛇再進行向前運動。

具體實現細節如下。

2.4.1 判斷蛇的移動方向

初始時將cl定義為蛇的運動方向,當觸屏任務將發送指令時,蛇頭向相應位置的坐標增加,即蛇向相應的方向移動。在運動過程中,如果輸入的運動方向與貪吃蛇正在運動的運動方向相反,則會發生反向運動。為了避免反向運動造成程序運行錯誤,需要判定運動方向不為指令方向的反方向。

2.4.2 判斷蛇是否吃到食物

根據蛇頭的坐標與食物的坐標是否相等,來判斷蛇是否吃到食物。如果吃到食物,則蛇的長度和游戲分數均加1,并執行RTC時鐘指令,出現下一個食物。吃掉食物后,蛇的關節數加1,并根據蛇的移動重新畫出蛇的身體。

2.5 結束任務設計

根據設定的游戲區域范圍,如果蛇頭的坐標超過該范圍,即相當于蛇撞墻死掉,游戲結束;當蛇長超過3的時候,就有可能與自身相撞,判斷當蛇頭的坐標與蛇身體的任一坐標相等時,蛇就死掉,游戲結束。判斷如果蛇的sh.x和sh.y在設定的區域外或map[sh.y * 30 + sh.x]大于1,則說明蛇死掉,就觸發游戲結束。

蛇死掉后,游戲任務觸發信號量,開啟時鐘延時。此時,游戲結束任務獲取信號量,開始執行游戲結束任務,即在LCD顯示屏上顯示“GAME OVER!”和“RESET”按鍵。點擊“RESET”按鍵,可以重新回到游戲頁面。

3 結語

本次設計實現了貪吃蛇游戲的基本功能:游戲開始時,通過方向鍵控制貪吃蛇的運動方向;當貪吃蛇吃到隨機出現的食物時蛇身增長,當蛇碰到墻壁或者自身時,蛇死亡,游戲結束。并且在按鍵、吃到食物以及貪吃蛇死亡時配合不同音效,同時游戲有三個可調節的難度供選擇

參考文獻

[1] 劉曉崢.淺析基于J2ME平臺的貪吃蛇游戲開發[J].科技視界,2013(17):38-39.

主站蜘蛛池模板: 久久久久夜色精品波多野结衣| 国产女人在线观看| 日本不卡视频在线| 日韩精品欧美国产在线| 亚洲日韩每日更新| 少妇高潮惨叫久久久久久| 奇米精品一区二区三区在线观看| 欧洲欧美人成免费全部视频| 日韩人妻精品一区| 国产18在线播放| 亚洲中文字幕手机在线第一页| 国产成人精品日本亚洲77美色| 亚洲aaa视频| 久久国产香蕉| 中文字幕在线视频免费| 天天综合网亚洲网站| 亚洲国产综合自在线另类| 国产精品久久国产精麻豆99网站| 国产Av无码精品色午夜| 亚洲男人在线天堂| 国产av剧情无码精品色午夜| 亚洲一级无毛片无码在线免费视频| 久久这里只有精品2| 最新精品久久精品| 无码精品福利一区二区三区| 99成人在线观看| 国产99精品视频| 久久精品免费国产大片| 试看120秒男女啪啪免费| 中文字幕在线观看日本| 中文字幕中文字字幕码一二区| 99视频全部免费| 亚洲性网站| 国产精品无码影视久久久久久久 | 国产麻豆aⅴ精品无码| 久久国产精品嫖妓| 欧美精品伊人久久| 午夜色综合| 欧美午夜视频在线| 国产鲁鲁视频在线观看| 国产欧美日韩一区二区视频在线| 熟女视频91| 日韩a级片视频| 婷婷午夜影院| 国产精品99久久久| 在线观看视频一区二区| 天天操天天噜| 波多野结衣中文字幕一区二区| 亚洲最大情网站在线观看| 国产精品永久不卡免费视频| 久久a级片| 狠狠色婷婷丁香综合久久韩国| 欧美色亚洲| 国产精品手机视频| 国产人前露出系列视频| 久久国产亚洲偷自| 亚洲精品视频网| 亚洲一区二区日韩欧美gif| 日本人妻丰满熟妇区| 欧美综合成人| 91系列在线观看| 亚洲精品视频免费| 激情综合婷婷丁香五月尤物| 国产精品欧美在线观看| 91精品网站| 91色在线观看| 国产日韩欧美黄色片免费观看| 亚洲av无码牛牛影视在线二区| 亚洲综合18p| 日本免费一区视频| 噜噜噜久久| 午夜影院a级片| 亚洲精品成人福利在线电影| 午夜不卡福利| 久久亚洲天堂| 亚洲无码高清一区二区| 亚洲黄色高清| 激情综合网激情综合| 伊人五月丁香综合AⅤ| 成人在线亚洲| 午夜一级做a爰片久久毛片| AⅤ色综合久久天堂AV色综合 |