Diskuze: hra sibenice - kod - potrebuji prosim nutnou pomoc
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Odpovídá na Granny's Tuna
Peas:27.5.2015 8:30
Peas:27.5.2015 8:30
Cauko, tak uz ked je to pre teba dolezite tak som sa na to pozrel ked som mal volny cas. Nad kazdym riadkom JavaScriptoveho kodu sa nachadza koment popisujuci jeho cinnost.
<SCRIPT LANGUAGE="javascript">
//Vytvor prazdne pole alpha
var alpha = [];
//Vytvor premennu alpha_index a dosad do nej 0
var alpha_index = 0;
//Vytvor prazdne pole bravo
var bravo = [];
//Vytvor premennu bravo_index a dosad do nej 0
var bravo_index = 0;
//Vytvor premennu running reprezentujucu beh programu. 0 - "nebezi", 1 - "bezi"
var running = 0;
//Vytvor premennu failnum a dosad do nej 0, reprezentujucu pocet omylov pri hadani slova
var failnum = 0;
//Vytvor premennu advising a dosad do nej 0. Pomocna premenna pre funkciu advise()
var advising = 0;
//Vytvor premennu blank a dosad do nej 0. Pomocna premenna pre funkciu pick(), ak po ukonceni cyklu vo funkcii nenadobudne hodnotu 1,
//hra je vyhodnotena ako vyhra
var blank = 0;
//Hlavnou ulohou tejto funkcie je vytvorenie vypisu hadaneho slova v tvare S L _ _ O. V pripade uspesneho ukoncenia hry funkcia vypise oznam o vyhre.
function pick()
{
//Vytvor premennu choice a dosad do nej prazdny string. Tato premenna bude obsahovat vypis hadaneho slova v tvare S L _ _ O
var choice = "";
//Tento riadok v povodnom kode chybal a zabezpeci nam uspesne ukoncenie hry. Pred tym sa hodnota blank nastavila na hodnotu 1, a uz sa
//spatne nevynulovala nikdy, teda ani podmienka if (!blank) pre vypis vyhry nemohla byt uspesne vykonana
blank = 0;
//Cyklus, ktory sa vykona tolko krat, ake dlhe je hadane slovo
for (i=0; i < words[index].length; i++)
{
//Vytvor premennu t a dosad do nej 0
var t = 0;
//Cyklus, ktory sa vykona "alpha_index"-krat + 1
for(j = 0; j <= alpha_index; j++) {
//Ak znak na i-tej pozicii v hladanom slove sa rovna znaku na pozicii j v poli alpha
if(words[index].charAt(i) === alpha[j].toLowerCase()) {
//Tak dosad do premennej t hodnotu 1
t = 1;
}
}
//Ak t je nenulove, a teda nasla sa zhoda v znaku v hadanom slove so znakom ulozenom v poli alpha
if (t) {
//Do premennej choice dopln znak z hadaneho slova na pozicii [index] a dopln este medzeru (" ")
choice += words[index].charAt(i) + " ";
}
//Ak t je 0, a teda nenasla sa zhoda medzi znakom v hadanym slove a znakom ulozenom v poli alpha
else
{
//Do premennej choice dopln string "_ "
choice += "_ ";
//Do premennej blank dosad 1
blank = 1;
}
}
//Zobraz v inpute s name="word" (pravy-horny) premennu choice
document.f.word.value = choice;
//Ak premenna blank je nulova
if (!blank)
{
//Vypis do inputu s name="tried" (pravy-dolny) string " === Vyhral si gratulujem! ==="
document.f.tried.value = " === Vyhral si gratulujem! ===";
//Zvys hodnotu skore v inpute s name="score" o 1 (lavy-horny)
document.f.score.value++;
//Do premennej running dosad 0 - hra "nebezi"
running = 0;
}
}
//Po kliknuti na Start sa zavola tato funkcia
function new_word(form)
{
//Ak hra este nebola spustena - "nebezi"
if(!running)
{
//Nastav premennu running na 1 (hra bezi)
running = 1;
//Nastav premennu failnum na 0 (pocet omylov)
failnum = 0;
//Dosad failnum(0) do form do inputu s name="lives" (lavy-dolny)
form.lives.value = failnum;
//Do inputu s name="tried" (pravy-dolny) vloz "" - vycistenie
form.tried.value = "";
//Do inputu s name="word" (pravy-horny) vloz "" - vycistenie
form.word.value = "";
//Dosad do premennej index nahodne cislo. Toto cislo bude neskor pouzite na vyber slova z pola "word",
//v ktorom su ulozene slova urcene na hadanie. Tento riadok som zakomentoval a natvrdo do premennej index dosadil cislo 3,
//cim zabezpecime vyber v poradi 4. slova z pola word (indexuje sa od 0, preto pole[3] nam ukazuje na stvrty prvok pola)
//index=Math.round(Math.random()*10000) % 100;
index = 3;
//Do pola alpha, na 1. poziciu (index [0]) uloz 1. znak {charAt(0)} zo slova ulozeneho na [indexe=3] v poli words.
//Teda ak slovo na indexe 3 je "waterfront", tak alpha[0] = w
alpha[0] = words[index].charAt(0);
//Do pola alpha na 2. poziciu [index(1)] uloz posledne pismeno hadaneho slova.
alpha[1] = words[index].charAt(words[index].length-1);
//Do premennej alpha_index dosad 1
alpha_index = 1;
//Do pola bravo na indexe 0 dosad prvy znak hadaneho slova. To iste co sa dialo pre pole alpha[0]. Tu mohlo byt jednoducho napisane bravo[0] = alpha[0] a nemusela sa vykonavat metoda charAt
bravo[0] = words[index].charAt(0);
//Do pola bravo na indexe 1 dosad posledny znak hadaneho slova. To iste co sa dialo pre pole alpha[1]. Tu mohlo byt jednoducho napisane bravo[1] = alpha[1] a nemusela sa vykonavat metoda charAt
bravo[1] = words[index].charAt(words[index].length-1);
//Do premennej bravo_index dosad 1
bravo_index = 1;
//Zavolaj funkciu pick() pre vypis hadaneho slova v tvare S L _ _ O
pick();
}
//Ak uz hra bezi a klikol si na Start
else
{
//Zavolaj funkciu advise s argumentom "Slovo je v hre!". Funkcia nam zobrazi danu spravu na 1 sekundu
advise("Slovo je v hre!");
}
}
//Funkcia seek sa vykona po stlaceni niektoreho z pismen
function seek(letter)
{
//Ak hra este nebezi (nekliklo sa pred tym na Start alebo hra bola ukoncena)
if (!running) {
//Zavolaj funkciu advise s adrumentom ".....klikni a zacni hrat !". Funkcia nam zobrazi danu spravu na 1 sekundu
advise(".....klikni a zacni hrat !");
}
//Ak uz hra bezi
else
{
//Vytvor premennu t a dosad do nej 0
var t = 0;
//Cyklus, ktory sa vykona bravo_index krat + 1
for (i=0; i <= bravo_index; i++)
{
//Ak sa znak na indexe [i] v poli bravo rovna znaku "letter" znak po kliknuti na niektore pismeno)
if (bravo[i]===letter || bravo[i]===letter.toLowerCase()) {
//Dosad do t hodnotu 1
t = 1;
}
}
//Ak t = 0, teda nenasla sa zhoda so znakmi v poli bravo so zadanym znakom letter
if (!t)
{
//Dopln do inputu s name="tried" (pravy-dolny) zadany znak letter + medzeru
document.f.tried.value += letter + " "
//Zvys hodnotu bravo_index o 1
bravo_index++;
//Uloz na poziciu bravo_index do pola bravo zadany znak letter
bravo[bravo_index] = letter;
//Cyklus. ktory sa vykona tolko krat, ake dlhe je hadane slovo
for(i=0; i < words[index].length; i++) {
//Ak znak na indexe i v hladanom slove sa rovna zadanemu znaku
if(words[index].charAt(i)===letter || words[index].charAt(i)===letter.toLowerCase()) {
//Dosad do premennej t hodnotu 1
t = 1;
}
}
//Ak t je nenulove, teda ak sa zadany znak letter zhoduje s so znakom na pozicii i v hadanom slove
if(t)
{
//Zvys hodnotu v alpha_index o 1
alpha_index++;
//Dosad do pola alpha na indexe alpha_index zadany znak letter
alpha[alpha_index] = letter;
}
//Ak je t nulove, teda nenasla sa zhoda medzi zadanym znakom letter a znakom s hadanom slove
else {
//Zvys hodnotu premennej failnum o 1
failnum++;
}
//Zobraz hodnotu failnum (pocet omylov) v inpute s name="lives" (lavy-spodny)
document.f.lives.value = failnum;
//Ak je failnum = 6, teda hrac sa pomylil 6 krat
if (failnum === 6)
{
//Vypis string v inpute s name="tried" (pravy-dolny) string "Prohral si zkus to znova!"
document.f.tried.value = "Prohral si zkus to znova!";
//Vypis v inpute s name="word" (pray-horny) hadane slovo (uz odhalene)
document.f.word.value = words[index];
//Zniz hodnotu score v inpute s name="score" (lavy-horny)
document.f.score.value--;
//Ukonci hru dosadenim hodnoty 0 do premennej running
running = 0;
}
//Ak pocet omylov este nedovrsil hodnotu 6
else {
//Zavolaj funkciu pick()
pick();
}
}
//Ak sa nasla zhoda zadaneho znaku so znakom v poli bravo
else {
//Zavola sa funkcia advise s argumentom "Písmeno "+letter+" je uz je pouzite!". Funkcia nam zobrazi danu spravu na 1 sekundu
advise("Písmeno " + letter + " je uz je pouzite!");
}
}
}
//Funkcia sluziaca na vypis spravy do inputu s name="tried" (pravy-dolny), necha 1s vypis zobrazeny a vrati naspat povodny text, ktory sa v inpute nachadzal
function advise(msg)
{
//Ak pomocna premenna advising je 0
if (!advising)
{
//Hodnotu v premennej advising zniz o 1
advising =- 1;
//Vytvor premennu savetext a dosad do nej hodnotu z inputu s name="tried" (pravy-dolny)
savetext = document.f.tried.value;
//Dosad do tohto inputu spravu msg
document.f.tried.value = msg;
//Dosad opat do daneho inputu naspat hodnotu ulozenu v premennej savetext, a nastav premennu advising na hodnotu 0. To vsetko sprav po 1 sekunde
window.setTimeout("document.f.tried.value=savetext; advising=0;",1000);
}
}
//Vytvor pole words, v ktorom su ulozene hadane slova
var words = ["skuska", "test", "slovo", "waterfront", "watertight"]; //tady je treba 50 slov
</SCRIPT>
<FORM NAME="f">
<TABLE BGCOLOR=#C0C0C0 BORDER=1>
<TR>
<TD COLSPAN=4 ALIGN=RIGHT>
Score : <INPUT TYPE=TEXT NAME="score" VALUE="0" onfocus="score.blur();" SIZE=2>
<BR>
Fails (6): <INPUT TYPE=TEXT NAME="lives" VALUE="0" onfocus="lives.blur();" SIZE=2>
</TD>
<TD COLSPAN=7 ALIGN=CENTER>
<INPUT TYPE=TEXT NAME="word" VALUE=" --- Sibenice ---" onfocus="word.blur();" SIZE=25>
<BR>
<INPUT TYPE=TEXT NAME="tried" VALUE="Klikni a zacni hrat." onfocus="tried.blur();" SIZE=25>
</TD>
<TD COLSPAN=2 ALIGN=CENTER>
<INPUT TYPE=BUTTON onclick="new_word(this.form);" VALUE=" Start ">
</TD>
</TR>
<TR>
<TD><INPUT TYPE=BUTTON VALUE=" A " onclick="seek('A');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" B " onclick="seek('B');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" C " onclick="seek('C');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" D " onclick="seek('D');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" E " onclick="seek('E');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" F " onclick="seek('F');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" G " onclick="seek('G');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" H " onclick="seek('H');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" I " onclick="seek('I');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" J " onclick="seek('J');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" K " onclick="seek('K');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" L " onclick="seek('L');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" M " onclick="seek('M');"></TD>
</TR>
<TR>
<TD><INPUT TYPE=BUTTON VALUE=" N " onclick="seek('N');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" O " onclick="seek('O');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" P " onclick="seek('P');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" Q " onclick="seek('Q');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" R " onclick="seek('R');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" S " onclick="seek('S');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" T " onclick="seek('T');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" U " onclick="seek('U');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" V " onclick="seek('V');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" W " onclick="seek('W');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" X " onclick="seek('X');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" Y " onclick="seek('Y');"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" Z " onclick="seek('Z');"></TD>
</TR>
</TABLE>
</FORM>
Akceptované řešení
+20 Zkušeností
+2,50 Kč
+20 Zkušeností
+2,50 Kč
Odpovídá na Peas
Granny's Tuna:27.5.2015 20:47
Granny's Tuna:27.5.2015 20:47
Ahoj...uplne nejvic ti dekuju...kdybys mel jakykoliv problem, tak mi napis a zkusim ti pomoct...teda krome Javascriptu...ten jak uz vidim, jsem dosti pozapomnel.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.
Zobrazeno 3 zpráv z 3.