【STM32单片机】推箱子游戏设计
文章目录
- 一、主要功能
- 二、使用步骤
- 三、硬件资源
- 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单片机】推箱子游戏设计相关推荐
- c语言语音控制游戏文献,C语言课程设计-基于C语言推箱子游戏设计-毕业论文文献.doc...
gd工程职业技术学院毕业论文 基于C语言的推箱子游戏设计 Design of the push box Based on Combined Language 作者姓名: 学科专业: 应用电子技术 学院 ...
- 【java毕业设计】基于java+swing+Eclipse的推箱子游戏设计与实现(毕业论文+程序源码)——推箱子游戏
基于java+swing+Eclipse的推箱子游戏设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+swing+Eclipse的推箱子游戏设计与实现,文章末尾附有本毕业设计的论文 ...
- 推箱子游戏设计与实现(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 ...
- 【STM32单片机】2048游戏设计
文章目录 一.简介 二.硬件资源 1.硬件准备 2.硬件连接 四.软件设计 1.软件结构 2.主要代码 五.实验现象 一.简介 本项目支持STM32F103/STM32F407控制器,使用TFTLCD ...
- 基于单片机的推箱子游戏设_推箱子游戏51单片机课设计(最全).doc
<51单片机> 课程设计 题 目:基于51单片机的推箱子游戏设计 目 录 1.课程设计目的1 2.课程设计题目和实现目标1 3.设计方案1 4.Proteus仿真原理图7 5.程序设计9 ...
- 基于java的推箱子游戏系统设计与实现(项目报告+答辩PPT+源代码+部署视频)
项目报告 基于Java的推箱子游戏设计与实现 社会在进步,人们生活质量也在日益提高.高强度的压力也接踵而来.社会中急需出现新的有效方式来缓解人们的压力.此次设计符合了社会需求,Java推箱子游戏可以让 ...
- 推箱子游戏的java设计思路_用JAVA实现一个推箱子游戏
技术应用 TECHNOLOGY AND MARKET Vol. 26,No. 2,2019 用 JAVA 实现一个推箱子游戏 马寅璞1,孔阳坤2 ( 1. 南京信息工程大学计算机软件学院物联网工程 1 ...
- Visual C++实现推箱子游戏的核心算法设计与实现(附源码和和资源)
需要源码和资源请点赞关注收藏后评论区留言私信~~~ 在前面的博客中已经讲解了推箱子游戏的菜单和各种对话框的实现,下面对推箱子游戏的核心算法设计和实现进行讲解 一.地图文件读取模块的设计与实现 地图文件 ...
- 推箱子游戏java毕业答辩ppt_基于Java推箱子游戏的设计与实现
基于Java推箱子游戏的设计与实现(任务书,外文翻译,毕业论文20000字,程序代码,答辩PPT) 摘 要 社会在进步,人们生活质量也在日益提高.高强度的压力也接踵而来.社会中急需出现新的有效方 ...
最新文章
- mysqldump定时备份数据库
- 电脑word在哪_新的电脑应该安装哪些软件?只需这9个足够你用一生!
- Linux下查看进程对应的命令绝对路径
- java 方法委托托管_Java Web托管选项流程图
- EF 拉姆达 linq if else (整理)
- vertex 3.0 与SpringBoot混合开发之初探
- 用大数据算法得出当代移动互联网人群图鉴
- 力扣 数组中的最长山脉
- 存储过程,是否有查看所有项目功能
- CAD图纸中图块无法打开编辑?
- java中new对象_java new对象的理解
- 选择覆盖方法设计测试用例
- mac 打开网页慢_苹果笔记本打开网页很慢是什么原因
- Windows搭建幼麟麻将运行环境
- jdbc连接mysql数据库,设置字符集编码
- 从小白踏上程序员之路
- 安装xmanager linux系统,xmanager linux版
- LiteFlowNet:用于光流估计的轻量级卷积神经网络
- win怎么在计算机里按日期搜索文件,Windows下怎么按时间查找文件
- eNSP实验日记四(防火墙配置)
热门文章
- 基于python的可视化成绩分析
- openwrt 默认ip修改
- 科技交流英语(2022秋)Unit 5 test
- VBS奇葩操作 “我是猪”
- 2022全国视力防控展,中国爱眼教育大会
- FRED应用: LED混合准直透镜模拟
- python模拟鼠标点击和键盘输入的操作_python模拟鼠标点击和键盘输入的操作
- 【板栗糖GIS】怎么将网络上只能在线预览文档另存为pdf(插件篇)
- python全栈工程师薪水_python全栈+爬虫+自动化+AI=python全能工程师-挑战年薪30W+
- 【续】我的FLASH情结2010——浅谈FLASH WEB GAME与创业