
// skript pro MasterMind
var delka,barev,maxpokusu,opakbarev;
var kod=new Array;
var pokus=new Array;
var barva_akt=1;
var pokuscislo;

function get_element(eid)
{
  var obj = new Object;
  if (document.all)
    obj = eval("document.all."+eid);
  else
    obj = document.getElementById(eid);
  return obj;
}

function hraj()
{
  var i,j;
  var obj=new Object;
  var uzje;
  var pomretez;

  delka=document.forms.vstup.pkoliku.value;
  barev=document.forms.vstup.pbarev.value;
  maxpokusu=document.forms.vstup.ppokusu.value;
  opakbarev=document.forms.vstup.opakovat.checked;
  if (barev<delka)
    opakbarev=true;
  pokuscislo=0;
  barva_akt=1;
  for (i=0;i<delka;i++)
    pokus[i]=0;
  //zacatek generovani nahodneho kodu
  kod[0] = Math.floor(Math.random()*barev)+1;
  pomretez = "<table align=left border=1><tbody><tr><td><img src='../img_games/kolik"+kod[0]+".gif'></td>";
  for (i=1;i<delka;i++)
  {
   uzje = true;
   while (uzje)
   {
    uzje = false;
    nahcislo = Math.floor(Math.random()*barev)+1;
    if (!opakbarev)
     for (j=0;j<i;j++)
      if (nahcislo==kod[j]) //pokud se nesmi opakovat a barva uz byla vybrana, zkus jinou
        {
          uzje = true;
          break;
        }
   }
   kod[i] = nahcislo;
   pomretez += "<td><img src='../img_games/kolik"+kod[i]+".gif'></td>";
  }
  pomretez += "</tr></tbody></table><p class='prilepenyradek'><b>Bravo!</b></p>";
  obj = get_element("kodtable");
  obj.style.display="none"; //kod a pochvala se ukazou az po vyreseni
  obj.innerHTML=pomretez;

  //zacatek generovani tabulky pro pokusy
  pomretez="<table><tbody><tr>";
  for (j=0;j<delka;j++)
    pomretez += "<td class='hra_mm'><img src='../img_games/sipka.gif' onClick='pichnikolik("+j+")'></td>";
  pomretez += "<td><form name='zkusit' method=get><input type=button name='tlac2' value='Zkus to!' onClick='vyhodnotit();'></form></td></tr>";
  for (i=0;i<maxpokusu;i++)
  {
   pomretez += "<tr>";
   for (j=0;j<delka;j++)
     pomretez += "<td class='hra_mm' id='pokus_"+i+"_"+j+"'><img src='../img_games/prazdny.gif'></td>";
   pomretez += "<td id='pokus_"+i+"'></td></tr>";
  }
  pomretez += "</tbody></table>";
  obj = get_element("pokustable");
  obj.innerHTML = pomretez;

  //generuje tabulku pro vyber barvy
  pomretez="<table border=0><tbody><tr>";
  for (j=1;j<=barev;j++)
    pomretez += "<td align=left width=25><img id='barva"+j+"' src='../img_games/kolik"+j+".gif' onClick='zmenbarvu("+j+")'></td>";
  pomretez += "</tr></tbody></table>";
  obj = get_element("barvy");
  obj.innerHTML=pomretez;
 
  //oznaci aktualni barvu
  obj = get_element("barva1");
  obj.border=1;  
 
  //oznaci aktualni radek
  pomretez="<b>&lt;=?</b>&nbsp;&nbsp;&nbsp;<img src='../img_games/krizek.gif' onClick='smazradek();' align=middle>";
  obj = get_element("pokus_"+pokuscislo);
  obj.innerHTML = pomretez;
}

function pichnikolik(pos)
{
//zapichne kolik na misto vyznacene sipkou s barvou, ktera byla naposled vybrana
var obj;
  obj=get_element("pokus_"+pokuscislo+"_"+pos);
  obj.innerHTML="<img src='../img_games/kolik"+barva_akt+".gif'>";
  pokus[pos]=barva_akt;
}

function zmenbarvu(bar)
{
//zvoli aktivni barvu podle toho, na jakou se kliklo
var obj;
  obj=get_element("barva"+barva_akt);
  obj.border=0;
  obj=get_element("barva"+bar);
  obj.border=1;
  barva_akt=bar;  
}

function smazradek()
{
//smaze cely radek s pokusem
var obj;
  for (i=0;i<delka;i++)
  {
    pokus[i]=0;
    obj=get_element("pokus_"+pokuscislo+"_"+i);
    pomretez = "<img src='../img_games/prazdny.gif'>";
    obj.innerHTML = pomretez;
  }
}

function vyhodnotit()
{
//vyhodnocuje pokus o uhodnuti kodu
  var vyhodnoceno_k=new Array;
  var vyhodnoceno_p=new Array;
  var pocetpresne=0;
  var pocetshod=0;
  var x,y;
  var obj;
  var pomretez="";
  
  for (j=0;j<delka;j++)
    if (kod[j]==pokus[j])
    {  
      pocetpresne++;
      vyhodnoceno_k[j]=1;
      vyhodnoceno_p[j]=1;
    }
    else
    {  
      vyhodnoceno_k[j]=0;
      vyhodnoceno_p[j]=0;
    }

  for (i=0;i<delka;i++)
  if (vyhodnoceno_k[i]==0)
    for (j=0;j<delka;j++)
      if (vyhodnoceno_p[j]==0 && vyhodnoceno_k[i]==0 && kod[i]==pokus[j])
      {
        vyhodnoceno_p[j]=1;
        vyhodnoceno_k[i]=1;
        pocetshod++;
      }

  for (i=0;i<pocetpresne;i++)
    pomretez += "<img src='../img_games/kolik_cerny.gif'>";
  for (i=0;i<pocetshod;i++)
    pomretez += "<img src='../img_games/kolik_bily.gif'>";
  if (pocetshod+pocetpresne==0)
    pomretez = "<b>NIC</b>";
  obj = get_element("pokus_"+pokuscislo);
  obj.innerHTML = pomretez;
  if (pokuscislo<maxpokusu-1) 
    pokuscislo++;
  else
    pokuscislo=0; //prechod zpet na prvni radek pokusu
  
  if (pocetpresne==delka)
    {
	 obj = get_element("kodtable");
     obj.style.display="block";
	}
  else
    {
      //pripravuje se dalsi radek pro pokus
	  for (i=0;i<delka;i++)
	    pokus[i]=0;
      pomretez="<b>&lt;=?</b>&nbsp;&nbsp;&nbsp;<img src='../img_games/krizek.gif' onClick='smazradek();' align=middle>";
      obj = get_element("pokus_"+pokuscislo);
      obj.innerHTML = pomretez;
	}    
}

