玩无限消乐的设计示例(基础篇)消除动画元素操作

本文介绍了一种用于消除游戏板上横向或纵向相连的三个以上相同动画元素的算法实现。通过遍历行列,检查相邻元素是否匹配,并使用特定图像标记已消除元素。

交换动画元素后就是要消除动画元素了,消除的规则是横向或纵向相连的三个以上相同元素才能进行消除,操作意图注释在语句中。

        private bool 消除动画(int 行数, int 列数, int 数据, bool 行列 = false)
        {
            bool 选控 = false;
            if (!行列) 计个数 = 0;
        消除: //跟踪记录("消除动画:" + (选控 ? "消除" : "检查"));
            int 重复 = 0, 上 = 行数, 下 = 行数, 左 = 列数, 右 = 列数; 选定坐标[4] = 行数; 选定坐标[5] = 列数;
            if (行列 && 数据 != 0)
            {
                while (上 > 0 && (int)玩无限消乐.Rows[--上].Cells[列数].Tag == 数据)
                { if (!选控) ++重复; else { 玩无限消乐.Rows[上].Cells[列数].Value = new Bitmap("动画素材/e136.gif"); 玩无限消乐.Rows[上].Cells[列数].Tag = 0; } }

                while (下 < 玩无限消乐.RowCount - 1 && (int)玩无限消乐.Rows[++下].Cells[列数].Tag == 数据)
                { if (!选控) ++重复; else { 玩无限消乐.Rows[下].Cells[列数].Value = new Bitmap("动画素材/e136.gif"); 玩无限消乐.Rows[下].Cells[列数].Tag = 0; 选定坐标[4] = 下;/*由于自上而下循环,因此,记录最下位置。*/ } }
            }
            if (!行列 && 数据 != 0)
            {
                while (右 < 玩无限消乐.ColumnCount - 1 && (int)玩无限消乐.Rows[行数].Cells[++右].Tag == 数据)
                { if (!选控) ++重复; else { 玩无限消乐.Rows[行数].Cells[右].Value = new Bitmap("动画素材/e136.gif"); 玩无限消乐.Rows[行数].Cells[右].Tag = 0; } }

                while (左 > 0 && (int)玩无限消乐.Rows[行数].Cells[--左].Tag == 数据)
                { if (!选控) ++重复; else { 玩无限消乐.Rows[行数].Cells[左].Value = new Bitmap("动画素材/e136.gif"); 玩无限消乐.Rows[行数].Cells[左].Tag = 0; 选定坐标[5] = 左;/*由于从左到右进行循环,因此,记录最左的位置。*/ } }
            }

            if (重复 >= 2)
            { 
                选控 = true;/*控制第一次是检查并计数,如果符合要求则跳转去消除元素。*/
                goto 消除;
            }
            return 选控;/*返回是否进行消除信息。*/
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值