You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#编写的石头剪刀布游戏中实现电脑出拳随机化

电脑随机出拳实现原理
  • 你用到的C#语言内置了Random类用于生成伪随机数,这类伪随机生成器的底层逻辑是:以系统当前时间戳作为初始种子,输入固定的数学迭代算法,输出统计上均匀分布的整数序列,只要种子不重复,生成的数值序列就不会重复,足够满足石头剪刀布这类普通场景的随机需求。
  • 你的场景只需要从1、2、3三个值中随机取一个,分别对应电脑出石头、布、剪刀即可。要注意Random的Next(min, max)方法的取值范围是左闭右开,max值不会被包含在结果里,所以要生成1~3的整数,需要调用Next(1, 4)。
现有代码问题说明

你现在的代码把电脑出三种拳的判定逻辑全部硬编码按顺序执行,每次运行会同时触发三次胜负判定,分数计算也会重复出错,拿到随机的电脑出拳值后,只需要执行对应出拳的那一段判定逻辑即可。

修正后的完整代码
class Program
{
    public static void Main(string[] args)
    {
        Console.WriteLine("你好!我是电脑,你叫什么名字?");
        Console.Write("请在这里输入你的名字:");
        string name = Console.ReadLine();
        Console.WriteLine($"你好{name},很高兴认识你!");
        Console.WriteLine();
        Console.WriteLine("我们来玩石头剪刀布吧");
        Console.WriteLine();
        Console.Write("石头...剪刀...布...出!请输入1、2或3(1=石头,2=布,3=剪刀):");
        Console.WriteLine();
        
        string userInput = Console.ReadLine();
        // 简单校验用户输入合法性
        if (!int.TryParse(userInput, out int userChoice) || userChoice < 1 || userChoice > 3)
        {
            Console.WriteLine("输入不合法,请输入1、2或3");
            Console.Read();
            return;
        }

        // 生成电脑随机出拳
        Random random = new Random();
        int computerChoice = random.Next(1, 4);

        int userPoints = 0;
        int computerPoints = 0;

        // 输出双方选择
        string[] choiceNames = { "", "石头", "布", "剪刀" };
        Console.WriteLine($"用户出了{choiceNames[userChoice]}");
        Console.WriteLine($"电脑出了{choiceNames[computerChoice]}");

        // 胜负判定
        if (userChoice == computerChoice)
        {
            Console.WriteLine("平局!");
        }
        else if ((userChoice == 1 && computerChoice == 3) || 
                 (userChoice == 2 && computerChoice == 1) || 
                 (userChoice == 3 && computerChoice == 2))
        {
            Console.WriteLine("用户获胜!");
            userPoints++;
        }
        else
        {
            Console.WriteLine("电脑获胜!");
            computerPoints++;
        }

        Console.WriteLine($"用户积分:{userPoints} - 电脑积分:{computerPoints}");
        Console.Read();
    }
}

内容的提问来源于stack exchange,提问作者ponar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 03:54:04