C# 实现刘谦春晚魔术

    internal class Program
    {
        static List<string> list=new List<string>() { "A","B","C","D","A","B","C","D" };
        static string hiddenEle1 = string.Empty;//第一次藏起来的牌
        static void Main(string[] args)
        {
            Console.WriteLine($"初始牌组:{string.Join(',',list)}");
            //第一趴 名字有几个字
            Console.WriteLine("请输入你的名字有几个字");
            var nameCount = Convert.ToInt32(Console.ReadLine());
            Fun1(nameCount);
            Console.WriteLine($"变化之后:{string.Join(',', list)}");
            //第二趴 拿掉三张牌
            Fun2(3);
            Console.WriteLine($"插入三张牌后:{string.Join(',', list)}");
            //第三趴 把最上面一张牌藏起来
            Fun3();
            Console.WriteLine($"藏起来第一张牌后:{string.Join(',', list)}");
            //第四趴南方人北方人
            Console.WriteLine("北方-1 南方-2 不南不北-3,请输入对应数字");
            var directCount=Convert.ToInt32(Console.ReadLine());
            Fun2(directCount);
            Console.WriteLine($"南北方人后:{string.Join(',', list)}");
            //第五趴 男女生
            Console.WriteLine("男-1 女-2,请输入对应数字");
            var sexCount = Convert.ToInt32(Console.ReadLine());
            Fun4(sexCount);
            Console.WriteLine($"男女生后:{string.Join(',', list)}");
            //第六趴 见证奇迹的时刻
            Fun5();
            Console.WriteLine($"见证奇迹后:{string.Join(',', list)}");
            //第七趴 好运留下来烦恼丢出去
            Console.WriteLine("开始好运留下了 烦恼丢出去");
            var hiddenEle2 = Fun6(sexCount);

            Console.WriteLine($"牌1:{hiddenEle1} 牌2:{hiddenEle2}");
        }
        private static void Fun1(int nameCount)
        {
            if (nameCount >= list.Count)
            {
                // 如果 nameCount 大于或等于列表长度,则不需要进行操作
                return;
            }

            for (int i = 0; i < nameCount; i++)
            {
                string element = list[0];  // 获取第0个元素
                list.RemoveAt(0);          // 移除第0个元素
                list.Add(element);         // 将第0个元素添加到最后
            }
        }
        private static void Fun2(int forCount)
        {
            //被删除掉的三张牌
            var removeElement = new List<string>();
            for (int i = 0; i < forCount; i++)
            {
                removeElement.Add(list[0]);
                list.RemoveAt(0);
            }

            //把拿到的三张牌插到中间
            var random = new Random();
            int insertIndex = random.Next(1, list.Count - 1); // 生成一个介于第一个和倒数第二个位置之间的随机插入位置

            for (int i = removeElement.Count - 1; i >= 0; i--)
            {
                list.Insert(insertIndex, removeElement[i]);
            }
        }
        private static void Fun3()
        {
            //把第一张牌藏起来
            hiddenEle1 = list[0];
            list.RemoveAt(0);
        }

        private static void Fun4(int count)
        {
            for (int i = 0; i < count; i++)
            {
                list.RemoveAt(0);
            }
        }

        private static void Fun5()
        {
            for (int i = 0; i < 7; i++)
            {
                string element = list[0];
                list.RemoveAt(0);
                list.Add(element);
            }
        }

        private static string Fun6(int sexCount)
        {
            int forCount = 0;
            if (sexCount == 1) forCount = 5;//男生要5次
            else forCount = 4;
            for (int i = 0; i < forCount; i++)
            {
                // 把第一张牌放到数组最后面 (好运留下来)
                string element = list[0];
                list.RemoveAt(0);
                list.Add(element);

                //烦恼丢出去
                list.RemoveAt(0);
            }
            return list[0];
        }
    }
posted @ 2024-02-16 15:23  柴油飞机  阅读(2209)  评论(4编辑  收藏  举报