文章目录

  • 一、主要功能
  • 二、使用步骤
  • 三、硬件资源
    • 1.硬件准备
    • 2.硬件连接
  • 四、软件设计
    • 1.软件结构
    • 2.主要代码
  • 五、实验现象
  • 联系作者

一、主要功能

1、OLED显示游戏地图和关卡
2、按键控制方向
3、通关地图切换
4、可使用上位机设计地图


二、使用步骤

系统运行后,OLED显示第一关推箱子游戏界面,通过KEY_UP、KEY1、KEY2和KEY0,4个按键控制玩家上、下、左和右移动方向。每将箱子全部移动到目的地,则进入下一关地图,默认项目中设计了4种地图,用户可根据配套上位机软件生成游戏地图。

三、硬件资源

1.硬件准备

项目所需要的硬件资源如下:
①STM32F103或STM32F407开发板1个
②0.96寸OLED(IIC)液晶模块1个
③USB线1条(用于供电和程序下载)
④杜邦线若干

2.硬件连接

 OLED(IIC)模块-->单片机IOVCC-->5VGND-->GNDSCL-->PB6SDA-->PB7按键模块-->单片机IOKEY_UP-->PA0KEY0-->PE4KEY1-->PE3KEY2-->PE2

四、软件设计

1.软件结构

2.主要代码

主要代码如下:

//定义一个3维数组,用来表示推箱子的地图
u8 map[GAME_CENSOR][MAP_ROW][MAP_COL]=
{{                      //第1关   {0,0,0,0,0,0,0,0},{0,0,1,1,1,0,0,0},{0,0,1,2,1,1,1,1},{1,1,1,3,3,0,2,1},{1,2,3,4,0,1,1,1},{1,1,1,1,3,1,0,0},{0,0,0,1,2,1,0,0},{0,0,0,1,1,1,0,0}},   {                       //第2关{0,1,1,0,0,1,1,0},{1,0,2,1,1,2,0,1},{1,0,0,3,0,0,0,1},{1,0,0,4,3,0,0,1},{1,0,0,3,3,0,0,1},{0,1,0,0,0,0,1,0},{0,0,1,2,2,1,0,0},{0,0,0,1,1,0,0,0},},{                        //第3关{0,1,1,1,1,1,1,0},{1,0,4,0,3,0,2,1},{1,0,0,3,0,3,2,1},{1,0,0,2,0,0,0,1},{1,0,0,0,0,3,0,1},{1,0,0,0,0,0,2,1},{1,0,0,0,1,0,1,1},{0,1,1,1,1,1,1,0}},{                     //第4关{0,1,1,1,1,1,1,0},{1,0,4,0,0,0,2,1},{1,0,0,0,0,0,2,1},{1,0,3,0,0,0,0,1},{1,0,2,0,3,0,0,1},{1,0,3,0,3,0,2,1},{1,0,0,0,1,0,1,1},{0,1,1,1,1,1,1,0}},};//游戏地图绘制
void game_draw(void)
{u8 i=0,k=0;for(i=0;i<MAP_ROW;i++){for(k=0;k<MAP_COL;k++){switch(map[glevel][i][k]){case SPACE://空地OLED_Fill_rectangle(k*GAME_SIZE,i*GAME_SIZE,GAME_SIZE-GAME_SPACE,GAME_SIZE-GAME_SPACE,0);break;case WALL://墙OLED_Fill_rectangle(k*GAME_SIZE,i*GAME_SIZE,GAME_SIZE-GAME_SPACE,GAME_SIZE-GAME_SPACE,1);break;case DEST://目的地OLED_DrawRectanglex(k*GAME_SIZE,i*GAME_SIZE,GAME_SIZE-GAME_SPACE,GAME_SIZE-GAME_SPACE,1);break;case BOX://箱子OLED_Draw_Box(k*GAME_SIZE,i*GAME_SIZE,GAME_SIZE-GAME_SPACE,GAME_SIZE-GAME_SPACE,1);break;case PLAYER://人OLED_Fill_circle(k*GAME_SIZE+GAME_SIZE/2-1,i*GAME_SIZE+GAME_SIZE/2-1,GAME_SIZE/2-1,1);break;case PLAYER+DEST://人+目的地OLED_Fill_circle(k*GAME_SIZE+GAME_SIZE/2-1,i*GAME_SIZE+GAME_SIZE/2-1,GAME_SIZE/2-1,1);break;case BOX+DEST://箱子+目的地OLED_Draw_Box(k*GAME_SIZE,i*GAME_SIZE,GAME_SIZE-GAME_SPACE,GAME_SIZE-GAME_SPACE,1);break;}}}OLED_Refresh_Gram();
}//游戏过关判定
//返回1过关,0未过关
u8 game_pass(void)
{u8 i=0,k=0;for(i=0;i<MAP_ROW;i++){for(k=0;k<MAP_COL;k++){if(map[glevel][i][k]==BOX)return 0;}}return 1;
}//推箱子游戏设计
void app_demo(void)
{BEEP_Init();KEY_Init();LED_Init();OLED_Init();OLED_Init();TIM4_Init(5000-1,8400-1);  //定时500msMy_EXTI_Init();while(1){//游戏过关if(game_pass()){glevel++;if(glevel>GAME_CENSOR){//游戏通过OLED_Clear();OLED_ShowString(10,10,"Game Pass",16);OLED_ShowString(10,30,"Reset Start",16);OLED_Refresh_Gram();while(1);}}OLED_ShowFontHZ(X_WIDTH-40,10,13,16,1);//第OLED_ShowNum(X_WIDTH-24,10,glevel+1,1,16);OLED_ShowFontHZ(X_WIDTH-16,10,14,16,1);//关game_draw();//游戏界面绘制key_event();//按键消息处理}
}

五、实验现象

B站演示视频:https://space.bilibili.com/444388619




联系作者

作者B站链接:https://space.bilibili.com/444388619
可提供手把手教学服务,资料获取请联系作者QQ:3443792007
专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。

【STM32单片机】推箱子游戏设计相关推荐

  1. c语言语音控制游戏文献,C语言课程设计-基于C语言推箱子游戏设计-毕业论文文献.doc...

    gd工程职业技术学院毕业论文 基于C语言的推箱子游戏设计 Design of the push box Based on Combined Language 作者姓名: 学科专业: 应用电子技术 学院 ...

  2. 【java毕业设计】基于java+swing+Eclipse的推箱子游戏设计与实现(毕业论文+程序源码)——推箱子游戏

    基于java+swing+Eclipse的推箱子游戏设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+swing+Eclipse的推箱子游戏设计与实现,文章末尾附有本毕业设计的论文 ...

  3. 推箱子游戏设计与实现(Java+swing+JAWT)

    目 录 摘 要 i Abstract ii 引 言 1 1 系统分析 2 1.1 技术可行性分析 2 1.1.1 可行性目的 2 1.1.2 可行性研究前提 2 1.1.3 算法可行性分析 2 1.1 ...

  4. 【STM32单片机】2048游戏设计

    文章目录 一.简介 二.硬件资源 1.硬件准备 2.硬件连接 四.软件设计 1.软件结构 2.主要代码 五.实验现象 一.简介 本项目支持STM32F103/STM32F407控制器,使用TFTLCD ...

  5. 基于单片机的推箱子游戏设_推箱子游戏51单片机课设计(最全).doc

    <51单片机> 课程设计 题 目:基于51单片机的推箱子游戏设计 目 录 1.课程设计目的1 2.课程设计题目和实现目标1 3.设计方案1 4.Proteus仿真原理图7 5.程序设计9 ...

  6. 基于java的推箱子游戏系统设计与实现(项目报告+答辩PPT+源代码+部署视频)

    项目报告 基于Java的推箱子游戏设计与实现 社会在进步,人们生活质量也在日益提高.高强度的压力也接踵而来.社会中急需出现新的有效方式来缓解人们的压力.此次设计符合了社会需求,Java推箱子游戏可以让 ...

  7. 推箱子游戏的java设计思路_用JAVA实现一个推箱子游戏

    技术应用 TECHNOLOGY AND MARKET Vol. 26,No. 2,2019 用 JAVA 实现一个推箱子游戏 马寅璞1,孔阳坤2 ( 1. 南京信息工程大学计算机软件学院物联网工程 1 ...

  8. Visual C++实现推箱子游戏的核心算法设计与实现(附源码和和资源)

    需要源码和资源请点赞关注收藏后评论区留言私信~~~ 在前面的博客中已经讲解了推箱子游戏的菜单和各种对话框的实现,下面对推箱子游戏的核心算法设计和实现进行讲解 一.地图文件读取模块的设计与实现 地图文件 ...

  9. 推箱子游戏java毕业答辩ppt_基于Java推箱子游戏的设计与实现

    基于Java推箱子游戏的设计与实现(任务书,外文翻译,毕业论文20000字,程序代码,答辩PPT) 摘    要 社会在进步,人们生活质量也在日益提高.高强度的压力也接踵而来.社会中急需出现新的有效方 ...

最新文章

  1. mysqldump定时备份数据库
  2. 电脑word在哪_新的电脑应该安装哪些软件?只需这9个足够你用一生!
  3. Linux下查看进程对应的命令绝对路径
  4. java 方法委托托管_Java Web托管选项流程图
  5. EF 拉姆达 linq if else (整理)
  6. vertex 3.0 与SpringBoot混合开发之初探
  7. 用大数据算法得出当代移动互联网人群图鉴
  8. 力扣 数组中的最长山脉
  9. 存储过程,是否有查看所有项目功能
  10. CAD图纸中图块无法打开编辑?
  11. java中new对象_java new对象的理解
  12. 选择覆盖方法设计测试用例
  13. mac 打开网页慢_苹果笔记本打开网页很慢是什么原因
  14. Windows搭建幼麟麻将运行环境
  15. jdbc连接mysql数据库,设置字符集编码
  16. 从小白踏上程序员之路
  17. 安装xmanager linux系统,xmanager linux版
  18. LiteFlowNet:用于光流估计的轻量级卷积神经网络
  19. win怎么在计算机里按日期搜索文件,Windows下怎么按时间查找文件
  20. eNSP实验日记四(防火墙配置)

热门文章

  1. 基于python的可视化成绩分析
  2. openwrt 默认ip修改
  3. 科技交流英语(2022秋)Unit 5 test
  4. VBS奇葩操作 “我是猪”
  5. 2022全国视力防控展,中国爱眼教育大会
  6. FRED应用: LED混合准直透镜模拟
  7. python模拟鼠标点击和键盘输入的操作_python模拟鼠标点击和键盘输入的操作
  8. 【板栗糖GIS】怎么将网络上只能在线预览文档另存为pdf(插件篇)
  9. python全栈工程师薪水_python全栈+爬虫+自动化+AI=python全能工程师-挑战年薪30W+
  10. 【续】我的FLASH情结2010——浅谈FLASH WEB GAME与创业