转发一个大神写的俄罗斯方块程序,没有验证,对错,应该可以。
上午没事,写了个俄罗斯方块程序。
因为用的是16位指令,最大列可以是(16-2)14列,当前程序用的是12列,各位可以自己改成14列,也可以用32位指令改成更多列的,改变行数就不用说了
基本图形用的是4点的,可以换成5点的(游戏难度更高)
程序详解
P0 7种基本图形4个方向,7*4=28个数据 D1000-D1027
P2 边界检测用数据 D1100-D1128[背景图形]
生成 110000000011
110000000011
……
110000000011
111111111111
111111111111
P1 根据D0 D1 D2生成图形 存在D100-D103数组里
D0 1-7种基本图形
D1 1-4种方向
D2 指定图形所在的列
P3 碰撞检测
[背景图形] + [动态图形] =0? 不等于0说明碰到边界
[当前图形] + [动态图形] =0? 不等于0说明与当前图形有干涉
都为0 输出M1
P4 图形移动
调用P1
将D100-D103放入 [动态图形] 中(D3指定行)
调用P3 进行 碰撞检测
未碰撞更新位置 D10 D11 D12 D13
P5 消行得分
[当前图形] D1200-D1231
逐字(行)检测 =001111111100 时 前面所有字左移一位 (下降了一行)
P6 画面显示
[当前图形] OR [动态图形] = [显示图形]
D1600是人机上的点,用作显示
P7 随机数产生图形
随机产生 1-7 1-4 两组数据,并初始行,列 [D20,D21,D22,D23] 下次下落方块数组
调用P1 生成 下一个图形 [D1632,D1633,D1634,D1635] 用于人机显示
P8 下一个方块下落
将下次下落方块数组 放入 当前方块数组 [D10,D11,D12,D13]
调用P1 合成图形 用于人机显示
|