You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
2.4 KiB
67 lines
2.4 KiB
//npm install
|
|
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();
|