C# 实现刘谦春晚魔术

时间:2024-02-16 16:48:28
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]; } }