本帖最后由 719823597 于 2013-5-24 21:00 编辑
这是索引贴
太空侵略者是在MC中比较好实现的游戏之一,相信大家对其应该不陌生
file:///C:\Users\719823~1\AppData\Local\Temp\ksohtml\wps_clip_image-4168.png
相信各位对显示部分应该没有问题,所以此教程主要写 击落判定
敌机会移位,而且是逐次移位,所以我们要用到移位寄存器来表示敌人,也就是说移位寄存器中的每个D触发器就代表着一个敌人
我们先把游戏场景分列来看,因为子弹是向前飞的,玩家飞机和他正前方的那竖排敌人为一列
子弹呢,我们就用脉冲信号来表示
只有D触发器是不够的,下面是判断模块的功能图
file:///C:\Users\719823~1\AppData\Local\Temp\ksohtml\wps_clip_image-179.png
上下的子弹端口不是连通的,当下面的子弹端口有信号,并且当右边的判断部分判断出这个位置没有敌人,那么上面的子弹端口才会有信号输出
当然,如果判断出这个位置有敌人,那么当子弹通过时,击中敌人的端口会有输出(连接至对应D触发器的重置端口),那么D触发器(敌人)也就会“归0”
对此,我们可以画个真值表
输入
|
输出
|
子弹(下)
|
判断有无敌人
|
子弹(上)
|
击中敌人
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
1
|
0
|
1
|
0
|
1
|
1
|
0
|
1
|
file:///C:\Users\719823~1\AppData\Local\Temp\ksohtml\wps_clip_image-19631.png
这个就是结果了
file:///C:\Users\719823~1\AppData\Local\Temp\ksohtml\wps_clip_image-27056.png
ab,xy和真值表是对应的,所以y接D触发器的重置端口,x呢,就接下一个判断模块的子弹(下)端口,接着就可以在游戏里造了
(半圆形是与门,小三角是非门)