简单写了一个抽卡代码,没有修饰,用起来其实还挺难受的。抽10连的时候按0可以跳过抽取过程。
cs
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;
}
}
}
}
}
输出结果:
cs
------------------------------------------
|------ 单抽按1 ------------|
|------ 十连按2 ------------|
|------ 退出按0 ------------|
------------------------------------------
2
没抽中
0
没抽中
没抽中
没抽中
没抽中
没抽中
没抽中
没抽中
没抽中
***抽中了***
已经抽了100