硬件课程设计:基于STM32的多功能播放器之小游戏
4 游戏
4.1 功能介绍
4.1.1 设计思路
为了扩展开发板的应用,同时增加实验的难度和趣味性,我设计了一个类似赛车的小游戏。游戏中共有6条车道,同时有5个障碍物,用按键1和按键2控制赛车更换不同车道以避免与障碍物相撞,每通过了一个障碍物就得一分,游戏结束会显示得分和历史排名,并通过按键1和按键2重新开始游戏,按键3结束游戏返回目录。
4.1.2 成果展示
演示视频连接:游戏功能展示-CSDN直播
4.2 我的工作
4.2.1 编写游戏程序
•概述
因为在实现前面的功能时,已经配置好各项硬件设备,包括TFTLCD显示屏、MP3音乐播放等,所以这部分主要的工作结束结合前面的实验编写一个游戏程序。
•主要函数
函数原型:void LCD_Roadline(void)
描述:LCD上显示动态路线
函数原型:void block_creat(u8 block_cnt)
描述:随机产生障碍物
参数:障碍物编号
函数原型:void LCD_Block(u8 block_cnt)
描述:LCD上显示障碍物
参数:障碍物编号
函数原型:void LCD_Rider(void)
描述:LCD上显示车手
函数原型:u8 crash_check(void)
描述:检测是否有障碍物相撞,是返回0,否则返回1
函数原型:void game_init(void)
描述:游戏初始化,包括产生5个随机障碍物,并播放游戏开始音效
函数原型:void game_end()
描述:游戏结束,包括播放游戏结束音效,并显示得分和排名
函数原型:void gameplayer(void)
描述:游戏的主程序
相关变量:
u8 block_i[5] 全局变量,记录5个障碍物横坐标
u16 block_j[5]; 全局变量,记录5个障碍物纵坐标
u8 rider_cnt; 全局变量,记录车手所占车道
u8 rank[3]; 全局变量,记录排名最高3个分数
extern u8 flag1; 外部变量,按键3控制返回目录
extern u8 flag2; 外部变量,按键1和按键2控制,改变车手的车道
#define RIDER_SPEED 宏定义,车手是速度
#define BLOCK_SPEED 宏定义,障碍物移动的速度
•游戏主程序
void gameplayer()
{game_init(); //游戏开始while(crash_check()) //没有发生相撞 {for(u32 i = 0; i < 1000000; i++); //每隔200ms重新显示line_cnt += RIDER_SPEED;LCD_Roadline();LCD_Rider();if(crash_check()) //车手车道改变时要检测是否相撞{ for(u8 block_cnt = 0; block_cnt < 5; block_cnt++){LCD_Fill(32+13*block_i[block_cnt],
block_j[block_cnt],43+13*block_i[block_cnt], block_j[block_cnt]+11, BLACK); block_j[block_cnt] += BLOCK_SPEED; //障碍物移动if(block_j[block_cnt] > 160 - BLOCK_SPEED) //障碍物移出了屏幕{grade++;block_creat(block_cnt);}LCD_Block(block_cnt);}} }game_end(); //游戏结束while(flag2 == 0 && flag1 == 1); //按键1和按键2重新开始游戏,按键3返回目录
}
工程源码: 硬件课程设计:基于STM32的多功能播放器-单片机文档类资源-CSDN下载
硬件课程设计:基于STM32的多功能播放器之小游戏相关推荐
- 硬件课程设计:基于STM32的多功能播放器之聊天功能
6 聊天功能 6.1 功能介绍 6.1.1 设计思路 在该功能模块中,我打算模拟手机QQ的聊天功能,不同的是QQ是通过互联网实现手机与手机之间的通信,而我是通过蓝牙实现stm32开发板与 ...
- 硬件课程设计:基于STM32的多功能播放器之小说阅读
1 小说阅读功能 1.1 功能介绍 1.1.1 设计思路 在TFTLCD屏上显示中英文文本文件是本次硬件课程设计的基本要求,也是我设计的多功能播放器最重要的功能,要求能够读取事先存储在SD卡中的文本文 ...
- 硬件课程设计:基于STM32的多功能播放器之MP3音乐播放
3 MP3音乐播放 3.1 功能介绍 3.1.1 设计思路 音乐播放是手机等电子产品最常见的功能,也是最具娱乐性的功能,在该模块中,我先从SD卡中读取已存放的MP3音乐文件,然后将读取的字节流依次送人 ...
- 毕业/课程设计——基于STM32的智能灯光控制系统(物联网、智能家居、手机APP控制、语音控制)
文章首先介绍本系统所包含的功能,主要包含六方面功能,之后逐步分享开发过程,其流程如下:点亮灯带(三极管)→调节灯光亮度(PWM)→为系统添加远程控制功能→为系统添加语音识别功能→添加超声波姿态监测功能 ...
- python 课程设计扫雷报告_用 Python 实现扫雷小游戏
扫雷是一款益智类小游戏,最早于 1992 年由微软在 Windows 上发行,游戏适合于全年龄段,规则简单,即在最短的时间内找出所有非雷格子且在中间过程中不能踩到雷,踩到雷则失败,需重新开始. 本文我 ...
- 基于STM32的多功能MP3设计 毕业设计(论文)开题报告
中国计量学院 毕业设计(论文)开题报告 学生姓名:卢杰学 号:XXXXXXXXX 专 业:电子科学与技术 班 级:10电子1 设计(论文)题目: 基于STM32的多功能MP3设计 指导教师 ...
- 计算机组成原理认识fpga,计算机组成原理课程设计-基于EDA和FPGA技术的8位模型计算机的设计与实现_精品.doc...
计算机组成原理课程设计-基于EDA和FPGA技术的8位模型计算机的设计与实现_精品 目录 前言2 第一章 课程设计内容2 1.1 实验要求2 1.2 实验目的2 第二章 实验原理及方案2 2.1 实验 ...
- dsp课程设计c语言源码,DSP课程设计-基于C语言实现256点的FFT精选.pdf
DSP课程设计-基于C语言实现256点的FFT精选 XX 大学 J1111111 UNIVERSITY DSP 课 程 设 计 基于CCS 的FFT 算法的C 语言实现和验证 学院名称: 专业班级: ...
- dac单缓冲方式C语言设计,课程设计基于DAC0832单缓冲工作波形发生器.doc
课程设计基于DAC0832单缓冲工作波形发生器.doc 成绩 课程论文 题 目:基于DAC0832单缓冲工作波形发生器 学生姓名: 学生学号: 系别:电子工程学院 专业:通信工程 年级:2014 任课 ...
最新文章
- jupyter notebook修改默认工作目录
- vs2017 2019 下载更新慢的解决方法
- 【python】 web开发入门
- Java编程的逻辑 (29) - 剖析String
- java io文件操作_java IO 文件操作方法总结
- Unicode(UTF-8, UTF-16)令人混淆的概念
- 微机原理——扩展存储器设计
- host 和TNS设置
- @RequestBody、@ResponseBody的具体用法和使用时机
- 分别标记区段的 飞鸽传书 左、右端
- Bootstrap 响应式导航条
- 鸿星尔克与钉钉签署专属音视频合作 全国5千家门店均可接入
- 交互式反汇编器专业版IDA Pro的一点介绍
- 微信小程序开发的坑---tabBar
- Docker基础-容器操作
- java diamond 运算符_解决:Java source1.5不支持diamond运算符,请使用source 7或更高版本以启用diamond运算符...
- 狂神ajax,Ajax---狂神说
- MYSQL limt随着offset增大效率变低
- Matlab — 常见矩阵生成及矩阵运算
- 验证码之google的reCAPTCHA使用
热门文章
- 智慧港口的信息平台的架构图
- Django安装/django安装失败的解决办法
- 简单的题解 属2017
- html语言中mouse over,javascript中mouseover、mouseout使用详解_javascript技巧-js教程
- 【作业】我们Python老师布置的作业
- 新鲜的展讯笔试2021-07-20
- 【C++ 泛型编程 进阶篇】 C++ 泛型编程 模板与异常处理、模板与友元之间的使用
- 名帖223 赵孟頫 行书三跋《韩滉五牛图卷》
- 解决Eclipse中文乱码问题
- 【转】Unity实现镜头自由移动,第一人称移动