ÜberblickHeute werde ich Node.JS verwenden, um Ihnen ein einfaches und interessantes Schere-Stein-Papier-Spiel zu zeigen. Build-Prozess
Verwandte APIsSchauen wir uns zunächst die relevante API an. Wir werden die API in der Reihenfolge des Aufrufs verstehen, und der gesamte Prozess wird klar sein. LesezeileDaten zeilenweise aus einem lesbaren Stream lesen Grundlegende Verwendung
KreideChalk, eine Stilbibliothek für Knotenterminals, mit der Sie die Farbe, Fettschrift, Ausblendung, Hintergrundfarbe und andere Stile der Terminalausgabezeichenfolge ändern können. const Kreide = erforderlich('Kreide') const logText = kreide.grün(` Hallo, lass uns zusammen Spiele spielen! `) console.log(Protokolltext) klarBefehl „Bildschirm löschen“, Knotenterminal löscht den Bildschirm, löscht die aktuelle Terminalansichtsanzeige Dies ist die einfachste Methode. Führen Sie einfach die Methode clear() aus, wenn Sie den Bildschirm löschen möchten. const löschen = erforderlich('löschen') klar() Zusätzliche Anweisungen für Schritte// Anweisungsliste definieren, //Bestimmen Sie, ob die vom Spieler eingegebenen Anweisungen korrekt sind und nehmen Sie hier die zufällige Ausgabe des Computers const act = ['Schere', 'Stein', 'Stoff'] //Bestimmen Sie die Spielereingabeinformationen basierend auf dem Lesestream // Auf Lese-Stream-Eingabe warten rl.on('line', function (input) { wenn (Eingabe === 'beenden') { // Wenn Sie [quit] eingeben, führen Sie die Methode close() aus rl.close() } sonst wenn (act.indexOf(input) !== -1) { // Wenn die Eingabezeichenfolge in der Anweisungsliste enthalten ist // Erzeuge zufällig die entsprechende Computeranweisung const idx = Math.floor((Math.random() * 3)) Spieler = Handlung[idx] //Bestimmen, ob der Spieler basierend auf der Wertungsregel einen Punkt erzielt hat const curScore = scoreRule(input, gamer) // Punkte sammeln score += curScore // Informationen für diese Runde drucken let win = curScore === 1 ? 'Diesmal gewinnt der Spieler' : curScore === -1 ? 'Diesmal gewinnt der Computer' : 'Es ist unentschieden, es muss ein Zufall sein' Ergebnis = ` ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ Runde ${num}: ---------------------------------- Der Spieler hat gespielt: ${input} Der Computer ist aus: ${gamer} ${win} ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ` // Nach dem Schreiben in den Stream mit der nächsten Runde fortfahren num++; console.log(Ergebnis) // Wenn 3 Runden gespielt wurden, führe die Methode close() aus if (num > 3) { rl.schließen() } } anders { // Andere Eingaben drucken die korrekte Eingabeaufforderung console.log(` !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Um das Spiel fortzusetzen, geben Sie bitte ein: [Schere], [Stein], [Papier] Um das Spiel zu beenden, geben Sie bitte ein: 【quit】 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! `) } }) Vollständiger Code// stein.js const readline = erforderlich('readline') const löschen = erforderlich('löschen') const Kreide = erforderlich('Kreide') const act = ['Schere', 'Stein', 'Stoff'] sei num = 1 sei score = 0 lass Spieler = '' let result = '' const rl = readline.createInterface({ Eingabe: process.stdin, Ausgabe: process.stdout }) klar() const beginText = kreide.grün(` ============================================ Um das Spiel zu starten, geben Sie bitte ein: [Schere], [Stein], [Papier] Um das Spiel zu beenden, geben Sie bitte ein: 【quit】 ============================================ `) console.log(BeginnText) rl.on('Zeile', Funktion (Eingabe) { wenn (Eingabe === 'beenden') { rl.schließen() } sonst wenn (act.indexOf(input) !== -1) { const idx = Math.floor((Math.random() * 3)) Spieler = Handlung[idx] const curScore = scoreRule(Eingabe, Spieler) Punktzahl += aktuellerScore let win = curScore === 1 ? 'Diesmal gewinnt der Spieler' : curScore === -1 ? 'Diesmal gewinnt der Computer' : 'Das Ergebnis ist unentschieden, es muss ein Zufall sein' Ergebnis = ` ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ Runde ${num}: ---------------------------------- Der Spieler hat gespielt: ${input} Der Computer ist aus: ${gamer} ${win} ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ` Zahl++; console.log(Ergebnis) wenn (Zahl > 3) { rl.schließen() } } anders { konsole.log(` !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Um das Spiel fortzusetzen, geben Sie bitte ein: [Schere], [Stein], [Papier] Um das Spiel zu beenden, geben Sie bitte ein: 【quit】 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! `) } }) // Auf Schließen und Beenden des Prozesses warten rl.on('close', function () { wenn (Zahl > 3) { winText = Punktzahl > 0? „Der Spieler hat den Endsieg errungen“: Punktzahl < 0? „Der Spieler hat am Ende trotzdem verloren, komm schon“: „Ein unglaubliches Unentschieden“ konsole.log(` ========================== Diese Runde endet, die Gesamtpunktzahl des Spielers beträgt ${score} ${winText} ========================== `) } Prozess.Beenden(0) }) Funktion scoreRule(Spieler, NPC) { // Schere, Papier // Stein, Schere // Papier, Stein if (Spieler === npc) { Rückgabe 0 } wenn ((Spieler === „Schere“ && NPC === „Stoff“) || (Spieler === „Stein“ && NPC === „Schere“) || (Spieler === „Stoff“ && NPC === „Stein“)) { Rückgabe 1 } anders { Rückgabe -1 } } Ideen verwerfenWährend wir Node lernen, werden wir mit immer mehr abhängigen Modulen und APIs konfrontiert, was indirekt auch die Leistungsfähigkeit der npm-Bibliothek veranschaulicht. Wir können die gewünschten Funktionen durch Suchen finden und verwenden. Wir haben Verständnis dafür, dass Sie sich in der Flut der APIs nicht verlieren dürfen. Denken Sie nur daran, die Suchfunktionen zu verwenden, wenn Sie sie brauchen. Das [Schere, Stein, Papier] hier ist so laut (es ist fast unerträglich, es anzusehen), aber unser Lernprozess kann mit der Lautstärke beginnen und immer tiefer gehen, und Ihre zarte Figur wird sicherlich ganz oben auf der Lautstärke bleiben. Beschweren Sie sich gern über mich und gehen Sie tiefer in den Knoten, kommen Sie schon ~ Oben finden Sie Einzelheiten zum Schreiben der Node.JS-Version des Minispiels. Weitere Informationen zur Node.JS-Version des Minispiels finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Ausführliches Installationstutorial für MySQL Installer Community 5.7.16
>>: Detaillierte Erklärung zum Abrufen der IP-Adresse eines Docker-Containers
Inhaltsverzeichnis beschreiben erreichen Die Proj...
Inhaltsverzeichnis Einführung in Bootstrap und di...
Zusammenfassung In diesem Artikel werden die folg...
1. Sehen Sie sich die Renderings an Weiterleiten ...
Inhaltsverzeichnis Finden Sie das Problem 1. So e...
Interviewer: Haben Sie den Quellcode von Vue gele...
In diesem Artikel wird der spezifische Code von v...
Inhaltsverzeichnis Vorwort Lösung Tool-Einführung...
Überblick: Das Dateisystemmodul ist ein einfacher...
Vorwort Dieser Artikel ist lediglich eine einfach...
Vorwort Wie wir alle wissen, ist JavaScript im Ke...
Wir alle wissen, dass Jmeter eine native Ergebnis...
Vorwort Vor kurzem hat unsere Firma MBP konfiguri...
Normalerweise definieren wir zuerst die Dockerfil...
In diesem Artikel wird der spezifische Code für J...