概要今日は、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アドレスを取得する方法の詳細な説明
仮想マシン内の Ubuntu がネットワークに接続できない場合の効果的な解決策: 1. Ubuntu...
目的: MySQL 集計関数のネストされた使用集計関数は直接ネストできません。例: max(coun...
画像をダウンロード docker プル mysql:5.7 docker pull php:7.2-...
停止したすべてのDockerコンテナを1つのコマンドで再起動するdocker ps -a | gre...
この記事の例では、WeChatアプレットマップで使用される具体的な実装コードを参考までに共有していま...
コンテンツを携帯電話、タブレット、支援技術のユーザーから非表示にし、キーボードのユーザーにのみ表示す...
1. ディスクパーティション: 2. fdiskパーティションディスクが2 TB未満の場合はfdis...
効果: CSS スタイル: <スタイル タイプ="text/css">...
説明: ブロック要素に表示されるテキストの行数を制限します。 -webkit-line-clamp ...
この章では、dockerの下にあるSpring BootプロジェクトでRedisを操作し始めます。準...
エンコーディングの理由により、Linux サーバーに中国語のファイルやディレクトリをアップロードまた...
1》ウェブデザインが得意であること2》Webページのデザイン方法を知る3》計画する4. SEOを理解...
各ブラウザの select タグのプロパティと各ブラウザのサポートが多少異なるため、各ブラウザでの選...
目次1. フィルター() 2. 各() 3. いくつか() 4. すべて() 5. 減らす() 6....
この記事では主に、高さが不明な垂直方向の中央揃えを CSS で実装する方法を紹介し、皆さんと共有しま...