在单片机中,以往我看到长辈们学长们做贪吃蛇的时分不是用汇编便是用FPGA言语编写。那我就在想,C言语但是最简略的言语。怎样不必C言语写呢。首要咱们有必要要知道。在规划单片机游戏时。咱们要知道规划游戏的概念,关于大部分单片机+LCD的游戏规划,根本选用前后台方法,便是一个台中止,一个台循环 ,LCD部分根本是以固定点阵方法规划,什么叫固定点阵??首要先清晰,咱们规划的游戏不是什 么魔兽争霸或CS,而是是非方法的固定点阵游戏,例如常见闻名游戏贪吃蛇或俄罗斯方块。他们的每个点 都是预先就固定下来的,并且是比较大的点,这类专门的游戏机玻璃是经过厂家开模出来 的,有固定的COM,SEG线,然后接到专门的单片机上,例如常用的6502指令调集的单片机,常用的有stc和at系列的他们的材料你能够到www.51hei.com去查询。关于业余规划的游戏,咱们一般用如128*64的LCD来显现,那么咱们规划的时分首要应该把 这个128*64的LCD分块,也便是分出固定点阵出来。LCD的根本点阵是128*64,便是· ¥##¥总归便是好多个点啦,但咱们事实上纷歧定要运算这么多个点,除非你做的游戏很 有看头。例如你只用左面64*64的当地来做贪吃蛇,那么你计划你的贪吃蛇的活动空间是多 少呢?假如是8*8个点的话,算一下便是每个点64/8,64/8,也便是8*8个根本点阵,不过想好玩一点,当然便是要有16*16个点的活动空间啦,那么每个固定点阵就要占4*4的根本 点阵了。要注意,这些4*4的东西在64*64LCD上共16*16个,每个都要用来独立运算。
第二便是时钟:这个其实是游戏的速度,关于一般的弱智类游戏机,他也代表了难度,物体在每个时钟到 达的时分就传动一次,例如俄罗斯方块没个时间向下跑一层。赛车游戏每个时间想前走一 步。一般这类时钟的时间在0.X秒到1秒之间,物体有规矩地匀速运动,让人看到感觉是连动。
第三运动:在这里,我先介绍两种比较遍及的弱智游戏机的物体运动规矩:柔体传动,刚体传动。 刚体传动 代表作是俄罗斯方块,所谓刚体,便是硬硬的一个东东,运动的时分也不怎样旋转(注 意,俄罗斯方块是会旋转,但其实他是没有经过算法的旋转,纯提取数组的方法,也便是 把一个放块做成4个形式的点阵结构,其实便是4个方向,呵呵)关于刚体的传动,在每个 时钟抵达的时分向一个方向(很可能是用户输入的)运动一个固定点阵。假如以坐标来表 达,便是物体的一切根本点阵一起向一个方向(X或Y)移动一个单位。 柔体传动
代表作是贪吃蛇,贪吃蛇跑动的时分并不是整条蛇向一个方向动的(呵呵,蛇蛇身体生硬 了),而是在每个时钟的到来,物体由能量头带动(如蛇头),每个点的方向都向下一个 点传达,然后自己向新的方向走动一步,走动后,下一个点由于得到了上一个点的方向并
同样地运动一步,所以,他会立刻添补上一个点的当地,如此类推。 说的好象没说,看不懂不要紧,由于实践的算法能够简化(傻瓜才会一个个点来走的), 实践上在规划贪吃蛇的时分,只需求把蛇尾巴的那个点阵去掉,然后在蛇头的新方向放一 个点阵便是了。期间需求记录下每个蛇身的固定点阵的方位,并且在每个运动时间往后刷 新一次每个点的方位。
第四显现接口: 咱们用的一般是点阵式LCD,便是一大片点点,128*64,132*64,240*128等等等等啦,这 些又名条屏,便是一写就写一条——8个点(有的也供给写一个点的功用,但贵,至少我没 有),那么假如你只想写一个点怎样办?那就得先把这个点地点的条读出来,然后经过 与,或,的运算后,再放回到LCD上,这时分就要涉及到一个读LCD的问题了,有的LCD供给 读的功用,你写过什么在上面他记的很清楚,但有的便宜货 就不行了,那么咱们怎样办?不要紧,你在内存中提取出一片空间,虚拟一个LCD出来,每 次写在实在LCD上面的时分,也一起写到内存的哪个虚拟LCD上,那么你要读出LCD的值的时 候实践便是读出虚拟LD上的数据,然后与或后,再从头写到LCD上,记住也要写到虚拟LCD 上哦。你能够把这片缓冲叫做显存,
第五。游戏流程:蛇向一个固定方向进行柔体传动,没个运动时钟抵达要做:1。判别食物标志,没有食物了 就放一个,放的时分判别,不能和蛇身堆叠 2。得到用户按键值,蛇走一步,并判别是否 撞死了,没撞死,再判别是否吃到东西了,没有吃到,就等下一个运动时钟,吃了?就增 长一点。置一个没有食物的标志。然后等候下一个时间的降临。 呵呵,其实程序便是这么简略,根本规划只要LCD部分和按键部分是和单片机有关的,其他 都是程序思想和算法。关于菜鸟来说,难度在于思想,而不是单片机。本程序源代码可从http://www.51hei.com/bbs/dpj-18901-1.html处下载。
仿真作用如下: