Ü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
Durch JavaScript können wir das Springen von Hype...
Konfigurationsanweisungen Linux-System: CentOS-7....
<!--[if IE 6]> Nur IE6 kann erkennen <![e...
Ich habe online gesucht und festgestellt, dass in...
LocalStorage speichert Boolesche Werte Als ich he...
„Replace“ und „Replace into“ von MySQL sind beide...
Inhaltsverzeichnis 1. Prinzipübersicht Query Cach...
Als ich kürzlich ein WeChat-Applet schrieb, erfor...
1. Vier Startmethoden: 1.mysqld Starten Sie den M...
Das Problem, dass MYSQL5.7.17 unter MAC keine Ver...
Es gibt zwei Möglichkeiten, MySQL 5.7 zu installi...
Vue-Datenbindungsprinzip in beide Richtungen, abe...
Dieser Artikel stellt den Implementierungscode vo...
Bei Diskussionen über Webstandards kommt immer wie...
1. Bereiten Sie die Docker-Umgebung vor 2. Suchen...