找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4258|回复: 5
收起左侧

STM32和0.96寸oled制作的贪吃蛇游戏源程序

  [复制链接]
ID:749782 发表于 2020-7-5 22:21 | 显示全部楼层 |阅读模式
前段时候在家没事闲的没事干,手里有个C8T6单片机和oled,就想着做个贪吃蛇,以前想着应该很复杂,做完后觉得只要理解了关键的地方,就很简单,就if else if else就完事,哈哈。oled用的是4脚i2c的,基本的操作实现后发现最快的游戏速度也不是很快,所以编写了速度选择部分代码也没用,要是手里有能用spi驱动的7脚oled,应该能更快,目前就这样。我在工程代码里最开始写了这个贪吃蛇的关键部分和一些其他东西,如下 51hei截图20200705220729.png
上传这个东东是为了分享一下,说不定能帮到别人(实际是想赚点币,好下载其他东东,哈哈)。下面是具体的图,左边时游戏区,右边是得分和游戏所用时间,控制方向用的是四个按键
   

做的这个东西所有有关的工程代码里都有,oled引脚 按键引脚 逻辑判断什么什么的,我觉得写的还挺详细,下面贴一段代码,全部工程传到附件。能力有限,代码写的不怎么好,但是整体是没有什么BUG的。OK,完事(希望能赏点币哈,哈哈)。

单片机源程序如下:
  1. int snake[20][8];  //用于存放蛇身位置数据
  2. int Snakehead[8];  //用于存放蛇头位置数据
  3. int Snaketail[8];  //用于存放蛇尾位置数据
  4. int food[8];                          //食物位置数据     四个小格为一个食物 储存顺序顺序为 上左  上右  下左 下右
  5. void Srand(void);

  6. void mapinit(void);  //初始化地图
  7. void snakeinit(void);//初始化蛇位置
  8. void creatfoof(void);        //产生食物
  9. void contr(void);   //按键控制移动方向 定时器定时扫描  
  10. void move(void);                //移动        
  11. void eat(void);           //吃到食物
  12. void dispaly(void);          //显示分数和步数
  13. void out(void);                        //游戏结束判断
  14. void start(void);                //
  15. void Speed(void);                //速度选择  暂时没用到
  16. int up,dowm,left,right;
  17. char txt[10];
  18. int size=1; [attach]242723
  19. int Sped=2;  
  20. u8 adc;  //ADC采集数据做随机种子
  21. u16 time=0; //所用时间
  22. int time_flag=0;  //开始计时表示 在定时器中计时
  23. int main()
  24. {
  25.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);   //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  26.         delay_init();
  27.         LED_Init();
  28.         keyinit();        
  29.         OLED_Init();
  30.         Adc_Init();
  31.         TIM3_Int_Init(200,7199);  //20ms一次
  32.         Srand();
  33.         mapinit();                //初始化地图
  34.         snakeinit();        //初始化蛇头位置
  35.         creatfoof();        //创建一个食物
  36.         up=dowm=left=right=0;            //初始化方向
  37.         while(1)
  38.         {
  39.                 Srand();        
  40.                 move();               
  41.                 eat();               
  42.                 dispaly();
  43.                 out();               
  44. //                Speed();
  45.         }
  46. }
复制代码
制作出来的实物图如下:
Screenshot_2020_0705_214232.png
Screenshot_2020_0705_214306.png
Screenshot_2020_0705_214241.png

贪吃蛇.7z

235.78 KB, 下载次数: 175, 下载积分: 黑币 -5

评分

参与人数 2黑币 +65 收起 理由
pengxxx + 15 很给力!
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:691090 发表于 2020-7-15 16:02 | 显示全部楼层
请问是32的板子嘛?
回复

使用道具 举报

ID:749782 发表于 2020-8-4 18:27 | 显示全部楼层
凌程 发表于 2020-7-15 16:02
请问是32的板子嘛?

是的,f103c8t6
回复

使用道具 举报

ID:346037 发表于 2020-8-27 16:52 | 显示全部楼层
最近在学习这个东东。本人深表感谢
回复

使用道具 举报

ID:844192 发表于 2020-12-15 20:37 | 显示全部楼层
大神。牛的
回复

使用道具 举报

ID:631741 发表于 2020-12-16 23:49 | 显示全部楼层
楼主,有一处bug,随机数会生成在地图外面
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表