public static void Snake_ArrayList_Initialize(Snake_Info Snakeinfo, Game_Info info) //随机初始化蛇的位置
        {
            Snake_AL.Clear();                                                               //清除缓存
            info.Control_Key = Keys.Right;
            bool   flag = true;
            Random ran  = new Random();//实例一个随机

            while (flag)
            {
                X_Y_K YUAN = new X_Y_K(ran.Next(4, M_x - 4), ran.Next(4, M_y - 4), Keys.Right);
                for (int i = 0; i < Snakeinfo.Body_Long; i++)
                {
                    if (YUAN.X - i >= 0)
                    {
                        if (Coordinate_date[1, YUAN.X - i, YUAN.Y] == -1)
                        {
                            X_Y_K xyk = new X_Y_K(YUAN.X - i, YUAN.Y, Keys.Right);
                            Snake_AL.Add(xyk);
                            if (Snake_AL.Count == Snakeinfo.Body_Long)
                            {
                                flag = false;
                            }
                        }
                        else
                        {
                            Snake_AL.Clear();
                        }
                    }
                    else
                    {
                        Snake_AL.Clear();
                    }
                }
            }
        }
        public static void Snake_Co_MakeUp(Snake_Info snake)//蛇AL坐标化
        {
            X_Y_K xyz;

            for (int x = 0; x < M_x; x++)//初始化坐标
            {
                for (int y = 0; y < M_y; y++)
                {
                    Coordinate_date[2, x, y] = -1;
                }
            }
            for (int i = 0; i < Snake_AL.Count; i++)
            {
                xyz = (X_Y_K)Snake_AL[i];
                Coordinate_date[2, xyz.X, xyz.Y] = snake.Snake_ID;
            }
        }
        public static void Game_InFo_UpDate(Snake_Info snake, Game_Info info, Food_Info food, Obstacle_Info oe_indo)//游戏信息更新
        {
            X_Y_K xyz;

            xyz = (X_Y_K)Snake_AL[0];
            //bmp_id:0 dot树 1 crossbar草丛 2cross山 3around海
            //XYAround 0左上,1右上,2左下,3为右下

            if (Coordinate_date[1, xyz.X, xyz.Y] != -1) //判断是否碰到障碍物
            {
                if (Coordinate_date[1, xyz.X, xyz.Y] == (int)oe_indo.Bmp_ID[0])
                {
                    snake.PH = snake.PH - 10;
                }
                else if (Coordinate_date[1, xyz.X, xyz.Y] == (int)oe_indo.Bmp_ID[1])
                {
                    snake.PH = snake.PH - 20;
                }
                else if (Coordinate_date[1, xyz.X, xyz.Y] == (int)oe_indo.Bmp_ID[2])
                {
                    snake.PH = snake.PH - 15;
                }
                else if (Coordinate_date[1, xyz.X, xyz.Y] == (int)oe_indo.Bmp_ID[3])
                {
                    snake.PH = snake.PH - 30;
                }
            }
            if (Coordinate_date[2, xyz.X, xyz.Y] != -1)//判断是否碰到蛇身
            {
                snake.PH = snake.PH - 5;
            }
            if (Coordinate_date[3, xyz.X, xyz.Y] != -1) //判断是吃到食物
            {
                Coordinate_date[3, xyz.X, xyz.Y] = -1;
                food.Need_Add();
                info.Game_Mark++;
                snake.WaitAdd_Body++;
                snake.PH = snake.PH + 1;
            }
        }
        public static void Snake_ArrayList_Update(Snake_Info Snakeinfo)//蛇,刷新
        {
            X_Y_K xyz;
            int   x_l;
            int   y_l;
            Keys  k_l;

            while (Snakeinfo.WaitAdd_Body > 0)
            {
                xyz = (X_Y_K)Snake_AL[Snake_AL.Count - 1];
                x_l = xyz.X;
                y_l = xyz.Y;
                k_l = xyz.Key;
                if (xyz.Key == Keys.Up)
                {
                    if (xyz.Y + 1 >= M_y)
                    {
                        y_l = 0;
                    }
                    else
                    {
                        y_l++;
                    }
                }
                else if (xyz.Key == Keys.Down)
                {
                    if (xyz.Y - 1 <= 0)
                    {
                        y_l = M_y;
                    }
                    else
                    {
                        y_l--;
                    }
                }
                else if (xyz.Key == Keys.Left)
                {
                    if (xyz.X - 1 >= M_x)
                    {
                        x_l = 0;
                    }
                    else
                    {
                        x_l++;
                    }
                }
                else if (xyz.Key == Keys.Right)
                {
                    if (xyz.X - 1 <= 0)
                    {
                        x_l = M_x;
                    }
                    else
                    {
                        x_l--;
                    }
                }
                X_Y_K xyk = new X_Y_K(x_l, y_l, k_l);
                Snake_AL.Add(xyk);
                Snakeinfo.WaitAdd_Body--;
            }
            Snake_AL.Reverse();
            xyz = (X_Y_K)Snake_AL[Snake_AL.Count - 1];//xyz是映射到Snake_AL[Snake_AL.Count - 1]

            int  x = xyz.X;
            int  y = xyz.Y;
            Keys k = xyz.Key;

            if (k == Keys.Up)
            {
                if (xyz.Y <= 0)
                {
                    y = M_y - 1;
                }
                else
                {
                    y--;
                }
            }
            else if (k == Keys.Down)
            {
                if (xyz.Y + 1 >= M_y)
                {
                    y = 0;
                }
                else
                {
                    y++;
                }
            }
            else if (k == Keys.Left)
            {
                if (xyz.X <= 0)
                {
                    x = M_x - 1;
                }
                else
                {
                    x--;
                }
            }
            else if (k == Keys.Right)
            {
                if (xyz.X + 1 >= M_x)
                {
                    x = 0;
                }
                else
                {
                    x++;
                }
            }
            X_Y_K aa = new X_Y_K(x, y, k);

            Snake_AL.Add(aa);
            Snake_AL.Reverse();
            Snake_AL.RemoveAt(Snake_AL.Count - 1);
        }