如何在 C# 中的石头、纸、剪刀游戏中随机化数组中的变量? [复制]

Posted

技术标签:

【中文标题】如何在 C# 中的石头、纸、剪刀游戏中随机化数组中的变量? [复制]【英文标题】:How to randomize variables from arrays in a rock, paper, scissors game in C#? [duplicate] 【发布时间】:2020-05-12 10:38:54 【问题描述】:

我正在做一个石头、纸、剪刀的游戏。我正在对三个变量使用一个数组,并尝试将结果随机化并将随机字符串与用户输入进行比较。我用随机函数尝试了很多方法,代码中的一种对我来说最有意义,但它不起作用。我试图使这段代码尽可能简洁。我见过其他创建这个游戏的方法,但它们对我来说似乎效率低下。我相信坚持使用数组将使我的代码缩短并运行得更快。请帮助我并指导我正确的方向,谢谢。

 using System;

namespace ConsoleApp1



    class MyArray
    




        static void Main(string[] args)
        

            var array = new string[]  "rock", "paper", "scissors" ;
            var array = new Random();


            Console.WriteLine("Rock, paper, or scissors?");
            string rps = Console.ReadLine();

            switch (rps)
            
                case "Rock":
                //??
                    break;
                case "Paper":
                //??
                    break;
                case "Scissors":
                //??
                    break;
            

        
        

【问题讨论】:

这能回答你的问题吗? Pick Random String From Array 看看enums 你具体要问什么? 【参考方案1】:

在 C# 中,我们使用 System.Random 类生成一个随机值,您可以使用该值从数组或case 逻辑中进行选择。 您要使用的是.Next(int) 方法来获取要从数组中选择的索引。

在 rand 上查看我的文档:https://docs.microsoft.com/en-us/dotnet/api/system.random?view=netframework-4.8

一旦有了ai响应值,我们就可以使用简单的比较逻辑,打印出结果。

using System;

namespace ConsoleApp1

    class MyArray
    
        static void Main(string[] args)
        

            var array = new string[]  "rock", "paper", "scissors" ;
            var rand = new Random();
            Console.WriteLine("Rock, paper, or scissors?");
            string rps = Console.ReadLine().ToLower().Trim();   // simple sanitation

            var aiResponse = array[rand.Next(array.Length)]; // this is the PC's response
            Console.WriteLine(" PC plays: 0", aiResponse);

            // Now compare input to ai
            if (rps == aiResponse)
                Console.WriteLine("Draw!!!");
            else
            
                bool win = false;
                switch (rps.ToLower())
                
                    case "rock":
                        win = aiResponse == "scissors";
                        break;
                    case "paper":
                        win = aiResponse == "rock";
                        break;
                    case "scissors":
                        win = aiResponse == "paper";
                        break;
                    default:
                        throw new ApplicationException("invalid input, expected: rock, paper or scissors");
                

                if (win)
                    Console.WriteLine("You win!");
                else
                    Console.WriteLine("You lose!");
            
        
    

【讨论】:

您好,感谢您的回答。所以我很困惑你所说的有一个人工智能响应值是什么意思。我必须为其分配一个变量吗?当我输入这段代码时,它给了我一个错误,即 aiResponse 在上下文中没有意义。谢谢 您的代码无法编译。 对不起@JimmyLimmy,我已经更新了代码示例(在移动视图中编写代码有时有点棘手)。我假设您希望用户与计算机程序 AI 对战。所以人工智能的反应是计算机选择与用户对战

以上是关于如何在 C# 中的石头、纸、剪刀游戏中随机化数组中的变量? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本游戏之:剪刀石头布

MATLAB 中的石头、纸、剪刀

Node.js:telnet“石头、纸、剪刀”程序不工作

Java自制人机小游戏——————————剪刀石头布

python小游戏(剪刀石头布)

python小游戏(剪刀石头布)