diff --git a/hangman/index.js b/hangman/index.js new file mode 100644 index 0000000..5976be5 --- /dev/null +++ b/hangman/index.js @@ -0,0 +1,65 @@ +const readlineSync = require("readline-sync") + +function nahodneSlovo() { + //načteme si slova (napište si další) + const slova = ["skola", "zabava", "maturita", "web", "pes", "kocka"]; + //nahodne se vybere cislo mezi 0 a delkou pole + // index zarína od NULY + const nahodnyIndex = Math.floor(Math.random()*slova.length) + //vrati pouze slovo na pozici nahodnyIndex + return slova[nahodnyIndex] +} + +function zobrazeniSlova(slovo,zadanyPismena) { + return slovo.split('') + .map(pismeno => zadanyPismena.includes(pismeno) ? pismeno : '_') + .join(' ') +} + +function hangman() { + //načtení a nastavení hodnot + const maxPokusu = 10; + let zbyvajiciPokusy = maxPokusu; + const hadajiciSlovo = nahodneSlovo(); + let hadajiciPismena = []; + + //uvítání + console.log("Vitej ve hře Hangman"); + console.log(zobrazeniSlova(hadajiciSlovo,hadajiciPismena)) + + //herni logiku + while (zbyvajiciPokusy > 0){ + const uhadnuti = readlineSync.question("Hadej pismeno: ").toLowerCase(); + if (hadajiciPismena.includes(uhadnuti)){ + console.log("Toto pismeno už si hadal(a)") + continue; // pokud hadajici pismeno už jsme zadali tak jde na začátek while cyklu + } + + //přidáme pismeno do pole písmenek + hadajiciPismena.push(uhadnuti); + + //Špatné písmeno + if (!hadajiciSlovo.includes(uhadnuti)){ + zbyvajiciPokusy--; + console.log(`Špatný pokus, zbyva: ${zbyvajiciPokusy} pokusů`); + } + + //zobrazeni pokusu po přidaní písmena + const zobrazeniPoPridaniPismenka = zobrazeniSlova(hadajiciSlovo,hadajiciPismena); + console.log(zobrazeniPoPridaniPismenka); + + //když mame všechny písmena - VÝHRA + if(!zobrazeniPoPridaniPismenka.includes('_')){ + console.log("WINNER WINNER, CHICKEN DINNER"); + break; + } + + } + //po vyčerpání pokusů + if (zbyvajiciPokusy === 0) { + console.log (`Bohužel, prohral si nad slovem ${hadajiciSlovo}`) + } +} + + +hangman() \ No newline at end of file diff --git a/hangman/package-lock.json b/hangman/package-lock.json new file mode 100644 index 0000000..422564f --- /dev/null +++ b/hangman/package-lock.json @@ -0,0 +1,24 @@ +{ + "name": "hangman", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "hangman", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "readline-sync": "^1.4.10" + } + }, + "node_modules/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==", + "engines": { + "node": ">= 0.8.0" + } + } + } +} diff --git a/hangman/package.json b/hangman/package.json new file mode 100644 index 0000000..344ff8a --- /dev/null +++ b/hangman/package.json @@ -0,0 +1,14 @@ +{ + "name": "hangman", + "version": "1.0.0", + "description": "Mala jednoducha hra", + "main": "index.js", + "scripts": { + "test": "node tester.js" + }, + "author": "KubMakCZ", + "license": "ISC", + "dependencies": { + "readline-sync": "^1.4.10" + } +} diff --git a/hangman/tester.js b/hangman/tester.js new file mode 100644 index 0000000..fe90731 --- /dev/null +++ b/hangman/tester.js @@ -0,0 +1,5 @@ +//npm install readline-sync +const readlineSync = require("readline-sync") + +var vstup = readlineSync.question("zadej vstup:").toLowerCase() +console.log(vstup) \ No newline at end of file