欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: STM32f103+OLED12864+按鍵做的貪吃蛇源碼 [打印本頁]

作者: 重口辣泡菜    時間: 2018-9-4 21:48
標(biāo)題: STM32f103+OLED12864+按鍵做的貪吃蛇源碼
  剛開始學(xué)STM32,看到過網(wǎng)上有人用0.96寸OLED做過貪吃蛇游戲,于是自己也有了這樣一個想法,一開始確實遇到了很多麻煩,最主要的是畫出來的點總會被下一個點影響,然后開始翻數(shù)據(jù)手冊,才發(fā)現(xiàn)一次要寫八個點,之后在網(wǎng)上找了很多資料,這一個問題也終于解決了。下面來分享一下我做這個的一點經(jīng)驗。
1.打點函數(shù)
   我們先建立一個8*128的二維數(shù)組,把屏幕上的每一個點都放進這個數(shù)組里
2.蛇身建立
   屏幕上的點很小,很難看清楚,所以我們用4x4的區(qū)域來作為蛇身,蛇的身體用4x4中間挖去2x2的空心方塊表示,蛇頭用4x4的實心方塊表示,食物則用4x4方塊去掉四個角的點來表示,每一種圖形都用一個函數(shù)表示,因為整個游戲用了四種點來顯示所以才需要用上面的最小單位的點來組合。
3.蛇的移動
   最簡單的一種就是添頭去尾,移動的時候,以移動的坐標(biāo)作為新坐標(biāo)畫出頭部,如果沒吃到食物則刪除尾部,吃到食物則保留尾部,每一段移動后都以前一段的舊坐標(biāo)作為自己的新坐標(biāo)。為了實現(xiàn)這樣的移動,再建一個16bit的數(shù)組,高八位存x軸坐標(biāo),低八位存y軸坐標(biāo),用定時器每隔一段時間顯示這個數(shù)組的第一位和最后一位就能實現(xiàn)蛇的移動。
4.邊界和蛇身判斷
  這個游戲是不能觸碰邊界和自身的,所以需要不斷檢測蛇頭坐標(biāo)是否越過邊界,為了檢測是否觸碰蛇身,就再建一個數(shù)組存放蛇身緩存,每移動一次就將蛇身坐標(biāo)存到這個數(shù)組中,再判斷蛇頭是否碰到蛇身,判斷完就立刻清空數(shù)組。

制作出來的實物圖如下:


stm32單片機源程序如下:
  1. #include "include.h"

  2. uint8_t CheckBuffer[420];//高八位放x坐標(biāo),低八位放y坐標(biāo)
  3. uint16_t MoveCoordinate[420];//高八位放x坐標(biāo),低八位放y坐標(biāo)
  4. uint8_t SnakeCoordinate[8][128];
  5. uint16_t SnakeLength;
  6. uint8_t SnakeCoordinate_x,SnakeCoordinate_y;
  7. uint8_t FoodCoordinate_x,FoodCoordinate_y;
  8. uint8_t MoveDirection;
  9. uint16_t Counter_x=166,Counter_y=1785;
  10. uint8_t runflag=0;

  11. int main(void)
  12. {         
  13.          Game_Start();
  14.    while(1)
  15.          {
  16.                    MoveDirection = KEY_Scan(1);
  17.                  
  18.                    while(MoveDirection==GAMEOVER)
  19.                          {
  20.                                   TIM_Cmd(TIM3,DISABLE);
  21.                                   OLED_Clear(0);
  22.                                   OLED_ShowString(32,0,"GAMEOVER");
  23.                                   OLED_ShowString(20,3,"SCORE:");
  24.                                   OLED_ShowNum(75,3,SnakeLength-3,4,16);
  25.                                   delay_ms(1000);
  26.                          }
  27.          }
  28. }
復(fù)制代碼

所有資料51hei提供下載:
貪吃蛇v2.7z (698.21 KB, 下載次數(shù): 346)



作者: yb3215551    時間: 2018-9-5 08:30
學(xué)習(xí)學(xué)習(xí),樓主V5
作者: Rott    時間: 2018-10-8 21:57
感謝樓主的分享,我得研究一下,如果可以在帖子里直接分享下PCB圖就更好了
作者: andexiong    時間: 2018-10-14 22:41
請問一下,為什么我燒進去不好使呢?
作者: zb02373    時間: 2018-10-30 09:11
真強,這個代碼有難度!
作者: 薛定諤的痞子    時間: 2018-11-17 11:16
謝謝分享,我來試試
作者: 啊杰啊啊啊    時間: 2018-11-17 20:26
謝謝樓主分享
作者: 1574065994    時間: 2018-12-28 12:26
感謝樓主分享
作者: WZUOZ    時間: 2018-12-30 21:22
請問只用到一個stm32開發(fā)板可以么,帶有LCD顯示屏的
作者: hellowC8051    時間: 2019-1-29 09:12
樓主厲害,這么小屏都能做游戲
作者: xode    時間: 2019-2-3 23:05
謝謝樓主分享
作者: MZT    時間: 2019-10-30 14:01
請問這些io對應(yīng)要怎么接

作者: kevinyang999    時間: 2019-11-1 14:32
這個可以搞個玩玩
作者: 執(zhí)魔    時間: 2021-12-26 16:13
一樣的板一樣的12864,為什么我按鍵控制不了方向??

作者: 黃大山    時間: 2022-4-25 13:12
學(xué)習(xí)單片機的好例程
作者: 電工小明    時間: 2022-4-26 21:55
學(xué)以致用了  好有樂趣




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1