Nodejs를 사용하여 간단한 가위바위보 게임을 구현하는 방법
이 글에서는 Node.js를 사용하여 간단한 가위바위보 게임을 만드는 방법을 소개합니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.
Node.js 모듈, 비동기, HTTP 서비스 및 기타 지식에 대한 사전 이해를 마친 후 간단한 가위바위보 게임을 해보세요! ! [추천학습: "nodejs tutorial"]
요구사항 분석
이 가위바위보 게임은 인간과 컴퓨터의 상호작용 형태로 바위(바위
)/를 무작위로 입력합니다. 가위(가위
)/종이(종이
)를 입력하고 컴퓨터도 무작위로 가위바위보/종이를 생성한 후 승패를 비교하여 결과를 출력합니다. rock
)/剪刀(scissor
)/布(paper
),然后电脑也随机生成石头/剪刀/布,然后比较输赢,输出结果。
这里有两个问题,输出我们知道,可以通过 console.log()
打印输出,那么我们怎么输入呢?然后 Node.js 又通过什么拿到我们的输入值呢?
输入是这样直接输入的:node index.js rock
,在 node
启动运行 index.js
后面直接添加参数 rock
即可。
而获取的话,Node.js 有一个全局变量 process
,它是一个进程对象,记载 Node.js 运行的一些信息,里面有一个属性 argv
,通过这个属性可以获取到输入的值:
console.log(process.argv)
初始版本
话不多说,直接上代码:
// spr.js // 石头剪刀布小游戏 // 命令行命令:node spr.js rock // argv 可以获取到命令行 node 后面输入的行为 // let playerAction = process.argv[process.argv.length - 1]; // 最后面的输入 let playerAction = process.argv[2]; // 也可以通过下标直接获取 console.log('你出了', playerAction) if (playerAction != 'rock' && playerAction != 'paper' && playerAction != 'scissor') { console.log('请输入rock或paper或scissor') } else { // 电脑通过随机数生成石头剪刀布 let computerAction; let random = Math.random() * 3; if (random < 1) { console.log('电脑出了石头') computerAction = 'rock' } else if (random > 2) { console.log('电脑出了剪刀') computerAction = 'scissor' } else { console.log('电脑出了布') computerAction = 'paper' } // 比较分出输赢 if (computerAction === playerAction) { console.log('平局') } else if ( (computerAction == 'rock' && playerAction == 'scissor') || (computerAction == 'scissor' && playerAction == 'paper') || (computerAction == 'paper' && playerAction == 'rock') ) { console.log('你输了') } else { console.log('你赢了') } }
那么运行玩一下吧:
node spr.js rock node spr.js scissor node spr.js paper
模块封装
在 《浅谈Nodejs中的模块规范》 中有学习到 Node.js 的 CommonJS 模块规范,那么现在来把这个游戏封装起来,然后再实现一个新需求:电脑也是有情绪的,当我们赢的次数超过3次时,电脑的情绪就上来了,就不玩了。
这里新建了一个 game.js
文件,通过 module.exports
将游戏模块给出去:
// game.js module.exports = function (playerAction) { if (['rock', 'scissor', 'paper'].indexOf(playerAction) == -1) { throw new Error('请输入rock或paper或scissor'); } // 电脑通过随机数生成石头剪刀布 var computerAction; var random = Math.random() * 3 if (random < 1) { computerAction = 'rock' console.log('电脑出了石头') } else if (random > 2) { computerAction = 'scissor' console.log('电脑出了剪刀') } else { computerAction = 'paper' console.log('电脑出了布') } // 比较分出输赢 if (computerAction === playerAction) { console.log('平局') return 0; } else if ( (computerAction == 'rock' && playerAction == 'scissor') || (computerAction == 'scissor' && playerAction == 'paper') || (computerAction == 'paper' && playerAction == 'rock') ) { console.log('你输了') return -1; } else { console.log('你赢了') return 1; } }
新建 index.js
,通过 require
加载 game.js
模块:
// argv 可以获取到命令行 node 后面输入的行为 var playerAction = process.argv[process.argv.length - 1]; console.log(playerAction); // 通过 require 引入石头剪刀布游戏模块 const game = require('./game.js') const result = game(playerAction); console.log(result)
运行起来看看:
现在要来计算我们赢的次数,那需要一个方法让我们可以持续输入:
// 获取进程的标准输入 process.stdin.on('data', (buffer) => { // 回调的是 buffer,需要处理成 string const action = buffer.toString().trim(); console.log(action) })
终端运行命令:node index.js
,可以看到是可以持续输入的。
计算赢的次数,超过三次后电脑不想玩了,然后通过 process.exit()
console.log()
를 통해 출력이 가능하다는 것을 알고 있는데 어떻게 입력하나요? 그렇다면 Node.js는 어떻게 입력값을 얻나요? 입력은
node index.js rock
과 같이 직접 입력됩니다. node
에서 index.js
실행을 시작하고 매개변수를 추가합니다. > 락 직후
가 됩니다.
얻고 싶다면 Node.js에는 Node.js의 작업에 대한 일부 정보를 기록하는 프로세스 개체인 전역 변수 process
가 있습니다. 이 변수에는 argv 속성이 있습니다.
다음 속성을 통해 입력 값을 얻을 수 있습니다:
const game = require('./game.js') var winCount = 0; // 获取进程的标准输入 process.stdin.on('data', (buffer) => { // 回调的是 buffer,需要处理成 string const action = buffer.toString().trim(); const result = game(action); if (result == 1) { winCount++ if (winCount == 3) { console.log('我不玩儿了!哼!'); process.exit(); } } })
초기 버전
말할 것도 별로 없고, 바로 코드로 가보겠습니다:
rrreee그런 다음 실행하고 재생:rrreee
🎜모듈 캡슐화🎜🎜🎜 " Nodejs의 모듈 사양에 대한 간략한 논의 🎜》 우리는 Node.js의 CommonJS 모듈 사양을 배웠으므로 이제 이 게임을 캡슐화하고 새로운 요구 사항을 구현해 보겠습니다. 컴퓨터에도 감정이 있습니다. 3번 이상 승리하면 컴퓨터의 감정도 있습니다. 감정이 바뀌면 더 이상 놀지 않을 것입니다. 🎜🎜여기에서 새 game.js
파일이 생성되고 module.exports
를 통해 게임 모듈이 내보내집니다. 🎜rrreee🎜새 index.js, <code>require
를 통해 game.js
모듈을 로드합니다: 🎜rrreee🎜실행하고 다음을 확인하세요: 🎜🎜
🎜🎜이제 승리 횟수를 계산해야 하며, 계속해서 입력할 수 있는 메소드: 🎜rrreee 🎜터미널에서 node index.js
명령을 실행하면 계속해서 입력할 수 있는 것을 확인할 수 있습니다. 🎜🎜
🎜🎜계산 승리 횟수는 세 번 이상 지나면 컴퓨터가 더 이상 플레이를 원하지 않으며 process.exit()
를 통해 프로세스를 종료합니다. 🎜rrreee🎜🎜🎜🎜보시다시피, 이후 잠시 컴퓨터와 함께 당신이 나에게 옵니다. 그런 다음 컴퓨터를 세 번 격파한 후 조건이 충족되고 프로세스가 종료됩니다. 🎜🎜자, 여기에서는 간단한 가위바위보 게임을 구현했습니다. 다음 글에서는 가위바위보 게임을 웹 버전으로 변형해 보겠습니다. 🎜🎜🎜코드 주소: https://github.com/V-vincent/node-introduction🎜🎜🎜더 많은 프로그래밍 관련 지식을 보려면 🎜프로그래밍 비디오🎜를 방문하세요! ! 🎜
위 내용은 Nodejs를 사용하여 간단한 가위바위보 게임을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Node.js와 Tomcat의 주요 차이점은 다음과 같습니다. 런타임: Node.js는 JavaScript 런타임을 기반으로 하는 반면 Tomcat은 Java Servlet 컨테이너입니다. I/O 모델: Node.js는 비동기식 비차단 모델을 사용하는 반면 Tomcat은 동기식 차단 모델을 사용합니다. 동시성 처리: Node.js는 이벤트 루프를 통해 동시성을 처리하는 반면 Tomcat은 스레드 풀을 사용합니다. 애플리케이션 시나리오: Node.js는 실시간, 데이터 집약적, 동시성 애플리케이션에 적합하고 Tomcat은 기존 Java 웹 애플리케이션에 적합합니다.

Node.js는 서버측 JavaScript 런타임인 반면, Vue.js는 대화형 사용자 인터페이스를 생성하기 위한 클라이언트측 JavaScript 프레임워크입니다. Node.js는 백엔드 서비스 API 개발, 데이터 처리 등 서버 측 개발에 사용되고, Vue.js는 단일 페이지 애플리케이션, 반응형 사용자 인터페이스 등 클라이언트 측 개발에 사용됩니다.

Node.js는 고성능, 확장성, 크로스 플랫폼 지원, 풍부한 생태계, 개발 용이성 등의 기능을 제공하므로 백엔드 프레임워크로 사용할 수 있습니다.

예, Node.js는 백엔드 개발 언어입니다. 서버 측 비즈니스 로직 처리, 데이터베이스 연결 관리, API 제공 등 백엔드 개발에 사용됩니다.

Node.js 설치 디렉터리에는 npm과 npm.cmd라는 두 가지 npm 관련 파일이 있습니다. 차이점은 다음과 같습니다. 확장자가 다릅니다. npm은 실행 파일이고 npm.cmd는 명령 창 바로 가기입니다. Windows 사용자: npm.cmd는 명령 프롬프트에서 사용할 수 있으며, npm은 명령줄에서만 실행할 수 있습니다. 호환성: npm.cmd는 Windows 시스템에만 해당되며 npm은 크로스 플랫폼에서 사용할 수 있습니다. 사용 권장사항: Windows 사용자는 npm.cmd를 사용하고, 기타 운영 체제는 npm을 사용합니다.

Node.js에는 다음과 같은 전역 변수가 존재합니다. 전역 개체: 전역 핵심 모듈: 프로세스, 콘솔, 필수 런타임 환경 변수: __dirname, __filename, __line, __column 상수: undefine, null, NaN, Infinity, -Infinity

Node.js와 Java의 주요 차이점은 디자인과 기능입니다. 이벤트 중심 대 스레드 중심: Node.js는 이벤트 중심이고 Java는 스레드 중심입니다. 단일 스레드 대 다중 스레드: Node.js는 단일 스레드 이벤트 루프를 사용하고 Java는 다중 스레드 아키텍처를 사용합니다. 런타임 환경: Node.js는 V8 JavaScript 엔진에서 실행되는 반면 Java는 JVM에서 실행됩니다. 구문: Node.js는 JavaScript 구문을 사용하고 Java는 Java 구문을 사용합니다. 목적: Node.js는 I/O 집약적인 작업에 적합한 반면, Java는 대규모 엔터프라이즈 애플리케이션에 적합합니다.

Node.js와 Java는 각각 웹 개발에 장단점이 있으며 선택은 프로젝트 요구 사항에 따라 다릅니다. Node.js는 실시간 애플리케이션, 신속한 개발 및 마이크로서비스 아키텍처에 탁월한 반면, Java는 엔터프라이즈급 지원, 성능 및 보안에 탁월합니다.
