概要今日は、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アドレスを取得する方法の詳細な説明
ユーザーエクスペリエンスと使いやすさを向上させるために、入力ボックスなど、Web ページでユーザーが...
目次1. 部品2. BOMの構成2. ウィンドウオブジェクトの共通イベント1. ウィンドウ読み込みイ...
1. HTML_falshアニメーションでのマルチメディアの応用(WebページへのFlashアニメー...
このプロジェクトでは MySQL を使用する必要があります。これまで Windows では常に確実に...
目次使用インストールルーティングでどのように使用しますか?読み込み速度の比較最近、中間およびバックエ...
はじめに: 時間ポイントによる MySQL データベースの復旧どの企業にとっても、データは最も価値の...
[LeetCode] 184. 部門最高給与従業員テーブルにはすべての従業員が保存されます。すべて...
1. システムの Python バージョンに応じて、pip インストール パッケージをダウンロードし...
1. 概要いわゆるライフサイクル機能とは、特定の条件下で自動的にトリガーされる機能です。 2. VU...
【質問】外側のテーブルと内側のテーブルがネストされていて、内側のテーブルと外側のテーブルの両方に境界...
rpmコマンドがソフトウェアのインストールに使用するパラメータはどれですか: -i rpm コマンド...
目次1. redo ログ (MySQL ストレージ エンジン InnoDB のトランザクション ログ...
1. 堂々巡りいろいろ試行錯誤した結果、均等割り付けレイアウトを実現する最も簡単な方法は CSS ...
目次docker-compose.ymlを書くdocker-composeを実行するビルドステータス...
この記事では、スキン変更効果を実現するためのJavaScriptの具体的なコードを参考までに紹介しま...