久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10580|回復: 15
打印 上一主題 下一主題
收起左側

STM32f103+OLED12864+按鍵做的貪吃蛇源碼

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

制作出來的實物圖如下:


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

  2. uint8_t CheckBuffer[420];//高八位放x坐標,低八位放y坐標
  3. uint16_t MoveCoordinate[420];//高八位放x坐標,低八位放y坐標
  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. }
復制代碼

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


評分

參與人數 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏10 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:334374 發表于 2018-9-5 08:30 | 只看該作者
學習學習,樓主V5
回復

使用道具 舉報

板凳
ID:406761 發表于 2018-10-8 21:57 | 只看該作者
感謝樓主的分享,我得研究一下,如果可以在帖子里直接分享下PCB圖就更好了
回復

使用道具 舉報

地板
ID:409659 發表于 2018-10-14 22:41 | 只看該作者
請問一下,為什么我燒進去不好使呢?
回復

使用道具 舉報

5#
ID:153917 發表于 2018-10-30 09:11 | 只看該作者
真強,這個代碼有難度!
回復

使用道具 舉報

6#
ID:428094 發表于 2018-11-17 11:16 | 只看該作者
謝謝分享,我來試試
回復

使用道具 舉報

7#
ID:423055 發表于 2018-11-17 20:26 | 只看該作者
謝謝樓主分享
回復

使用道具 舉報

8#
ID:232734 發表于 2018-12-28 12:26 | 只看該作者
感謝樓主分享
回復

使用道具 舉報

9#
ID:140906 發表于 2018-12-30 21:22 來自手機 | 只看該作者
請問只用到一個stm32開發板可以么,帶有LCD顯示屏的
回復

使用道具 舉報

10#
ID:328121 發表于 2019-1-29 09:12 | 只看該作者
樓主厲害,這么小屏都能做游戲
回復

使用道具 舉報

11#
ID:337376 發表于 2019-2-3 23:05 | 只看該作者
謝謝樓主分享
回復

使用道具 舉報

12#
ID:594206 發表于 2019-10-30 14:01 | 只看該作者
請問這些io對應要怎么接
回復

使用道具 舉報

13#
ID:633837 發表于 2019-11-1 14:32 | 只看該作者
這個可以搞個玩玩
回復

使用道具 舉報

14#
ID:948441 發表于 2021-12-26 16:13 | 只看該作者
一樣的板一樣的12864,為什么我按鍵控制不了方向??
回復

使用道具 舉報

15#
ID:928177 發表于 2022-4-25 13:12 | 只看該作者
學習單片機的好例程
回復

使用道具 舉報

16#
ID:971289 發表于 2022-4-26 21:55 | 只看該作者
學以致用了  好有樂趣
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 综合网视频 | 国产一区二区三区免费观看在线 | 成人精品啪啪欧美成 | 欧美在线视频一区二区 | 亚洲国产aⅴ精品 | 欧美久久一区 | 久久久久91 | 国产一区二区三区在线 | 九九久久国产精品 | ww 255hh 在线观看 | 中文天堂在线一区 | 国产在线精品一区二区 | 99久久久国产精品免费消防器 | 中文字幕欧美日韩一区 | 免费看91| av男人的天堂在线 | 日韩精品视频在线 | 国产精品久久精品 | 亚洲看片网站 | 欧美二区在线 | 一区二区三区在线免费观看 | 视频一区二区中文字幕日韩 | 操操操av | 国产真实乱对白精彩久久小说 | 成人免费小视频 | 久久亚洲精品国产精品紫薇 | 91看片| 日本精品视频 | www.黄色片视频 | 精品麻豆剧传媒av国产九九九 | 欧美色性| 国产精品视屏 | 久久毛片 | 夜夜骑天天干 | 中文久久| 日韩在线一区二区 | 欧美久久久电影 | 在线看片网站 | 久久久妇女国产精品影视 | 中文字幕亚洲精品在线观看 | 欧美激情视频一区二区三区在线播放 |