系统整体描述

(1) 系统开发及运行平台
① 硬件平台:PC机,S3C2410 ARM9芯片
② 软件平台:Linux环境,windows环境
(2) 系统组成部分基本组成部分:输出、控制、显示部分。① 输出部分包括: 4个发光led、蜂鸣器。② 控制部分包括:键盘的*键,#键,B键。③ 显示部分LCD显示屏上可以实时的显示矿工挖矿的状态。

游戏功能分析

要实现在S3C2410 ARM处理器和嵌入式Linux操作系统平台上对黄金矿工游戏设计,主要思路为:屏幕下半部分有固定的17条(每隔10°一条)同一端点的直线作为钩子的摆动轨迹(如图所示),
嵌入式软件设计大作业--基于S3C2410的黄金矿工游戏的实现
在每条直线上等距取三个点,作为可能随机生成物品的点,共51个坐标,钩子在摆动过程中,按下按键后就根据情况分析抓取.
主要有以下几个方面的实现要求:
(1) 驱动各个硬件模块在嵌入式Linux操作系统下正常工作的实现
(2) 通过按键实现抓取,炸毁,退出
(3) 各个硬件设备正常运行而没有冲突的实现
按键介绍,暂时只用到3个,”*”,”#”,”B”:
(1) * — 抓取动作,结合判断部分分析是否可抓取。
(2) # — 炸毁,只能炸毁钩子方向上的第一个石头。
(3) B — 退出游戏。

重要数据结构说明

(1) 几个重要的数组
① Position:记录可能出现物品的x,y坐标。
② centre:记录爪子旋转中心的坐标。
(2) LCD显示图案的数组
① 钻石:
嵌入式软件设计大作业--基于S3C2410的黄金矿工游戏的实现
② 金矿:
嵌入式软件设计大作业--基于S3C2410的黄金矿工游戏的实现
③ 石头:
嵌入式软件设计大作业--基于S3C2410的黄金矿工游戏的实现
④ 矿工:
嵌入式软件设计大作业--基于S3C2410的黄金矿工游戏的实现

游戏模块划分及代码分析

LCD显示部分代码及分析

(1) LCD屏幕画点:在给定x,y坐标处画颜色为color的点
嵌入式软件设计大作业--基于S3C2410的黄金矿工游戏的实现
(2) LCD屏幕画物品:金矿,钻石,石头,小人,给定位置画出
嵌入式软件设计大作业--基于S3C2410的黄金矿工游戏的实现
(3) 画线:起始点终点画线:逼近法画线
嵌入式软件设计大作业--基于S3C2410的黄金矿工游戏的实现
(4) 画圆(钩子用圆代替):
嵌入式软件设计大作业--基于S3C2410的黄金矿工游戏的实现
(5) 画背景:分成上下两部分,并在上部分画一个矿工
嵌入式软件设计大作业--基于S3C2410的黄金矿工游戏的实现
(6) 钩子抓取动画结合画线,以及画圆部分,线是逐渐逼近终点,于是在线的逼近过程中,将上一个圆涂成底色(即擦去),在下一个点出现的位置为圆心画圆,就在视觉上产生了爪子抓取的动画效果,这里的画法都是用了S3C2410裸板arm编程里的代码改的,钩子抓取的动画不是很好,由于时间有限,就只能做成那样了,然后回退的动画也由于时间不够没有做出来,可以考虑加进去.

各硬件初始化启动部分代码及分析 直接调用即可

嵌入式软件设计大作业--基于S3C2410的黄金矿工游戏的实现

逻辑控制部分代码及分析(代码中有)

(1) 随机生成物品map: 注:可调节物品出现概率以达到难度变化的功能
(2) 得到按键 得到按键,由于驱动中添加了延时,于是在超时时会进入下一帧
(3) 判断是否可抓取判断数组的第一个非空位置是否为石头,是则不能抓取,不是,则在map中将该位置职置为-1,表示删去,下次打印时则不会显示了,表示成功抓走 结合上文提到的存储物品的数组判断,爪子方向上的物品是否可抓取.
(4) 判断是否可炸毁 和判断抓取的方法一致
(5) 分数达到进入下一关:修改物品出现概率

总结

这是嵌入式软件设计课程结束后的一个大作业,基本上把课程上学过的交叉编译工具链,配置编译内核,实验平台的硬件原理及驱动都熟悉了一下,但由于时间有限,代码中有很多地方都很烂,望包涵和指导,附代码的链接:
链接:https://pan.baidu.com/s/11S4_7lfUDcd9FTe8Cj-OHQ
提取码:59r5

相关文章: