Arduino制作俄罗斯方块小游戏(一)整体设计思路

emmm,虽然标题是Arduino,但我其实用的不是Arduino,是chipKIT。为什么标题叫Arduino呢,因为玩Arduino的小白多啊。
你看,这就叫标题党【Doge】

虽然我的确不是用的Arduino,但我的确用的是Arduino的IDE编译的啊。单片机芯片是chipKIT,开发板是老师做的,我拿来写个俄罗斯方块,顺便水一个大作业。所以说想复制粘贴直接白嫖的朋友,对不起啦。

话虽如此,既然用Arduino的IDE,好多关键字也是跟Arduino一样的,所以只要会C语言,应该就可以看懂了(虽然我大部分跟单片机相关的部分都是用位操作实现的)
而且有一说一,俄罗斯方块也不是什么很难写的东西,大致看看思路就好,具体的代码还是要自力更生的。
PS:第二篇和单片机没有什么关系,如果只想看游戏设计思路的,可以直接移步第二篇

第一部分先说一下思路吧。其实就是把一个C语言写的俄罗斯方块放在单片机上去实现。这里我是分成了三部分去设计。分别是硬件部分,单片机部分,游戏部分。

硬件部分就是线路啦。我用了一个chipKIT的开发板,一块160*80的LCD屏幕扩展板,以及四个游戏按键。四个按键连接到四个引脚上,输入一侧配置了下拉电阻,另一侧连接3v。按键不按时IO口为低电平,按下后IO口为高电平。然后以这些IO口的电平变化作为外部中断的触发源。因为LCD屏幕占用的一些IO口,中断不太够用,所以下的按键没有用中断,其他三个中断均配置为上升沿出发。

当时自己画的一个简单的线路图,如果单片机有下拉电阻可直接用单片机的,Vcc注意选3v不要选5v:

好久没用过洞洞板,及其丑陋的布局和失败的走锡和飞线…唉
在这里插入图片描述
在这里插入图片描述然后是单片机部分,这一部分主要就是LCD的通信问题(用Arduino的同学可以直接pass了,有现成的库U8glib,不过效果怎么样我就不知道了,可能画面会卡顿?还是建议不要用库自己写一下试试,挺锻炼能力的)以及中断的配置。这也是我第一次直接通过操作寄存器而非用现成的库函数来实现相应的功能,不得不说,自己去看芯片的说明手册,然后自己尝试去实现,还是十分有成就感的。
这一部分我就不讲解了,因为我用的单片机和你们用的大概率不是一款,有兴趣的朋友可以移步源码的链接自己看一下。这里大概介绍一下某写游戏部分用到的函数的功能,以供参考:

//设置前景色的RGB值
void gui_set_frontColor(unsigned char fv_red, unsigned char fv_grn, unsigned char fv_blu);

/*这两个函数用于横屏时显示字符,光标位置为字符的左上角,字符大小高12宽8*/
void lcd_putChar2(unsigned char fv_char);
void gui_put_str2(char *str_ptr, unsigned char str_len);

//绘制游戏的框架
void DrawFrame();

//绘制类型为form,形状为shape,基点坐标为(x,y)的俄罗斯方块
void DrawTetris(u8 x, u8 y, u8 form, u8 shape);

//清除类型为form,形状为shape,基点坐标为(x,y)的俄罗斯方块
void ClearTetris(u8 x, u8 y, u8 form, u8 shape);

然后是游戏部分了,这一部分放到下一篇说吧。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值