// Minimax

var max=8;
var maxtiefe=4;
var fmax=max*max;
var f=new Array(fmax);
var z=new Array(maxtiefe);
var w=new Array(maxtiefe);
var p=new Array(2);
var dran,count,letzter;
var compi=false;
var is_ende=false;

// --- Bildschirmroutinen:

function tabelle1()
{ var temp='<table border=0 cellspacing=0 cellpadding=8 align=left><tr><td>';

  temp=temp+'</td></tr></table>';
  document.writeln(temp);
}

function tabelle2()
{ var k=0; 
  var temp='<table border=0 cellspacing=0 cellpadding=0 align=left>';
  for (var i=0; i<max; i++)
  { temp=temp+'<tr>';
    for (var j=0; j<max; j++)
    { temp=temp+'<td background="backgr1.jpg" width=40 height=32 align=center>';
      temp=temp+'<a href="javascript:auswerten('+k+')">';
      temp=temp+'<img src="z1.gif" width=16 height=20 name="z_'+k+'" border=0 align=top><img src="z3.gif" width=16 height=20 name="e_'+k+'" border=0 align=top>';
      temp=temp+'</a></td>';
      k++;
    }
    temp=temp+'<tr>';
  }
  temp=temp+'</table>';
  document.writeln(temp);
}

function tabelle3()
{ var k=0; 
  var temp='<form name="settings"><table border=0 cellspacing=0 cellpadding=8 align=left>';
  temp=temp+'<tr><td><b>Compi ist:<br clear=all>';
  temp=temp+'<input type="radio" name="level" value=0 checked>Blondchen<br clear=all>';
  temp=temp+'<input type="radio" name="level" value=1>Ramscher<br clear=all>';
  temp=temp+'<input type="radio" name="level" value=2>Klauer<br clear=all>';
  temp=temp+'<input type="radio" name="level" value=4>Denker<br clear=all>';
  temp=temp+'<input type="radio" name="level" value=5>Tr&auml;umer<br clear=all>';
  temp=temp+'</b></td><tr>';
  temp=temp+'<tr><td align=right valign=top><b><br>Spieler: <input type=text name="sp0" value=0 size=6><br clear=all> ';
  temp=temp+'Compi: <input type=text name="sp1" value=0 size=6></b></td></tr></table><br clear=all>';

  temp=temp+'<table width=512><tr><td colspan=3><img src="messi.gif" width=256 height=32 name="dran" border=0 hspace=16></td></tr>';
  temp=temp+'<tr><td class="button"><a href="javascript:neu()">neu</a></td>';
  temp=temp+'<td class="button"><a href="javascript:hilfe()">Hilfe</a></td>';
  temp=temp+'<td class="button"><a href="javascript:window.close()">Fenster schlie&szlig;en</a></td>';
  temp=temp+'<td class="button"><a href="http://www.gamecraft.de" target="_top">Gamecraft nachladen</a></td></tr>';
  temp=temp+'</table>';
  document.writeln(temp);
}


function hilfe()
{ win2=window.open('hilfe.htm','popup','width=480,height=256'); }


function is_level()
{ var i,k; k=-1; 
  with (document.settings) { for (i=0; i<level.length; i++) if (level[i].checked) k=level[i].value; }
  return k;
}



function normal(nr,zahl)
{ var z0=zahl%10;
  var z1=(zahl-z0)/10;
  var temp='z_'+nr; if (z1>0) document.images[temp].src='z'+z1+'.gif'; else document.images[temp].src='leer.gif';
  temp='e_'+nr; if ((z0>0)||(z1>0)) document.images[temp].src='z'+z0+'.gif'; else document.images[temp].src='leer.gif';
}

function hilite(nr,zahl)
{ var z0=zahl%10;
  var z1=(zahl-z0)/10;
  var temp='z_'+nr; if (z1>0) document.images[temp].src='r'+z1+'.gif'; else document.images[temp].src='leer.gif';
  temp='e_'+nr; if ((z0>0)||(z1>0)) document.images[temp].src='r'+z0+'.gif'; else document.images[temp].src='leer.gif';
}

function updatepunkte() { document.settings.sp0.value=p[0]; document.settings.sp1.value=p[1]; }

function messi(dran) { document.images['dran'].src='messi_'+dran+'.gif'; }

function zeige(dran,letzter)
{ var i,k; 
  is_ende=true;
  for (i=0; i<fmax; i++) normal(i,f[i]);
  if (dran==0) { for (i=0; i<max; i++) { k=i*max+letzter; hilite(k,f[k]); if (f[k]>0) is_ende=false; } }
  else { for (i=0; i<max; i++) { k=i+max*letzter; hilite(k,f[k]); if (f[k]>0) is_ende=false; } }
}


function mischen()
{ var i,j,k;
  for (i=0; i<fmax; i++) f[i]=i+1;
  for (i=0; i<fmax; i++) { j=Math.floor(fmax*Math.random()); k=f[i]; f[i]=f[j]; f[j]=k; }
}

function neu()
{ var i,j,k;
  dran=0; count=0; p[0]=0; p[1]=0; is_ende=false;
  mischen();
  for (i=0; i<fmax; i++) hilite(i,f[i]);
  messi(dran);
}

function auswerten(nr)
{ var i,j,k,ok;
  ok=(count==0);

  if (!ok) ok=(nr%max==letzter);  // Spalte stimmt
  if (ok) ok=(f[nr]>0);           // Feld ist noch belegt
  if (ok) 
  { p[0]=p[0]+f[nr]; f[nr]=0; letzter=(nr-(nr%max))/max; dran=1; normal(nr,f[nr]); count++; 
    updatepunkte();
    zeige(dran,letzter);
    if (is_ende) messi(2);
    else
    { messi(dran);
      k=is_level();
      i=getopt(1,k,letzter);
      alert('Compi nimmt Nr.'+(i+1));
      if (i>=0) { nr=letzter*max+i; p[1]=p[1]+f[nr]; f[nr]=0; letzter=i; dran=0; normal(nr,f[nr]); count++; }
      updatepunkte();
      zeige(dran,letzter);
      if (is_ende) messi(2); else messi(dran);
    }
  }
  else alert('Bitte nicht schummeln!');
}

        

function getopt(dran,level,nr)
{ var i,j,k,opt,diff,zug;
  opt=-9999;
  k=-1;
  if (nr>=0) 
  { if (level==0)         // Maximalwert holen
    { for (i=0; i<max; i++) 
      { if (dran==0) j=nr+i*max; else j=nr*max+i;
        if (f[j]>0) { if (f[j]>opt) { k=i; opt=f[j]; } }
      }
    }
    else 
    { var n_dran=(dran+1)%2;
      var n_level=level-1;
      for (i=0; i<max; i++) 
      { if (dran==0) j=nr+i*max; else j=nr*max+i;
        if (f[j]>0)         // Zug simulieren                   
        { diff=f[j];
          f[j]=0;
          zug=getopt(n_dran,n_level,i); // optimierter Gegenzug ein Level tiefer
          f[j]=diff;
          diff=diff-w[n_level];
// alert('dran:'+dran+', tiefe:'+level+', zug:'+i+', wert:'+diff); 
          if (diff>opt) { k=i; opt=diff;} 
        }
      }    
    }
  }
  if (k<0) opt=0; 
  w[level]=opt;
  return k;
}
  








