NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

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.

Aktivity
Avatar
Granny's Tuna:25.5.2015 21:07

Dobry den...mel bych celkem pro me hodne dulezitou prosbu...Mel bych kod a potreboval bych ho prosim co nejlepe vysvetlit...Co to dela a tak vim, jelikoz jsem ho sam setrojil, avsak je to a) jiz davno b) jsem si tam nedal komentare c) jsem vetsinu udelal drive takze je to trochu z poloviny sbirka kod z internetu...Po­treboval bych od vas jestli byste mi tam nemohli vzdy, kde to bude dulezite dat komentar....nemusi to byt ani oznaceno jako " // " anebo v html jako " <!--text--> " ale staci mi vazne jen jako napsat co ze to dela. Celkem hodne bych to potreboval co nejdrive, tak pokud by se nasel nekdo hodny zde, tak bych byl moc rad a nejak bych se mu klidne i odvdecil.

<SCRIPT LANGUAGE="javascript">
var alpha=new Array();
var alpha_index=0;

var bravo=new Array();
var bravo_index=0;

var running=0;
var failnum=0;
var advising=0;
blank=0;
function pick()
{
  var choice="";


  for (i=0; i<words[index].length; i++)
  {
    t=0;
    for(j=0; j<=alpha_index; j++)
    if(words[index].charAt(i)===alpha[j] || words[index].charAt(i)===alpha[j].toLowerCase()) t=1;

    if (t) choice+=words[index].charAt(i)+" ";
    else
    {
      choice+="_ ";
      blank=1;
    }
  }

  document.f.word.value=choice;

  if (!blank)
  {
    document.f.tried.value="   === Vyhral si gratulujem! ===";
    document.f.score.value++;
    running=0;
  }
}


function new_word(form)
{
  if(!running)
  {
    running=1;
    failnum=0;
    form.lives.value=failnum;
    form.tried.value="";
    form.word.value="";
    index=Math.round(Math.random()*10000) % 100;
    alpha[0]=words[index].charAt(0);
    alpha[1]=words[index].charAt(words[index].length-1);
    alpha_index=1;
    bravo[0]=words[index].charAt(0);
    bravo[1]=words[index].charAt(words[index].length-1);
    bravo_index=1;
    pick();
  }
  else advise("Slovo je v hre!");
}

function seek(letter)
{
  if (!running) advise(".....klikni a zacni hrat !");
  else
  {
    t=0;
    for (i=0; i<=bravo_index; i++)
    {
      if (bravo[i]===letter || bravo[i]===letter.toLowerCase()) t=1;
    }

    if (!t)
          {
            document.f.tried.value+=letter+" "
            bravo_index++;
            bravo[bravo_index]=letter;

      for(i=0;i<words[index].length;i++)
          if(words[index].charAt(i)===letter || words[index].charAt(i)===letter.toLowerCase()) t=1;

      if(t)
      {
            alpha_index++;
              alpha[alpha_index]=letter;
            }
            else failnum++;

      document.f.lives.value=failnum;
            if (failnum===6)
      {
        document.f.tried.value="Prohral si zkus to znova!";
        document.f.word.value=words[index];
        document.f.score.value--;
        running=0;
      }
                        else pick();
          }
          else advise("Písmeno "+letter+" je uz je pouzite!");
  }
}

function advise(msg)
{
  if (!advising)
  {
    advising=-1;
    savetext=document.f.tried.value;
    document.f.tried.value=msg;
    window.setTimeout("document.f.tried.value=savetext; advising=0;",1000);
  }
}

var words = new Array("",,"waterfront","watertight"); //tady je treba 50 slov

</SCRIPT>

<FORM NAME="f">

<TABLE BGCOLOR=#C0C0C0 BORDER=1> //tady tohle uz nejak chapu,teda urcite ty inputy
 <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>
Odpovědět
25.5.2015 21:07
One of my most productive days was throwing away 1000 lines of code. ~ Gordon Bell
Avatar
Peas
Člen
Avatar
Odpovídá na Granny's Tuna
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č
Řešení problému
 
Nahoru Odpovědět
27.5.2015 8:30
Avatar
Odpovídá na Peas
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.

Nahoru Odpovědět
27.5.2015 20:47
One of my most productive days was throwing away 1000 lines of code. ~ Gordon Bell
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.