Ü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
Geben Sie ein Shell-Skript unter Linux frei, um d...
Inline-Format <colgroup>…</colgroup> ...
Informationen zur ersten Installation der MySQL-5...
Hintergrund Alle Unternehmenswebsites müssen das ...
Wenn Sie den Datumswähler kapseln, müssen Sie die...
Dieser Artikel erläutert anhand von Beispielen di...
Vue+Openlayer verwendet „modify“, um Elemente zu ...
1: Was ist OpenSSL? Welche Funktion hat es? Was i...
Vor Kurzem hat das Projekt die Umgebung gewechsel...
Inhaltsverzeichnis Was ist MVCC Mysql-Sperre und ...
Code kopieren Der Code lautet wie folgt: <ifra...
Designabsichten Beim Entwickeln einer Seite müsse...
Ein einfacher Linux-Ratespiel-Quellcode Spielrege...
Allgemeine Formulareingabeaufforderungen belegen ...
Inhaltsverzeichnis 1. Zeigen Sie die Speicher-Eng...