简单写了一个抽卡代码,没有修饰,用起来其实还挺难受的。抽10连的时候按0可以跳过抽取过程。
using System;
using System.Collections.Generic;
using System.Threading;class Program
{static void Main(){//随机数初始化Random random = new Random(); // 或者不使用种子值int Length = 100; // 假设我们需要100个随机数List<int> randomNumbers = new List<int>();// 生成随机数序列//定义一个值储存概率,初始概率为0.6%double p = 0.6 * 0.01;int i=0;string judge = "1";int n=0;//延迟等待时间int time = 400;//抽卡,读取开始命令,单抽或者十连抽,两个if,然后读取概率,while (true){for (int j = 0; j < Length; j++){randomNumbers.Add(random.Next(0, 1000)); // 生成0到999之间的随机数}judge = "1";Console.WriteLine("------------------------------------------");Console.WriteLine("|------ 单抽按1 ------------|");Console.WriteLine("|------ 十连按2 ------------|");Console.WriteLine("|------ 退出按0 ------------|");Console.WriteLine("------------------------------------------");Thread.Sleep(time);//for (i=0;i<999;i++)//{// string s= Console.ReadLine();// if (s[0] != '\n')// {// n = Convert.ToInt32(s);// break;// }//}for (int j = 0; j < 999; j++){string s = Console.ReadLine();// 检查字符串是否为空(即用户是否只按下了回车键)if (!string.IsNullOrEmpty(s)){// 尝试将字符串转换为整数bool isNumber = int.TryParse(s, out n);if (isNumber){// 转换成功,跳出循环break;}else{// 转换失败,可以打印错误消息或采取其他措施Console.WriteLine("输入的不是一个有效的整数,请重新输入。");}}}if (n == 2)n = 10;if (n == 0)break;for (; i < 999; i++){if (n == 1){if (randomNumbers[i] <= p * 1000){Console.WriteLine("***抽中了***");}else{Console.WriteLine("没抽中");}Console.WriteLine("已经抽了{0}", i+1);Thread.Sleep(time);n = n - 1;}else if (n > 1){if (randomNumbers[i] <= p * 1000){Console.WriteLine("***抽中了***");}else{Console.WriteLine("没抽中");}if (judge == "0"){}else{Thread.Sleep(time);judge = Console.ReadLine();}n = n - 1;}else{break;}}}}
}
输出结果:
------------------------------------------
|------ 单抽按1 ------------|
|------ 十连按2 ------------|
|------ 退出按0 ------------|
------------------------------------------
2
没抽中
0
没抽中
没抽中
没抽中
没抽中
没抽中
没抽中
没抽中
没抽中
***抽中了***
已经抽了100