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

来源:互联网 发布:七月算法机器学习视频 编辑:程序博客网 时间:2024/05/16 17:09

配合消除动画元素操作的完成,改进拖放动画操作。

        private void 玩无限消乐_DragDrop(object sender, DragEventArgs e)        {            Point 平面二维 = 玩无限消乐.PointToClient(new Point(e.X, e.Y));            int 拖到行 = 玩无限消乐.HitTest(平面二维.X, 平面二维.Y).RowIndex, 拖到列 = 玩无限消乐.HitTest(平面二维.X, 平面二维.Y).ColumnIndex;            DataGridViewCell 拖到单元 = 玩无限消乐.Rows[拖到行].Cells[拖到列];            DataGridViewCell 选定单元 = 玩无限消乐.Rows[选定坐标[1]].Cells[选定坐标[2]];            /*限制条件是有特殊标记的不被交换,交换元素可以选中盘的任何位置元素,而不做只能相邻才能交换的限制,这一点与其他消除规则有些不同,之下注释掉的语句就是一种限制条件。*/            //if (Math.Abs(选定坐标[1] - 玩无限消除.HitTest(平面二维.X, 平面二维.Y).RowIndex) <= 1) if (Math.Abs(选定坐标[2] - 玩无限消除.HitTest(平面二维.X, 平面二维.Y).ColumnIndex) <= 1)            if ((int)拖到单元.Tag != 0 && (int)选定单元.Tag != 0)            {                选定单元.Value = 拖到单元.Value;                选定单元.Tag = 拖到单元.Tag;                拖到单元.Value = 选定坐标[0] == 0 ? new Bitmap("动画素材/e136.gif") : new Bitmap("动画素材/e" + 选定坐标[0].ToString() + ".gif");                拖到单元.Tag = 选定坐标[0];                bool 消除行 = (消除动画(拖到行, 拖到列, (int)拖到单元.Tag)),                     消除列 = (消除动画(拖到行, 拖到列, (int)拖到单元.Tag, true)), 复原 = true;                if (消除行 || 消除列)/*目标处动画消除。*/                {                    拖到单元.Value = new Bitmap("动画素材/e136.gif");                    拖到单元.Tag = 0;                    复原 = false;                    填充检测(选定坐标[4], 选定坐标[5]);                }                消除行 = (消除动画(选定坐标[1], 选定坐标[2], (int)选定单元.Tag));                消除列 = (消除动画(选定坐标[1], 选定坐标[2], (int)选定单元.Tag, true));                if (消除行 || 消除列)/*拖动处动画消除。*/                {                    选定单元.Value = new Bitmap("动画素材/e136.gif");                    选定单元.Tag = 0;                    复原 = false;                    填充检测(选定坐标[4], 选定坐标[5]);                }                if (复原)/*如果拖动的动画元素没被消除则恢复原先位置。*/                {                    拖到单元.Value = 选定单元.Value;                    拖到单元.Tag = 选定单元.Tag;                    选定单元.Value = 选定坐标[0] == 0 ? new Bitmap("动画素材/e136.gif") : new Bitmap("动画素材/e" + 选定坐标[0].ToString() + ".gif");                    选定单元.Tag = 选定坐标[0];                    检查可消();                }            }        }

至此,这个游戏的基础部分就设计完成了,也就是说可以玩了。


0 0
原创粉丝点击