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的多功能播放器之小游戏相关推荐

  1. 硬件课程设计:基于STM32的多功能播放器之聊天功能

    6 聊天功能 6.1 功能介绍 6.1.1 设计思路        在该功能模块中,我打算模拟手机QQ的聊天功能,不同的是QQ是通过互联网实现手机与手机之间的通信,而我是通过蓝牙实现stm32开发板与 ...

  2. 硬件课程设计:基于STM32的多功能播放器之小说阅读

    1 小说阅读功能 1.1 功能介绍 1.1.1 设计思路 在TFTLCD屏上显示中英文文本文件是本次硬件课程设计的基本要求,也是我设计的多功能播放器最重要的功能,要求能够读取事先存储在SD卡中的文本文 ...

  3. 硬件课程设计:基于STM32的多功能播放器之MP3音乐播放

    3 MP3音乐播放 3.1 功能介绍 3.1.1 设计思路 音乐播放是手机等电子产品最常见的功能,也是最具娱乐性的功能,在该模块中,我先从SD卡中读取已存放的MP3音乐文件,然后将读取的字节流依次送人 ...

  4. 毕业/课程设计——基于STM32的智能灯光控制系统(物联网、智能家居、手机APP控制、语音控制)

    文章首先介绍本系统所包含的功能,主要包含六方面功能,之后逐步分享开发过程,其流程如下:点亮灯带(三极管)→调节灯光亮度(PWM)→为系统添加远程控制功能→为系统添加语音识别功能→添加超声波姿态监测功能 ...

  5. python 课程设计扫雷报告_用 Python 实现扫雷小游戏

    扫雷是一款益智类小游戏,最早于 1992 年由微软在 Windows 上发行,游戏适合于全年龄段,规则简单,即在最短的时间内找出所有非雷格子且在中间过程中不能踩到雷,踩到雷则失败,需重新开始. 本文我 ...

  6. 基于STM32的多功能MP3设计 毕业设计(论文)开题报告

    中国计量学院 毕业设计(论文)开题报告 学生姓名:卢杰学 号:XXXXXXXXX 专    业:电子科学与技术 班    级:10电子1 设计(论文)题目: 基于STM32的多功能MP3设计 指导教师 ...

  7. 计算机组成原理认识fpga,计算机组成原理课程设计-基于EDA和FPGA技术的8位模型计算机的设计与实现_精品.doc...

    计算机组成原理课程设计-基于EDA和FPGA技术的8位模型计算机的设计与实现_精品 目录 前言2 第一章 课程设计内容2 1.1 实验要求2 1.2 实验目的2 第二章 实验原理及方案2 2.1 实验 ...

  8. dsp课程设计c语言源码,DSP课程设计-基于C语言实现256点的FFT精选.pdf

    DSP课程设计-基于C语言实现256点的FFT精选 XX 大学 J1111111 UNIVERSITY DSP 课 程 设 计 基于CCS 的FFT 算法的C 语言实现和验证 学院名称: 专业班级: ...

  9. dac单缓冲方式C语言设计,课程设计基于DAC0832单缓冲工作波形发生器.doc

    课程设计基于DAC0832单缓冲工作波形发生器.doc 成绩 课程论文 题 目:基于DAC0832单缓冲工作波形发生器 学生姓名: 学生学号: 系别:电子工程学院 专业:通信工程 年级:2014 任课 ...

最新文章

  1. jupyter notebook修改默认工作目录
  2. vs2017 2019 下载更新慢的解决方法
  3. 【python】 web开发入门
  4. Java编程的逻辑 (29) - 剖析String
  5. java io文件操作_java IO 文件操作方法总结
  6. Unicode(UTF-8, UTF-16)令人混淆的概念
  7. 微机原理——扩展存储器设计
  8. host 和TNS设置
  9. @RequestBody、@ResponseBody的具体用法和使用时机
  10. 分别标记区段的 飞鸽传书 左、右端
  11. Bootstrap 响应式导航条
  12. 鸿星尔克与钉钉签署专属音视频合作 全国5千家门店均可接入
  13. 交互式反汇编器专业版IDA Pro的一点介绍
  14. 微信小程序开发的坑---tabBar
  15. Docker基础-容器操作
  16. java diamond 运算符_解决:Java source1.5不支持diamond运算符,请使用source 7或更高版本以启用diamond运算符...
  17. 狂神ajax,Ajax---狂神说
  18. MYSQL limt随着offset增大效率变低
  19. Matlab — 常见矩阵生成及矩阵运算
  20. 验证码之google的reCAPTCHA使用

热门文章

  1. 智慧港口的信息平台的架构图
  2. Django安装/django安装失败的解决办法
  3. 简单的题解 属2017
  4. html语言中mouse over,javascript中mouseover、mouseout使用详解_javascript技巧-js教程
  5. 【作业】我们Python老师布置的作业
  6. 新鲜的展讯笔试2021-07-20
  7. 【C++ 泛型编程 进阶篇】 C++ 泛型编程 模板与异常处理、模板与友元之间的使用
  8. 名帖223 赵孟頫 行书三跋《韩滉五牛图卷》
  9. 解决Eclipse中文乱码问题
  10. 【转】Unity实现镜头自由移动,第一人称移动