2017-02-25 5 views
1

텔넷 서버에서 실행되는 Rock, Paper, Scissors 프로그램을 만들려고합니다. 그것은 "바위", "종이"또는 "가위"라는 단어를 입력하는 것을 허용하지 않습니다.Node.js : telnet "Rock, Paper, Scissors"프로그램이 작동하지 않습니다.

  1. 첫 번째 CPUhand는 정의되지 않은 것으로 표시되며 내 if 문의 옵션 중 하나를 설정하지 않습니다.
  2. 둘째, 명령 프롬프트에서 단일 문자를 입력 할 때마다 "잘못된, 다시 시도하십시오!"라는 메시지가 나타납니다. 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"; 
 
     } 
 
    
 
\t connection.write("Enter: Rock, Paper, or Scissors!\r\n"); 
 
     
 
\t connection.on('data', function(chunk) { //collect data from user 
 
\t \t 
 
\t \t let USERhand = chunk.toString(); 
 
\t \t 
 
\t \t if(CPUhand === "Rock" && USERhand === "Scissors" || USERhand === "Rock" && CPUhand === "Scissors"){ 
 
\t \t \t connection.write("Rock beats Scissors!\r\n"); 
 
\t \t } 
 
\t \t else if(CPUhand === "Paper" && USERhand === "Rock" || USERhand === "Paper" && CPUhand === "Rock"){ 
 
\t \t \t connection.write("Paper beats Rock!\r\n"); 
 
\t \t } 
 
\t \t else if(CPUhand === "Scissors" && USERhand === "Paper" || USERhand === "Scissors" && CPUhand === "Paper"){ 
 
\t \t \t connection.write("Scissors beats Paper!\r\n"); 
 
\t \t } 
 
     else if(CPUhand === USERhand){ 
 
      connection.write("Draw!\r\n"); 
 
     } 
 
\t \t else{ 
 
\t \t \t connection.write("Invalid! Try Again! \r\n"); 
 
\t \t } \t \t 
 
\t \t 
 
\t }); 
 

 
}); 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; 
 
    }

+4

'CSTE 연구진 ('데이터') '트리거 될 때마다 프로그램은 모든 데이터를 수신하며, 사용자가 무언가를 입력하면 일반적으로 한 번에 하나의 문자가됩니다. 개행 문자를받을 때까지 변수에 데이터를 수집해야합니다. 다른 문제는'='대신에'=='를 사용하여 값을 할당하려고하기 때문입니다. – JJJ

답변

-1

1) 블록 오타 :

if(randomNum == 1){ CPUhand == "Rock"; } else ...

는 같아야

사용자 입력에 if(randomNum == 1){ CPUhand = "Rock"; } else ...

2) 당신은 또한이 줄 바꿈 기호 :

let USERhand = chunk.toString();

은 교체 :

let USERhand = chunk.toString().trim();

관련 문제