概要今日は、Node.JS を使用して、シンプルで面白いじゃんけんゲームを紹介します。 ビルドプロセス
関連APIまずは関連する API を見てみましょう。呼び出し順に API を理解すると、全体のプロセスが明確になります。 リードライン読み取り可能なストリームからデータを行ごとに読み取ります 基本的な使い方
チョークChalk は、ノード端末用のスタイル ライブラリで、端末出力文字列の色、太字、非表示、背景色、その他のスタイルを変更できます。 const チョーク = require('チョーク') const logText = chalk.green(` こんにちは、一緒にゲームをしましょう! `) コンソール.log(ログテキスト) クリア画面クリアコマンド、ノードターミナルは画面をクリアし、現在のターミナルビュー表示をクリアします これは最も使いやすい方法です。画面をクリアする必要がある場所で clear() メソッドを実行するだけです。 定数クリア = require('クリア') クリア() 手順に関する追加情報// 命令リストを定義します。 // プレイヤーが入力した指示が正しいかどうかを判断し、ここからコンピューターのランダム出力を取得します。const act = ['Scissors', 'Rock', 'Cloth'] // 読み取ったストリームに基づいてプレーヤーの入力情報を決定する // 読み取りストリーム入力をリッスンする rl.on('line', function (input) { (入力 === '終了')の場合{ // [quit] と入力した場合は close() メソッドを実行します rl.close() } そうでない場合 (act.indexOf(input) !== -1) { // 入力文字列が命令リスト内にある場合 // 対応するコンピュータ命令をランダムに生成します const idx = Math.floor((Math.random() * 3)) ゲーマー = 行為[idx] // スコアリングルールに基づいてプレイヤーがスコアを獲得したかどうかを判定します。const curScore = scoreRule(input, gamer) // スコアを累計する score += curScore // このラウンドの情報を出力します。let win = curScore === 1 ? '今回はプレイヤーが勝ちます' : curScore === -1 ? '今回はコンピュータが勝ちます' : '同点です。偶然に違いありません' 結果 = ` ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ラウンド ${num}: ------------------- プレイヤーは${input}をプレイしました コンピューターが故障しました: ${gamer} ${勝つ} ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ` // ストリームに書き込んだ後、次のラウンドに進みます num++; console.log(結果) // 3ラウンドがプレイされた場合、close()メソッドを実行します。if (num > 3) { rl.close() } } それ以外 { // その他の入力は正しい入力プロンプトを出力します console.log(` !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ゲームを続けるには、[チョキ]、[グー]、[パー]を入力してください ゲームを終了するには【quit】と入力してください。 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! `) } }) 完全なコード// ストーン.js 定数 readline = require('readline') 定数クリア = require('クリア') const チョーク = require('チョーク') const act = ['はさみ', '石', '布'] 数値を1とします スコアを0にする ゲーマー = '' 結果 = '' 定数rl = readline.createInterface({ 入力: process.stdin、 出力: process.stdout }) クリア() const beginText = chalk.green(` ============================================ ゲームを始めるには、[チョキ]、[グー]、[パー]を入力してください ゲームを終了するには【quit】と入力してください。 ============================================ `) コンソール.log(テキスト開始) rl.on('line', 関数(入力) { (入力 === '終了')の場合{ rl.close() } そうでない場合 (act.indexOf(input) !== -1) { const idx = Math.floor((Math.random() * 3)) ゲーマー = 行為[idx] const curScore = scoreRule(入力、ゲーマー) スコア += 現在のスコア win = curScore === 1 ? '今回はプレイヤーが勝ちます' : curScore === -1 ? '今回はコンピュータが勝ちます' : '同点です、偶然に違いありません' 結果 = ` ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ラウンド ${num}: ------------------- プレイヤーは${input}をプレイしました コンピューターが故障しました: ${gamer} ${勝つ} ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ` 数値++; console.log(結果) (数値>3)の場合 rl.close() } } それ以外 { コンソール.log(` !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ゲームを続けるには、[チョキ]、[グー]、[パー]を入力してください ゲームを終了するには【quit】と入力してください。 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! `) } }) // プロセスの終了と終了をリッスンする rl.on('close', function () { (数値>3)の場合 winText = score > 0 ? 「プレイヤーは最終的に勝利しました」 : score < 0 ? 「プレイヤーは結局負けました、いい加減にしてください」 : 「信じられない引き分け」 コンソール.log(` ========================== このラウンドは終了しました。プレイヤーの合計スコアは ${score} です。 ${winText} ========================== `) } プロセス終了(0) }) 関数スコアルール(プレイヤー、NPC) { // チョキ、パー // グー、チョキ // パー、グー if (player === npc) { 0を返す } if ((プレイヤー === 'はさみ' && npc === '布') || (プレイヤー === '石' && NPC === 'はさみ') || (プレイヤー === '布' && NPC === '石')) { 戻り値 1 } それ以外 { -1を返す } } アイデアを出すNode を学習する過程で、依存するモジュールや API がどんどん増えていきますが、これは間接的に npm ライブラリの威力を示すものでもあります。検索することで、必要な機能を見つけて使用することができます。 API の波に迷わないでください。必要なときに検索スキルを使用することを忘れないでください。 ここでの[じゃんけん]はとてもうるさい(見るのが耐えられないほど)ですが、私たちの学習プロセスはそのうるさいところから始まり、どんどん深く進んでいき、あなたの繊細な姿がきっとうるさいところの上に残されるでしょう。私について文句を言うのは大歓迎、ノードにさらに深く入り込むのは大歓迎、さあ~ 以上がNode.JS版ミニゲームの書き方の詳細です。Node.JS版ミニゲームの詳細については、123WORDPRESS.COMの他の関連記事もご覧ください。 以下もご興味があるかもしれません:
|
<<: MySQL Installer Community 5.7.16 インストール詳細チュートリアル
>>: DockerコンテナのIPアドレスを取得する方法の詳細な説明
目次1. ディレクティブカスタムディレクティブ2. ミックスイン3. 継承を拡張する4. 提供して注...
1. Tclスクリプトファイルcircle.tclコードコメント #シミュレーションに必要なプロパテ...
目的カルーセルコンポーネントをカプセル化して直接使用します。具体的な内容は以下のとおりです。一般的な...
目次1. classList属性2. 実用化以前の JavaScript では、最初にクラス属性を取...
1. 前提条件1. プロジェクトが展開されました2. Dockerはすでにインストールされている2...
序文以前、MySQL 5.6 をインストールしました。3 か月後、開発者から MySQL で JSO...
で+ 時間 17:23に at> touch /mnt/file{1..9} ##アクションを...
HTML で下線を引くには、以前はテキストを <u></u> タグで囲む必要...
HTML 中心のフロントエンド開発は、ほぼ Web 標準の意味です。共通しているのは「分離」という考...
1. CSSファイルの命名規則提案: 文字、_、-、数字を使用します。文字で始まる必要があり、純粋な...
目次1. 計算入門1.1、getとsetの使い方1.2. 計算された属性キャッシュ2. 時計の紹介3...
webpackはCSSファイルとその設定をロードします複数の CSS ファイルを作成した後、HTML...
この記事では、シームレスなカルーセル効果を実現するためのVueの具体的なコードを参考までに紹介します...
最近、Apache を nginx に変更しました。TP プロジェクトを実行に移すと、404 エラー...
目次1. データベースを理解する1.1 データベースとデータ構造の関係1.2 なぜデータベースが必要...