[Kinetis]

【Kinetis实验】+ 游戏贪吃蛇程序(原创+源码)

[复制链接]
2339|13
手机看帖
扫描二维码
随时随地手机跟帖
北斗stone|  楼主 | 2014-9-20 19:49 | 显示全部楼层 |阅读模式
北斗stone|  楼主 | 2014-9-20 19:54 | 显示全部楼层
首先申明一下,这些代码虽然不多,但是也经过自己的多次整改,其中很多方案对比了很久,最后决定这么写的,请各位首先不要怀疑我是抄袭之类的,谢谢。如果大家感兴趣,可以接着开发一些好玩的小游戏,让各位在工作之余能够小小地娱乐一下。
P40919-200409.jpg

使用特权

评论回复
北斗stone|  楼主 | 2014-9-20 19:56 | 显示全部楼层
接下来,我想讲讲自己调试过程中的细节:先按照16*16的方块划出坐标系并且画出身体关节,一开始想保留每个关节的坐标,但后来在尝试用二维数组写身体的时候,突然觉得用一条数组也行,于是就保留了首关节的坐标,数组里放的变量表示的是后面一个关节与前面关节的相对位置。
到了这一步,其实还是只用到了一个万利的工程文件。

使用特权

评论回复
北斗stone|  楼主 | 2014-9-20 19:58 | 显示全部楼层
    首先想要贪吃蛇动起来,需要定时刷屏,改变每个关节坐标,然而万利的定时器例程比较简单所以还不如直接用了在循环中延时。
    当蛇能够动起来了,我又想加入方向控制,这时候硬件上有按键、有触摸按键模块,本来想要用外部中断,用它也是最完美的方向控制,但是貌似没有外部中断的例程。。于是我就只好用触摸按键的那个TSI的例程,整合一下,发现按起来需要长按,确实这也是自己意料之中。

使用特权

评论回复
北斗stone|  楼主 | 2014-9-20 20:03 | 显示全部楼层
    接下来的事情开始痛苦了。。要能够随机生成苹果,就是要产生随机数,从而能够随机生成点,以前用VC,随便一个rand()函数就能产生一个随机数,而用单片机产生伪随机数,确实是我第一次去研究,当然,当时决定做这个贪食蛇的时候没有考虑那么多,但是既然做了,那就要把它做到底了。网上看到最多的还是51的定时器末几位产生伪随机数,其次就是用线性公式生成随机数。当时我想的方法是也先用定时器产生,但是从工程来看却找不到这个寄存器(sorry,原谅我没有翻K20寄存器的datasheet),后来又想找找RTC的寄存器有没有可以的,但是一看貌似只有秒级的,后来还是只用了那个volatile的浮动变量去做随机数种子,去生成一串随机数。确定这个也花了一些时间

使用特权

评论回复
北斗stone|  楼主 | 2014-9-20 20:09 | 显示全部楼层
    后来,点也能随机生成,身体也能变长,还有一堆细节未解决。。
    (1)头碰到身体要挂
    (2)头撞墙要挂
    (3)往前只能左右拐,不能退
    ……
    于是乎,发现其实还是要算出每节身体的坐标。。
    不想伤经动骨,只能修修补补,但是慢慢地,慢慢地会发现,到了最后补啊补实在不补动了,于是一切推翻重。所以其实如果程序已经修补到接下来的修补会很繁琐,不如推翻了重来,重新架构数据框架和算法思路。就好像想学会大乘功夫,必须自废之前所学的武功一样

使用特权

评论回复
北斗stone|  楼主 | 2014-9-20 20:16 | 显示全部楼层
    大家做研发其实都知道,不管硬件软件,细节才是最重要的。就像这个小工程文件,从一个用户的角度感觉这个游戏没有什么逻辑上的难度,然而从开发者的角度,每进行一步就会发现有更多的细节值得去注意。其实无论做啥,感觉本着严谨的态度,把东西做好才对得起自己的艺术。

使用特权

评论回复
北斗stone|  楼主 | 2014-9-20 20:16 | 显示全部楼层
最后其实还想说:申请板子的时候,打算利用闲暇时间做一个和自动控制系统有关的东西,本着将它做成一个产品的目的,准备将申请到的板子用来前期做算法以及外围模块的测试,所以已经作好在这上面打持久战的准备了。然而口说无凭,短期内(活动期间)又要能做些有意义的工程,能给大家带来一些东西,所以我决定先奉上贪吃蛇参与评审。

使用特权

评论回复
北斗stone|  楼主 | 2014-9-20 20:19 | 显示全部楼层
后面的工作,也就是做自控的那个项目,我先在这边挖个坑,我会不定期地更新一些进度,请大家一起监督我哈!先来张快完工的50V,250W电机驱动PCB的截图
捕获.PNG

使用特权

评论回复
北斗stone|  楼主 | 2014-9-20 20:25 | 显示全部楼层
希望各位大神指出以上各种不足!谢谢了!!!
这是我以前参加飞思卡尔智能车竞赛用Kinetis 60做的直立平衡车http://v.youku.com/v_show/id_XNTQ3NjQxMTMy.html(参考卓晴老师的源代码)
这是用Kinetis 60做的魔方还原系统,骨架参考腐乳鸽的那个(自己做的机械有点烂),程序代码完全是自己码的。求各位看官顶顶撒!http://v.youku.com/v_show/id_XNzE5MDU5OTQw.html

使用特权

评论回复
茫茫大士| | 2014-9-20 22:16 | 显示全部楼层
本帖最后由 茫茫大士 于 2014-9-20 22:18 编辑

不错不错顶一下,代码里还有调试日志

使用特权

评论回复
hu_uuu| | 2014-9-21 16:23 | 显示全部楼层
不错!顶一个

使用特权

评论回复
Harvard| | 2014-9-21 20:37 | 显示全部楼层
编译不了 提示出错.Rebuild target 'Kinetis K20'
compiling main.c...
Application\main.c(1): error:  #5: cannot open source input file "kinetis.h": No such file or directory
compiling gpio.c...
gpio.c: Error:  #5: cannot open source input file "..\Common\Driver\gpio.c": No such file or directory
".\Output\Execute.axf" - 2 Errors, 0 Warning(s).
Target not created

使用特权

评论回复
北斗stone|  楼主 | 2014-9-21 21:26 | 显示全部楼层
Harvard 发表于 2014-9-21 20:37
编译不了 提示出错.Rebuild target 'Kinetis K20'
compiling main.c...
Application\main.c(1): error:  #5 ...

是这样的,万利电子提供的程序里有个common的文件夹,这个文件夹必须和工程文件夹放在在同一个文件夹里的,再试试?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

338

帖子

6

粉丝