uthman
QQ:3749615
级别: 家园常客
精华主题: 1 篇
发帖数量: 453 个
工控威望: 813 点
下载积分: 2739 分
在线时间: 771(小时)
注册时间: 2007-10-25
最后登录: 2024-11-23
查看uthman的 主题 / 回贴
楼主  发表于: 2016-06-16 12:56
上午没事,写了个俄罗斯方块程序。




  

test.zip (301 K) 下载次数:3381

因为用的是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 合成图形 用于人机显示    
[ 此帖被uthman在2016-06-17 16:34重新编辑 ]
本帖最近评分记录:
  • 下载积分:+1(湖南李奎) 真诚感谢!
  • 下载积分:+2(阿萱子v)
  • 下载积分:+2(代理市长) 我是真心的佩服 &n ..
  • 下载积分:+2(我是雨人) 好贴好贴!
  • 下载积分:+1(随风奔跑) 真诚感谢!
  • 下载积分:+1(zhouyong勇博) 好贴好贴!
  • 下载积分:+5(yangjiejie) NXX
    783251162
    级别: 正式会员
    精华主题: 0
    发帖数量: 4 个
    工控威望: 92 点
    下载积分: 1052 分
    在线时间: 9(小时)
    注册时间: 2016-05-30
    最后登录: 2023-12-07
    查看783251162的 主题 / 回贴
    1楼  发表于: 2016-09-09 21:35
    利害,高手