
基于立创·梁山派的游戏机扩展板设计
简介
原版为嘉立创梁山派游戏开发板,照着学习画下来的,我个人做了一些改动,如把供电模块集成了上去,把正面的元器件移动到了背面,使得正面更为简单整洁。
简介:原版为嘉立创梁山派游戏开发板,照着学习画下来的,我个人做了一些改动,如把供电模块集成了上去,把正面的元器件移动到了背面,使得正面更为简单整洁。开源协议
:GPL 3.0
描述
1.目标:其实想了很久开始一个项目进行学习,但不知道开始哪个好,正好看到了嘉立创开源的游戏机开发板项目,就调动起了我颗喜欢打游戏的心,有了兴趣后动力也就足了,最终也是成功完成了项目,也学到了很多东西。
2.功能介绍:(1)成功移植nes,实现一个游戏机该有的功能。
(2)自己写的贪吃蛇游戏,初始化按界面如下:
每吃一个果实都会震动,通过pwm来控制震动的幅度,设置周期为5000,脉冲值为3000,来实现一个比较适合我的震动,大家有需求可以在void pwm_timer_config(uint16_t pulse,uint16_t period)函数中来修改脉冲值和周期来调整其振动幅度
采用了定时器中断来控制震动时间,因为控制马达的引脚对应定时器5,所以这里使用了定时器五,预分频设为200,周期为100000,即定时时间0.1s后触发中断来把owm脉冲调为0来实现震动0.1s,有需求的各位可以在函数void timer_config(uint16_t pre, uint32_t period)来调整周期改变震动时间
给按键A配置了外部中断,在按下A时速度会翻倍,松开A时则恢复原本的速度
其他几个按键我也配置了中断,有需求扩展功能的话可以在其他几个按键的中断函数里直接写;
倘若碰到屏幕边界或是碰到身体,就会初始化,重新开始:
当长度达到40个时会显示胜利,各位也可以根据需求来更改这个数值
下来为了方便演示,我把胜利条件调到了20个,在显示“”GAME WIN“”字样后会重新开始新一局游戏
(3)自己写了一个精灵宠物养成游戏,本来想用宝可梦的图片,但惧怕任天堂法务部,因此使用了比较有趣的表情包
下面是初始化界面,小精灵处在一个比较平稳的状态,主要有五项数值,快乐值,饥饿值,疲劳值,健康值以及等级
我初始化设定的快乐值饥饿值疲劳值都为50,健康值为100,初始等级为0,有需求可自行更改
之后随着时间的增加宠物精灵的快乐值和健康值会降低,饥饿度和疲劳度会增加,并且我设定了一个年龄值,会随着时间增长,每30s会提升一级等级,并且为防止属性值超出界限,设置了if语句,若果超出则回归界限值
为了增加趣味性,还加入了随机事件,设置为了百分之五的概率发生,目前都是些负面事件,有需要的话可以加添事件
这里因为还没做存档系统,为了增加游戏的紧张感,各项数值变化很快,这方面可以在上述函数进行调整;可以通过摇杆或按键进行互动,具体操作有四种:上摇杆来进行喂食,下摇杆进行清洁,左摇杆进行小睡,右摇杆进行玩耍
每次进行玩耍类,进食类,清洁类的互动操作时,小精灵都会感到开心,从而欢欣雀跃,但只会持续1s,之后就变成原本状态
其中喂食操作会降低饥饿值,同时提升快乐,但会略微增加疲劳,同时显示喂食的字样:
清洁操作会降低疲劳,且提升健康值,同时提升快乐,没有负面影响。同时显示清洁字样
玩耍操作主要提升快乐,但会增加疲劳和饥饿,适合短时间提升宠物情绪。同时显示玩耍字样
小睡操作主要降低疲劳,但会略微降低快乐,适合让宠物恢复精力。同时显示睡眠字样
同时小睡会持续5s,宠物也会展露睡相:
因着各项数值的变化,宠物也会展现不同的姿态,以下是我对数值的一个判断,大家可以自行修改
当各项数值均很高时,小精灵会欢喜鼓舞
当各项数值偏高时,小精灵会开心
数值中等的话就是一开始初始化时的表情,在这里不行演示
数值偏低小精灵会有点生气
数值太低的话小精灵会非常生气,因为你疏忽了它
最终,如果有一项数值低出了界限,则会触发结束
小精灵会认为你没有照顾好它,会红温着离开
因为我把数值设置的降低很快,因此小精灵并不好伺候,提升等级也是一个挑战,想培养到高等级其很有难度
因为我是初学者,游戏平衡完全是在凭自己的感觉在做,所以大家觉得数值不好的话可以在其中修改
目前也在做更多的功能,比如减慢数值降低速度,并在其上显示时间,并增加日夜系统,白天显示白色背景,晚上显示黑色背景,这样就可以当一个桌面闹钟兼宠物了。
3.技能掌握:通过本项目了解到了元器件的选购,原理图及PCB的画法,元器件的焊接,如何驱动硬件,掌握嵌入式软件开发、代码的阅读与BUG调试的方法与技巧等等。不足之处则是焊接还是有些生疏,焊锡要么给多了要么给少了,而且C语言底子有点差,需要好好复习复习了。
4.碰到的问题与解决方法:
硬件方面焊接时先焊了屏幕,后面用热风枪吹背面,吹完后才发现屏幕和按键给吹融化了,不得不买第二块;并且因为手法生烂,给小马达负极铁片焊掉了,十分痛心,毕竟一个小马达七块呢,好在我室友经验老到,使用一个小铁丝代替了负极,焊在了马达的负极上。最后小马达的功能也是得以正常实现;最后都焊好后发现不能长按关机,最后检查后发现少了一条线,最后也是通过飞线解决了。
软件方面则是遇到了中文不能输出的问题,而且就算我把例程复制过来也不能在屏幕上显示汉字。最后经过我室友的盘查,发现是我用的编码方式是UTF-8,在切换成GB2312后也是得以解决。而且经常遇到写完代码后也没报错但烧录进去就是硬件就是不动的问题,其实绝大多数都出在初始化设置上,还是要多加细心。也是收获颇多,算是完成了第一个项目。非常感谢嘉立创提供的如此好的平台供我们学习。也非常感谢我的室友,如果没有他的帮助靠我这丝毫谈不上稳的手不知道要多久后才能完成这个项目。
设计图

BOM


评论