Node.js:telnet“石头、纸、剪刀”程序不工作
Posted
技术标签:
【中文标题】Node.js:telnet“石头、纸、剪刀”程序不工作【英文标题】:Node.js: telnet "Rock, Paper, Scissors" Program not working 【发布时间】:2017-07-16 15:32:50 【问题描述】:所以我正在尝试创建这个 Rock, Paper, Scissors 程序以在 telnet 服务器上运行。除了它不允许我输入“岩石”、“纸”或“剪刀”等词。
-
第一个 CPUhand 显示为未定义,并且未设置为我的 if 语句中的选项之一。
第二次,每当我在命令提示符中输入单个字符时,它都会显示“无效,重试!” else 语句并跳到下一行。
是否有人能够弄清楚为什么我的 CPUhand 的 if 语句不起作用或者为什么我不能在命令提示符中输入多个字符?
Screenshot1Screenshot2
"use strict";
const
net = require('net'),
server = net.createServer(function(connection) //create server
let randomNum = randomNumber(1, 3);
let CPUhand
if(randomNum == 1)
CPUhand == "Rock";
else if(randomNum == 2)
CPUhand == "Paper";
else if(randomNum == 3)
CPUhand == "Scissors";
connection.write("Enter: Rock, Paper, or Scissors!\r\n");
connection.on('data', function(chunk) //collect data from user
let USERhand = chunk.toString();
if(CPUhand === "Rock" && USERhand === "Scissors" || USERhand === "Rock" && CPUhand === "Scissors")
connection.write("Rock beats Scissors!\r\n");
else if(CPUhand === "Paper" && USERhand === "Rock" || USERhand === "Paper" && CPUhand === "Rock")
connection.write("Paper beats Rock!\r\n");
else if(CPUhand === "Scissors" && USERhand === "Paper" || USERhand === "Scissors" && CPUhand === "Paper")
connection.write("Scissors beats Paper!\r\n");
else if(CPUhand === USERhand)
connection.write("Draw!\r\n");
else
connection.write("Invalid! Try Again! \r\n");
);
); server.listen(5432); //bind port
function randomNumber(min, max)
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
【问题讨论】:
.on('data')
会在程序接收到任何数据时触发,当您键入内容时,通常一次输入一个字符。您必须将数据收集到变量中,直到它收到换行符。另一个问题是因为您尝试使用 ==
而不是 =
分配值。
【参考方案1】:
1) 块中的错字:
if(randomNum == 1)
CPUhand == "Rock";
else ...
应该是:
if(randomNum == 1)
CPUhand = "Rock";
else ...
2) 在用户输入中,您还有换行符:
let USERhand = chunk.toString();
替换为:
let USERhand = chunk.toString().trim();
【讨论】:
以上是关于Node.js:telnet“石头、纸、剪刀”程序不工作的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C# 中的石头、纸、剪刀游戏中随机化数组中的变量? [复制]