首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >每次我按下玩家选择的数字时,它都会重复"computer chose __“,并且不显示结果。我在这里做错了什么?

每次我按下玩家选择的数字时,它都会重复"computer chose __“,并且不显示结果。我在这里做错了什么?
EN

Stack Overflow用户
提问于 2017-04-13 21:51:54
回答 2查看 43关注 0票数 1

/*简单的石头剪刀游戏,询问用户是否想玩,显示计算机选择,并显示结果(像法官一样),没有高级技术。如果用户同意再次玩游戏,我还需要让游戏再次循环。一般来说,我是一个非常非常新的编程新手,只是很难掌握基础知识。*/

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using System;

class RockPaperScissors
{
    public static void Main(string[] args)
    {
        Console.Write("Do you want to play rock, paper, scissors? ");
        string playerChoice = Console.ReadLine();
        playerChoice = playerChoice.ToUpper();


        Random r = new Random();
        int computerChoice = r.Next(1, 4);

        do
        {

            if (computerChoice == 1)
            {
                Console.WriteLine("Computer chose Rock");
                Console.Write("Player choice: type 1, 2, or 3 (1=rock 2=paper 
                3=scissors): ");
                Console.ReadKey();

            //beginning of switch
            switch (playerChoice)
                {
                    case "1":
                        Console.WriteLine("/nIt is a tie!");
                        break;
                    case "2":
                        Console.WriteLine("/nYou win! Paper covers rock!");
                        break;
                    case "3":
                        Console.WriteLine("/nComputer wins! Rock crushes 
                        scissors!");
                        break;
                }//end of switch
            }

            else if (computerChoice == 2)
            {
                Console.WriteLine("Computer chose paper");
                Console.Write("Player choice: type 1, 2, or 3 (1=rock 2=paper 
                3=scissors): ");
                Console.ReadKey();

            //beginning of switch
            switch (playerChoice)
                {
                    case "1":
                        Console.WriteLine("/nComputer wins! Paper covers 
                        rock!");
                        break;
                    case "2":
                        Console.WriteLine("/nIt is a tie!");
                        break;
                    case "3":
                        Console.WriteLine("/nYou win! Scissors cuts paper!");
                        break;
                } //end of switch
            }

            else if (computerChoice == 3)
            {
                Console.WriteLine("Computer chose scissors");
                Console.Write("Player choice: type 1, 2, or 3 (1=rock 2=paper 
                3=scissors): ");
                Console.ReadKey();

            //beginning of switch
            switch (playerChoice)
                {
                    case "1":
                        Console.WriteLine("/nYou win! Rock crushes scissors!");
                        break;
                    case "2":
                        Console.WriteLine("/nComputer wins! Scissors cuts 
                        paper!");
                        break;
                    case "3":
                        Console.WriteLine("/nIt is a tie!");
                        break;
                } //end of switch

            }

        } while (playerChoice == "YES");
    }
}
EN

回答 2

Stack Overflow用户

发布于 2017-04-13 22:33:47

这是让它循环的一种方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
string playerChoice = "";
Console.Write("Do you want to play rock, paper, scissors? ");
playerChoice = Console.ReadLine();

while(playerChoice.ToUpper().Trim() == "YES")
{
   Random r = new Random();
   int computerChoice = r.Next(1, 4);

   // Put the rest of the code to figure results of game here



   Console.Write("Do you want to play rock, paper, scissors? ");
   playerChoice = Console.ReadLine();
} 
票数 0
EN

Stack Overflow用户

发布于 2017-04-14 18:18:26

你的程序中有几个问题,我会试着和你一起解决。

  1. 你问玩家是否想玩,如果玩家输入"yes",你就进入一个do/while循环。你的程序将永远停留在do/while循环中,因为你永远不会问玩家是否想再玩一次,所以答案总是“是”。
  2. 你正在重用你的playerChoice变量,无论是玩家想玩游戏还是游戏开始后他们选择了布、石头或剪刀。这应该是两个应该是不同的变量。
  3. 你永远不会存储玩家对纸,石头,剪刀选择的结果。这是问题#2的组合,因为您在switch语句中将"YES“与1、2或3进行比较。

要解决问题#1,您应该重新确定玩家是否希望在循环逻辑结束时再次玩游戏,以便从用户获得新的YES/NO输入。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   Console.Write("Do you want to play rock, paper, scissors? ");
   playerChoice = Console.ReadLine().ToUpper();
   } while (playerChoice == "YES");
 }
}

要解决问题#2和#3,您应该使用一个新的变量来保存用户对布、石头、剪刀的选择。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Console.Write("Do you want to play rock, paper, scissors? ");
string playerChoice = Console.ReadLine();
playerChoice = playerChoice.ToUpper();


Random r = new Random();
int computerChoice = r.Next(1, 4);

//new variable for holding the player's input for rock/paper/scissor
string playerThrowChoice;
do
{
    if (computerChoice == 1)
    {
      Console.WriteLine("Computer chose Rock");
      Console.Write("Player choice: type 1, 2, or 3 (1=rock 2=paper 3=scissors): ");
      playerThrowChoice = Console.ReadKey();

     //beginning of switch
     //notice we are using our new variable here
     switch (playerThrowChoice )
     {
         case "1":
             Console.WriteLine("/nIt is a tie!");
             break;
         case "2":
             Console.WriteLine("/nYou win! Paper covers rock!");
             break;
         case "3":
             Console.WriteLine("/nComputer wins! Rock crushes scissors!");
             break;
         }//end of switch
 }

/// ....the rest of your logic
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43402295

复制
相关文章
关于go的只读管道只写管道以及单向管道的理解
上面的例子,writeChan只能对ch变量进行写操作,readChan只能对ch变量进行读操作,这样造成很多同学对管道理解就有了只读和只写管道了,其实管道都是双向的,默认双向可读写,只是管道在函数参数传递时可以使用操作符限制管道的读写,就如上面的例子。
公众号-利志分享
2022/04/25
1K0
Transformers 如何模仿大脑的某些部分
来源:ScienceAI 本文约2500字,建议阅读7分钟 本文将演示如何通过阈值调优来提高模型的性能。 了解大脑如何组织和访问空间信息「我们在哪里」,「拐角处有什么」,「如何到达那里」,这仍然是一项艰巨的挑战。该过程涉及从数百亿个神经元中调用整个记忆网络和存储的空间数据,每个神经元都连接到数千个其他神经元。 神经科学家已经确定了关键元素,例如网格细胞、映射位置的神经元。但更深入将被证明是棘手的:并不是说研究人员可以移除或研究人类灰质的切片来观察基于位置的图像、声音和气味记忆是如何流动并相互连接的。 人工
数据派THU
2022/10/09
6340
Transformers 如何模仿大脑的某些部分
[译]Rxjs&Angular-退订可观察对象的n种方式
在angular项目中我们不可避免的要使用RxJS可观察对象(Observables)来进行订阅(Subscribe)和退订(Unsubscribe)操作;
laggage
2021/02/05
1.2K0
[译]Rxjs&Angular-退订可观察对象的n种方式
【响应式编程的思维艺术】 (5)Angular中Rxjs的应用示例
尽管看起来Http请求的返回结果是一个可观测对象,但是它却没有map方法,当需要对http请求返回的可观测对象进行操作时,可以使用pipe操作符来实现:
大史不说话
2019/02/21
6.7K0
【响应式编程的思维艺术】 (5)Angular中Rxjs的应用示例
TOP中只查看某个或某些进程的信息
例:php-fpm的信息 (1)得到php-fpm进程的pid [root@test ~]# pidof php-fpm 29618 29617 29616 29505 29504 29503 (2)top指定查看PID [root@test ~]# top -p 29618 top - 19:07:34 up 75 days, 10:18, 3 users, load average: 0.00, 0.00, 0.00 Tasks: 1 total, 0 running, 1 sleepi
joshua317
2018/04/16
1.1K0
Angular快速学习笔记(4) -- Observable与RxJS
介绍RxJS前,先介绍Observable 可观察对象(Observable) 可观察对象支持在应用中的发布者和订阅者之间传递消息。 可观察对象可以发送多个任意类型的值 —— 字面量、消息、事件。 基本用法和词汇 作为发布者,你创建一个 Observable 的实例,其中定义了一个订阅者(subscriber)函数。 当有消费者调用 subscribe() 方法时,这个函数就会执行。 订阅者函数用于定义“如何获取或生成那些要发布的值或消息”。 要执行所创建的可观察对象,并开始从中接收通知,你就要调用它的 s
JadePeng
2018/05/28
5.3K0
[译] 调试 RxJS 第2部分: 日志篇
原文链接: https://blog.angularindepth.com/debugging-rxjs-part-2-logging-56904459f144 本文为 RxJS 中文社区 翻译文章
用户1687375
2018/06/08
1.2K0
[译] 调试 RxJS 第1部分: 工具篇
原文链接: https://blog.angularindepth.com/debugging-rxjs-4f0340286dd3 本文为 RxJS 中文社区 翻译文章,如需转载,请注明出处,谢谢合作
用户1687375
2018/06/08
1.3K0
浅谈 Angular 项目实战
我不是 Angular 的布道者,但如今自称 Angular 派,使用 Angular 做项目让我有一种兴奋感。目前的三大主流前端框架都研究过,博客中也有三者的相关教程,最早接触的是 React,但是并没有实际的项目经验,只做过一些 Demo 。使用 Vue 做过一个比较复杂的移动端大数据项目,技术栈采用 Framework7 + Vue + Vuex,整体效果还是满意的。
叙帝利
2018/07/31
4.6K0
Angular 16 正式版发布
在之前的Angularv15中,Angular团队通过将独立API从开发者预览版升级至稳定版,在Angular的简易性和开发者体验方面达到了一个重要的里程碑。如今,Angular将继续这一改进的势头,发布了自Angular最初推出以来最大的一次版本更新;在Reactivity、服务器端渲染和工具方面取得了巨大的飞跃。
xiangzhihong
2023/05/07
2.6K0
Angular 16 正式版发布
如何使用 RxJS 更优雅地进行定时请求
实际的业务场景是这样的:前端需要轮循请求后端接口获取文件处理进度,并在前端用进度条展示。如下方所示:
叙帝利
2019/06/03
2.2K0
Angular v16 来了!
六个月前,我们将独立 API从开发人员预览中升级,从而在 Angular 的简单性和开发人员体验方面达到了一个重要的里程碑。今天,我们很高兴地宣布,我们将继续 Angular Momentum,推出自 Angular 首次推出以来最大的版本;在反应性、服务器端渲染和工具方面取得巨大飞跃。所有这一切都伴随着跨功能请求的数十项生活质量改进,在 GitHub 上获得了 2,500 多个赞!
gemron的空间
2023/05/09
2.6K0
用于物联网的大数据参考架构
工业物联网(IIOT,Industrial Internet of Things)正成为社会中的技术趋势与核心业务。IIOT 赋能诸如市政(Municipalities)、工业制造、公用事业、电信,以及保险等各类实体,以解决关键客户与运营的挑战。当前,技术创新在大数据、预测分析和云计算等领域的发展,使得人们可以大规模地集成与分析大量的设备数据,同时对这些数据执行一系列分析以及业务处理流程。
StoneDemo
2018/06/01
1.7K0
Rafy 升级:支持只查询实体的部分属性
Rafy 3.80.4005 添加了新功能:支持只查询部分属性的方式来查询实体。 本文记录对应的设计: 需求 测试用例 设计-API 设计-实现 代码实现 接下来就是实现内部的代码。完成之后,所有单元测试通过。
用户1172223
2021/10/26
6260
ReadProcessMemory会被检测到吗?_仅完成部分readprocess如何解决
hProcess:目标进程的句柄。这个句柄必须有 PROCESS_VM_READ 标记。
全栈程序员站长
2022/11/09
7970
Linux 的命令 ls 只列出部分目录或是文件
ls 默认从小到大顺序列出 当前目录下所有的文件和目录。 现在的问题是,我只想按照这样的顺序列出指定数目的目录或是文件,那样怎么实现呢? 比如 有image目录下有10个子目录 image1 image2….image10, 我直需要列出2个目录 image1 iamge2
全栈程序员站长
2022/07/11
3.8K0
5 分钟内造个物联网 Kafka 管道
原文地址:https://dzone.com/articles/creating-an-iot-kafka-pipeline-in-under-five-minutes
未来守护者
2018/04/25
2.1K0
点击加载更多

相似问题

如何才能让RxJS可观察到的管道访问原始可观测到的排放和管道的先前排放?

10

RxJS使用混合排放物

16

rxjs可观测到角

16

rxjs -可观测到的搜索

10

可观测到的RxJS检测

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文