From 791af3bfef8eed3f1615f6a87dcbc73764059a2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20=C5=A0krab=C3=A1nek?= Date: Mon, 23 Oct 2023 10:22:34 +0200 Subject: [PATCH] hangman game --- hangman/index.js | 66 ++++++++++++++++++++++++++++++++++++++++++++ hangman/package.json | 11 ++++++++ hangman/tester.js | 4 +++ package-lock.json | 11 ++++++++ 4 files changed, 92 insertions(+) create mode 100644 hangman/index.js create mode 100644 hangman/package.json create mode 100644 hangman/tester.js create mode 100644 package-lock.json diff --git a/hangman/index.js b/hangman/index.js new file mode 100644 index 0000000..f4c94b3 --- /dev/null +++ b/hangman/index.js @@ -0,0 +1,66 @@ +const readlineSync = require("readline-sync"); + +//funkce pro vybrání náhodne slo pro hru +function nahodneSlovo() { + //načtou se slova + const slova = ["skola", "zabava", "node", "hangman", "programovani"]; + //náhodně se vybere číslo mezi 0 a délkou pole + //nezapomenout že index začíná od NULY!!!! + const nahodnyIndex = Math.floor(Math.random()*slova.length); + //vrátí pouze 1 slovo z daného indexu + return slova[nahodnyIndex]; +} +// funkce pro zobrazování slova pro hraní (zobrazuje uhodnutá písmena) -> formátovač +function zobrazeniSlova(slovo,uhadnutaPismena) { + return slovo + .split('') //rozdělí slovo na písmena + .map(pismeno => uhadnutaPismena.includes(pismeno) ? pismeno : '_') //zkontroluje jednotlivá písmena + .join(' '); //zas spojí slovo dohromady se zobrazením uhodnutých písmenek +} + + +function hangman() { + //načtení a nastavení hodnot + const maxPokusu = 10; + let zbyvajiciPokusy = maxPokusu; + const hadajiciSlovo = nahodneSlovo(); + let hadajiciPismenka = []; + + //zobrazení uvítaní + console.log("Vítej ve hře Hangman!"); + console.log(zobrazeniSlova(hadajiciSlovo,hadajiciPismenka)); + + //herní logiku + while (zbyvajiciPokusy > 0) { + const uhadnuti = readlineSync.question("Hadej pismeno: ").toLowerCase(); + if(hadajiciPismenka.includes(uhadnuti)){ + console.log("Toto písmeno už si hadal"); + continue; //pokud hadajici pismeno už jsme zadali tak jde na zacatek while cyklu + } + + //přidá písmeno do pole písmenek + hadajiciPismenka.push(uhadnuti); + + //špatné písmeno + if (!hadajiciSlovo.includes(uhadnuti)) { + zbyvajiciPokusy--; + console.log(`Špatný pokus! zbýva: ${zbyvajiciPokusy} pokusů`); // AltGR+ý Mezera + } + + //zobrazení postupu po přidanání písmena + const zobrazeniPoPridaniPismenka = zobrazeniSlova(hadajiciSlovo,hadajiciPismenka); + console.log(zobrazeniPoPridaniPismenka); + + //když už máme všechny písmena - VÝHRA + if (!zobrazeniPoPridaniPismenka.includes('_')){ + console.log("WIN WIN, CHICKEN DINNER"); + break; // nam vyskočí z cyklu + } + } + //po vyčerpání všech pokusuů + if (zbyvajiciPokusy === 0) { + console.log(`Bohuže, prohral si nad slovem ${hadajiciSlovo}`); + } +} + +hangman(); \ No newline at end of file diff --git a/hangman/package.json b/hangman/package.json new file mode 100644 index 0000000..6e09624 --- /dev/null +++ b/hangman/package.json @@ -0,0 +1,11 @@ +{ + "name": "hangman", + "version": "1.0.0", + "description": "Mala jednoducha hra", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "KM", + "license": "ISC" +} diff --git a/hangman/tester.js b/hangman/tester.js new file mode 100644 index 0000000..1a0757a --- /dev/null +++ b/hangman/tester.js @@ -0,0 +1,4 @@ +const readlineSync = require("readline-sync"); + +var vstup = readlineSync.question("Zadej vstup:").toLowerCase(); +console.log(vstup); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..2be967a --- /dev/null +++ b/package-lock.json @@ -0,0 +1,11 @@ +{ + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "readline-sync": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", + "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==" + } + } +}