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-21 10:27  期待.Net  阅读(3)  评论(0编辑  收藏  举报