Browse Source

hangman game

master
Jakub Škrabánek 2 years ago
parent
commit
791af3bfef
  1. 66
      hangman/index.js
  2. 11
      hangman/package.json
  3. 4
      hangman/tester.js
  4. 11
      package-lock.json

66
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();

11
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"
}

4
hangman/tester.js

@ -0,0 +1,4 @@
const readlineSync = require("readline-sync");
var vstup = readlineSync.question("Zadej vstup:").toLowerCase();
console.log(vstup);

11
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=="
}
}
}
Loading…
Cancel
Save