CSkin博客

标题: 【消除之星游戏】C#仿照苹果手机上的消除之星 [打印本页]

作者: 乔克斯    时间: 2014-8-19 15:30
标题: 【消除之星游戏】C#仿照苹果手机上的消除之星
效果图:
1.开始界面。

2.第一关。

2.第二关。


实现思路:说一下设计思路,主要就是根据用户点击的是哪个星星判断他周围有多少个与他相同的星星

部分代码:
[C#] 纯文本查看 复制代码
/// <summary>
        /// 给list赋值,得到点击位置周围相同的星星
        /// </summary>
        /// <param name="x">横坐标</param>
        /// <param name="y">纵坐标</param>
        /// <param name="dirction">判断的放向</param>
        /// <param name="flag"></param>
        void GetAround(int x, int y, Direction dirction = Direction.Null, int flag = 1)
        {
            if (starsColor[x, y] == StarColor.White)
                return;
            if (dirction == Direction.Null)
            {
                list.Clear();
                list.Add(new StarInfo(x, y, starsColor[x, y], 1));
                starsFlag[x, y] = 1;
                if (x == 0 && y == 0)
                {
                    GetAround(x, y, Direction.Right);
                    GetAround(x, y, Direction.Down);
                }
                else if (x == 0 && y == 9)
                {
                    GetAround(x, y, Direction.Right);
                    GetAround(x, y, Direction.Up);
                }
                else if (x == 9 && y == 0)
                {
                    GetAround(x, y, Direction.Left);
                    GetAround(x, y, Direction.Down);
                }
                else if (x == 9 && y == 9)
                {
                    GetAround(x, y, Direction.Left);
                    GetAround(x, y, Direction.Up);
                }
                else if (x == 0)
                {
                    GetAround(x, y, Direction.Up);
                    GetAround(x, y, Direction.Right);
                    GetAround(x, y, Direction.Down);
                }
                else if (x == 9)
                {
                    GetAround(x, y, Direction.Left);
                    GetAround(x, y, Direction.Down);
                    GetAround(x, y, Direction.Up);
                }

                else if (y == 0)
                {
                    GetAround(x, y, Direction.Right);
                    GetAround(x, y, Direction.Left);
                    GetAround(x, y, Direction.Down);
                }
                else if (y == 9)
                {
                    GetAround(x, y, Direction.Left);
                    GetAround(x, y, Direction.Up);
                    GetAround(x, y, Direction.Right);
                }
                else
                {
                    GetAround(x, y, Direction.Up);
                    GetAround(x, y, Direction.Down);
                    GetAround(x, y, Direction.Left);
                    GetAround(x, y, Direction.Right);
                }
            }
            else if (dirction == Direction.Up)
            {
                for (int i = 0; i < list.Count; i++)
                {
                    if (x == list.X && y - 1 == list.Y && starsColor[x, y - 1] == list.Color)
                    {
                        return;
                    }
                }
                if (starsColor[x, y] == starsColor[x, y - 1])
                {
                    list.Add(new StarInfo(x, y - 1, starsColor[x, y - 1], 1));
                    starsFlag[x, y - 1] = 1;
                    if (x == 0 && y == 0)
                    {
                        GetAround(x, y - 1, Direction.Right);
                    }
                    else if (x == 9 && y == 0)
                    {
                        GetAround(x, y - 1, Direction.Left);
                    }
                    else if (x == 0 && y == 9)
                    {
                        GetAround(x, y - 1, Direction.Right);
                        GetAround(x, y - 1, Direction.Up);
                    }
                    else if (x == 9 && y == 9)
                    {
                        GetAround(x, y - 1, Direction.Up);
                        GetAround(x, y - 1, Direction.Left);
                    }
                    else if (x == 0)
                    {
                        if (y - 1 > 0)
                        {
                            GetAround(x, y - 1, Direction.Up);
                        }
                        GetAround(x, y - 1, Direction.Right);
                    }
                    else if (x == 9)
                    {
                        GetAround(x, y - 1, Direction.Left);
                        if (y - 1 > 0)
                        {
                            GetAround(x, y - 1, Direction.Up);
                        }
                    }
                    else if (y == 0)
                    {
                        GetAround(x, y - 1, Direction.Left);
                        GetAround(x, y - 1, Direction.Right);
                    }
                    else if (y == 9)
                    {
                        GetAround(x, y - 1, Direction.Left);
                        GetAround(x, y - 1, Direction.Right);
                        if (y - 1 > 0)
                        {
                            GetAround(x, y - 1, Direction.Up);
                        }

                    }
                    else
                    {
                        GetAround(x, y - 1, Direction.Left);
                        GetAround(x, y - 1, Direction.Right);
                        if (y - 1 > 0)
                        {
                            GetAround(x, y - 1, Direction.Up);
                        }
                    }
                    return;
                }
                else return;
            }

            else if (dirction == Direction.Down)
            {
                for (int i = 0; i < list.Count; i++)
                {
                    if (x == list.X && y + 1 == list.Y && starsColor[x, y + 1] == list.Color)
                    {
                        return;
                    }
                }
                if (starsColor[x, y] == starsColor[x, y + 1])
                {
                    list.Add(new StarInfo(x, y + 1, starsColor[x, y + 1], 1));
                    starsFlag[x, y + 1] = 1;
                    if (x == 0 && y == 0)
                    {
                        GetAround(x, y + 1, Direction.Right);
                        GetAround(x, y + 1, Direction.Down);
                    }
                    else if (x == 9 && y == 0)
                    {
                        GetAround(x, y + 1, Direction.Left);
                        GetAround(x, y + 1, Direction.Down);
                    }
                    else if (x == 0 && y == 9)
                    {
                        GetAround(x, y + 1, Direction.Right);
                    }
                    else if (x == 9 && y == 9)
                    {
                        GetAround(x, y + 1, Direction.Left);
                    }
                    else if (x == 0)
                    {
                        GetAround(x, y + 1, Direction.Right);
                        if (y + 1 < 9)
                        {
                            GetAround(x, y + 1, Direction.Down);
                        }
                    }
                    else if (x == 9)
                    {
                        GetAround(x, y + 1, Direction.Left);
                        if (y + 1 < 9)
                        {
                            GetAround(x, y + 1, Direction.Down);
                        }
                    }
                    else if (y == 0)
                    {
                        GetAround(x, y + 1, Direction.Left);
                        GetAround(x, y + 1, Direction.Right);
                        GetAround(x, y + 1, Direction.Down);
                    }
                    else if (y == 9)
                    {
                        GetAround(x, y + 1, Direction.Left);
                        GetAround(x, y + 1, Direction.Right);
                    }
                    else
                    {
                        if (y + 1 <= 9)
                        {
                            GetAround(x, y + 1, Direction.Left);
                            GetAround(x, y + 1, Direction.Right);
                        }

                        if (y + 1 < 9)
                        {
                            GetAround(x, y + 1, Direction.Down);
                        }
                    } return;
                }
                else return;
            }
            else if (dirction == Direction.Left)
            {
                for (int i = 0; i < list.Count; i++)
                {
                    if (x - 1 == list.X && y == list.Y && starsColor[x - 1, y] == list.Color)
                    {
                        return;
                    }
                }
                if (starsColor[x, y] == starsColor[x - 1, y])
                {
                    list.Add(new StarInfo(x - 1, y, starsColor[x - 1, y], 1));
                    starsFlag[x - 1, y] = 1;
                    if (x == 0 && y == 0)
                    {
                        GetAround(x - 1, y, Direction.Down);
                    }
                    else if (x == 9 && y == 0)
                    {
                        GetAround(x - 1, y, Direction.Left);
                        GetAround(x - 1, y, Direction.Down);
                    }
                    else if (x == 0 && y == 9)
                    {
                        GetAround(x - 1, y, Direction.Up);
                    }
                    else if (x == 9 && y == 9)
                    {
                        GetAround(x - 1, y, Direction.Up);
                        GetAround(x - 1, y, Direction.Left);
                    }
                    else if (x == 0)
                    {
                        GetAround(x - 1, y, Direction.Up);
                        GetAround(x - 1, y, Direction.Down);
                    }
                    else if (x == 9)
                    {
                        GetAround(x - 1, y, Direction.Left);
                        GetAround(x - 1, y, Direction.Down);
                        GetAround(x - 1, y, Direction.Up);
                    }
                    else if (y == 0)
                    {
                        if (x - 1 > 0)
                        {
                            GetAround(x - 1, y, Direction.Left);
                        }
                        GetAround(x - 1, y, Direction.Down);
                    }
                    else if (y == 9)
                    {
                        if (x - 1 > 0)
                        {
                            GetAround(x - 1, y, Direction.Left);
                        }
                        GetAround(x - 1, y, Direction.Up);
                    }
                    else
                    {
                        if (x - 1 > 0)
                        {
                            GetAround(x - 1, y, Direction.Left);
                        }
                        GetAround(x - 1, y, Direction.Up);
                        GetAround(x - 1, y, Direction.Down);
                    } return;
                }
                else return;
            }
            else if (dirction == Direction.Right)
            {
                for (int i = 0; i < list.Count; i++)
                {
                    if (x + 1 == list.X && y == list.Y && starsColor[x + 1, y] == list.Color)
                    {
                        return;
                    }
                }
                if (starsColor[x, y] == starsColor[x + 1, y])
                {
                    list.Add(new StarInfo(x + 1, y, starsColor[x + 1, y], 1));

                    starsFlag[x + 1, y] = 1;
                    if (x == 0 && y == 0)
                    {
                        GetAround(x + 1, y, Direction.Right);
                        GetAround(x + 1, y, Direction.Down);
                    }
                    else if (x == 9 && y == 0)
                    {
                        GetAround(x + 1, y, Direction.Down);
                    }
                    else if (x == 0 && y == 9)
                    {

                        GetAround(x + 1, y, Direction.Right);
                        GetAround(x + 1, y, Direction.Up);
                    }
                    else if (x == 9 && y == 9)
                    {
                        GetAround(x + 1, y, Direction.Up);
                    }
                    else if (x == 0)
                    {
                        GetAround(x + 1, y, Direction.Up);
                        GetAround(x + 1, y, Direction.Right);
                        GetAround(x + 1, y, Direction.Down);
                    }
                    else if (x == 9)
                    {
                        GetAround(x + 1, y, Direction.Down);
                        GetAround(x + 1, y, Direction.Up);
                    }
                    else if (y == 0)
                    {
                        if (x + 1 < 9)
                        {
                            GetAround(x + 1, y, Direction.Right);
                        }

                        GetAround(x + 1, y, Direction.Down);
                    }
                    else if (y == 9)
                    {
                        if (x + 1 < 9)
                        {
                            GetAround(x + 1, y, Direction.Right);
                        }
                        GetAround(x + 1, y, Direction.Up);
                    }
                    else
                    {
                        GetAround(x + 1, y, Direction.Down);
                        GetAround(x + 1, y, Direction.Up);
                        if (x + 1 < 9)
                        {
                            GetAround(x + 1, y, Direction.Right);
                        }
                    } return;
                }
                else return;
            }
            if (flag == 1)
            {
                DrawBox(list);
            }

        }


案例源码下载: 仿照苹果手机上的消除之星.rar (1.21 MB, 下载次数: 203, 售价: 1 金钱)


感谢xzh1995的开发。

作者: aolongxue    时间: 2014-8-21 17:29
感觉 很棒的样子
作者: cjkall    时间: 2014-8-21 18:32
很棒  不错
作者: 569794982    时间: 2014-8-21 23:54
  牛人啊 不错
作者: undead    时间: 2014-8-26 17:05
来赞一个.
作者: zoney88    时间: 2015-2-13 20:34
赞+10086+10086
作者: liushiying18    时间: 2015-3-1 18:56
下载看看
作者: xsy131    时间: 2015-3-5 12:05
下载看看
作者: 376389554    时间: 2016-8-12 15:55
金币不住``````````````````
作者: tayjiang    时间: 2017-5-8 10:51
感觉 很棒的样子
作者: wpf    时间: 2017-5-16 16:34
反反复复付付付付付付付付付付付付付付付付付付付付付付
作者: ririkaka    时间: 2017-5-17 09:59
感谢分享。。。
作者: alphakuo    时间: 2020-3-20 23:05
好东西,学习学习
作者: Star-Orange    时间: 2020-4-30 08:37
很棒的样子
作者: 喵喵喵?    时间: 2021-11-22 00:45
谢谢 分享




欢迎光临 CSkin博客 (http://bbs.cskin.net/) Powered by Discuz! X3.2