// Progamm zu Spiel Solitaire auf www.mathematik.ch
// copyright Bernhard Berchtold

  Hintergrund = new Image();
  Hintergrund.src="feld.gif";
  Normal = new Image();
  Normal.src="feld1.gif";
  Gross = new Image(); 
  Gross.src = "feld2.gif"; 
  Leer = new Image(); 
  Leer.src = "feld0.gif"; 
  var first = true;         // um ersten Spielstein zu entfernen
  var ersterStein=0;
  var nummer=0;
  var Spielerzug=0;         // Spieler führt Zug nicht selber aus und spielt eingelesene Partie ab 
  var Art="Kreuz";
  a = new Array(120);  
  var Zugnr = new Array(50);
  Bildnrverschiebung=3;     // 3 Bilder werden vor dem ersten massgebenden Bild feld.gif geladen

 function init()
 {var i,j;
  for (i = 0; i <= 120; i++)
    a[i] = 5;                        // alle (Rand)felder mit 5 besetzt 
  for (j = 0; j <=6; j++)
    for (i =24 ; i <= 30; i++)
      a[i+11*j]  = 1;
  Kreuz();
  }

   function Bildwechsel(Bildnr,Bildobjekt)
  {
   document.images[Bildnr+Bildnrverschiebung].src = Bildobjekt.src;
  }
 
  function Springen(Bildnr1,Zwischen,Bildnr2)   // Sprung von 1 nach 2 über Zwischen
  {
  Bildwechsel(Bildnr1,Leer);
  Bildwechsel(Bildnr2,Normal);
  Bildwechsel(Zwischen,Leer);
  a[Bildnr1]=0; a[Bildnr2]=1; a[Zwischen]=0;
   nummer++;
  Zugnr[nummer]=Bildnr1*10000+Zwischen*100+Bildnr2;
  if (Spielerzug == 1)
     {Zugnr[nummer+1]=0;}
  Spielerzug=0;                              // default wieder herstellen
 }
  
  function Pruefe(Bildnr)
  {var i;
   var gross = 0;
 
   for (i = 24; i <= 96; i++)
          {if (a[i] == 2) 
             gross = 1;}

  if (first && a[Bildnr]==1)
    {  Bildwechsel(Bildnr,Leer);
       a[Bildnr] = 0; ersterStein=Bildnr;
      first=false;
    }

  if (a[Bildnr]==2)              // rückgängig: gezogenen Spielstein wieder klein machen
     {a[Bildnr]=1;
      Bildwechsel(Bildnr,Normal);
     }  

  if (a[Bildnr]==1  && gross == 0)                    // Spielstein rauszupfen
     {if  (a[Bildnr-1]==1 && a[Bildnr-2]==0)
         {a[Bildnr]=2;
          Bildwechsel(Bildnr,Gross) };
       if  (a[Bildnr+1]==1 && a[Bildnr+2]==0)
         {a[Bildnr]=2;
          Bildwechsel(Bildnr,Gross) };
       if  (a[Bildnr-11]==1 && a[Bildnr-22]==0)
         {a[Bildnr]=2;
          Bildwechsel(Bildnr,Gross) };
       if  (a[Bildnr+11]==1 && a[Bildnr+22]==0)
         {a[Bildnr]=2;
          Bildwechsel(Bildnr,Gross) };
     }  

  if (a[Bildnr]==0  && gross == 1)                    // springen
     {if  (a[Bildnr-1]==1 && a[Bildnr-2]==2)
          {Spielerzug=1;
           Springen(Bildnr-2,Bildnr-1,Bildnr) ;}
       if  (a[Bildnr+1]==1 && a[Bildnr+2]==2)
          {Spielerzug=1;
           Springen(Bildnr+2,Bildnr+1,Bildnr);}
       if  (a[Bildnr-11]==1 && a[Bildnr-22]==2)
          {Spielerzug=1;
           Springen(Bildnr-22,Bildnr-11,Bildnr);}
       if  (a[Bildnr+11]==1 && a[Bildnr+22]==2)
          {Spielerzug=1;
           Springen(Bildnr+22,Bildnr+11,Bildnr);}
    }  
  }
  
  function Zugruecknehmen()
  {  if (nummer>0)
     {var Hilf = Zugnr[nummer];
      Bildnr1 =  Math.floor(Hilf/10000);
      Hilf=Hilf-Bildnr1*10000;
      Zwischen =  Math.floor(Hilf/100);
      Bildnr2 = Hilf-Zwischen*100;
      Bildwechsel(Bildnr1,Normal);
      Bildwechsel(Bildnr2,Leer);
      Bildwechsel(Zwischen,Normal);
      a[Bildnr1] = 1; a[Bildnr2]=0; a[Zwischen]=1;
      nummer--;
     }             
 } 
 
 function Wiederausfuehren()
  {  if (Zugnr[nummer+1]>0)
       { var Hilf = Zugnr[nummer+1];
         Bildnr1 =  Math.floor(Hilf/10000);
         Hilf=Hilf-Bildnr1*10000;
         Zwischen =  Math.floor(Hilf/100);
         Bildnr2 = Hilf-Zwischen*100;
         Springen(Bildnr1,Zwischen,Bildnr2);
       }          
 } 


 function Kreuz()            // und reset
 { Quadrat();
   Art="Kreuz"
   a[24]=5; a[25]=5; a[29]=5; a[30]=5;
   a[35]=5; a[36]=5; a[40]=5; a[41]=5;
   a[79]=5; a[80]=5; a[84]=5; a[85]=5;
   a[90]=5; a[91]=5; a[95]=5; a[96]=5;
   Bildwechsel(24,Hintergrund);  Bildwechsel(25,Hintergrund); Bildwechsel(29,Hintergrund); Bildwechsel(30,Hintergrund);
   Bildwechsel(35,Hintergrund);  Bildwechsel(36,Hintergrund); Bildwechsel(40,Hintergrund); Bildwechsel(41,Hintergrund);
   Bildwechsel(79,Hintergrund);  Bildwechsel(80,Hintergrund); Bildwechsel(84,Hintergrund); Bildwechsel(85,Hintergrund);
   Bildwechsel(90,Hintergrund);  Bildwechsel(91,Hintergrund); Bildwechsel(95,Hintergrund); Bildwechsel(96,Hintergrund);
 }
 
 function Quadrat()         // und reset
 { var i,j;
   Art="Quadrat"
   for (i=0; i<=50;i++)
       Zugnr[i]=0;
   for (j = 0; j <=6; j++)
      for (i =24 ; i <= 30; i++)
           { if (a[i+11*j] != 1)
             { a[i+11*j] = 1;
               Bildwechsel(i+11*j,Normal);
             }
           }
   nummer=0; first=true; ersterStein=0;
 }

function Achteck()            // und reset
 { Quadrat();
   Art="Achteck"
   a[24]=5; a[25]=5; a[29]=5; a[30]=5;
   a[35]=5; a[41]=5;
   a[79]=5; a[85]=5;
   a[90]=5; a[91]=5; a[95]=5; a[96]=5;
   Bildwechsel(24,Hintergrund);  Bildwechsel(25,Hintergrund); Bildwechsel(29,Hintergrund); Bildwechsel(30,Hintergrund);
   Bildwechsel(35,Hintergrund);  Bildwechsel(41,Hintergrund);
   Bildwechsel(79,Hintergrund);  Bildwechsel(85,Hintergrund);
   Bildwechsel(90,Hintergrund);  Bildwechsel(91,Hintergrund); Bildwechsel(95,Hintergrund); Bildwechsel(96,Hintergrund);
 }

 function loesung1()
{ Kreuz();
  Pruefe(60);
  Zugnr[1]=626160;  Zugnr[2]=837261;  Zugnr[3]=747372;  Zugnr[4]=717273;  Zugnr[5]=526374;  Zugnr[6]=747372;
  Zugnr[7]=617283;  Zugnr[8]=948372;  Zugnr[9]=929394;  Zugnr[10]=395061;  Zugnr[11]=617283;  Zugnr[12]=948372;
  Zugnr[13]=818283;  Zugnr[14]=837261;  Zugnr[15]=697071;  Zugnr[16]=484950;  Zugnr[17]=615039;  Zugnr[18]=716049;
  Zugnr[19]=464748;  Zugnr[20]=685746;  Zugnr[21]=494847;  Zugnr[22]=585960;  Zugnr[23]=464748;  Zugnr[24]=374859;
  Zugnr[25]=596061;  Zugnr[26]=283950;  Zugnr[27]=615039;  Zugnr[28]=262728;  Zugnr[29]=283950;  Zugnr[30]=515049;
  Zugnr[31]=384960;
  alert("Demozüge eingelesen! \nMit Klicken auf 'Zug wieder ausführen' können Sie die Partie abspielen");
}  


function Aufzeichnen()
{ var i;
  F1 = open("","Fenster1","width=150,height=200,scrollbars, screenX=120,screenY=300");
  F1.document.open("text/html");
  F1.document.writeln("<html><head><title></title></head><body><form>");
  F1.document.writeln("<input name=",String(0)," maxlength=7 size=7 readonly  value=",Art,">");
  F1.document.writeln("<input name=",String(1)," maxlength=6 size=6 readonly  value=",ersterStein, ">");
  for (i = 1; i <= nummer; i++)
        F1.document.writeln("<input name=",String(i+1)," maxlength=6 size=6 readonly  value=",Zugnr[i], ">");
  F1.document.writeln("</form></body></html>");
}

function Einlesen()
{   var i;
    UserEingabe = window.prompt("Geben Sie den Dateinamen ein, ohne Extension htm (ev. mit ganzem Pfad)",""); 
    F1= open(UserEingabe+".htm","Fenster1","width=150,height=200,scrollbars, screenX=120,screenY=300,resizable=no");
    Hilf=F1.document.forms[0].elements.length;
    Art=F1.document.forms[0].elements[0].value;
    if (Art=="Kreuz")
      Kreuz();
    if (Art=="Quadrat")
      Quadrat();
    if (Art=="Achteck")
      Achteck();
    ersterStein=Number(F1.document.forms[0].elements[1].value);
    for (i = 0; i <=Hilf-3;i++)  
       Zugnr[i+1]=Number(F1.document.forms[0].elements[i+2].value); 
   F1.close();
   Pruefe(ersterStein);
   alert("Züge eingelesen! \nMit Klicken auf 'Zug wieder ausführen' können Sie die Partie abspielen"); 
}

function info()
{alert("Nachdem das neue Fenster geöffnet ist, lassen Sie sich seinen Quelltext anzeigen (nur im IE: rechte Maustaste!) und speichern Sie ihn unter Ihrem gewählten Dateinamen, aber mit Extension .htm in Ihr Arbeitsverzeichnis");
}

 function loesungQuadrat()
{ Quadrat();
  Pruefe(61);
  Zugnr[1]=636261; Zugnr[2]=606162; Zugnr[3]=837261; Zugnr[4]=747372;  Zugnr[5]=958473;  Zugnr[6]=968574;
  Zugnr[7]=617283; Zugnr[8]=747372; Zugnr[9]=415263; Zugnr[10]=636261;  Zugnr[11]=405162;  Zugnr[12]=495051;
  Zugnr[13]=283950; Zugnr[14]=302928; Zugnr[15]=615039; Zugnr[16]=283950;  Zugnr[17]=837261;  Zugnr[18]=626160;
  Zugnr[19]=515049; Zugnr[20]=818283; Zugnr[21]=948372;  Zugnr[22]=597081;  Zugnr[23]=607182;  Zugnr[24]=938271;
  Zugnr[25]=727170; Zugnr[26]=697071; Zugnr[27]=928170;  Zugnr[28]=918069;  Zugnr[29]=384960;  Zugnr[30]=374859;
  Zugnr[31]=464748; Zugnr[32]=243546; Zugnr[33]=253647; Zugnr[34]=272625; Zugnr[35]=584736; Zugnr[36]=253647;
  Zugnr[37]=605958; Zugnr[38]=586980; Zugnr[39]=717069; Zugnr[40]=686970; Zugnr[41]=907968; Zugnr[42]=576879;
  Zugnr[43]=798081; Zugnr[44]=817059; Zugnr[45]=594837; Zugnr[46]=464748; Zugnr[47]=374859;
  alert("Demozüge eingelesen! \nMit Klicken auf 'Zug wieder ausführen' können Sie die Partie abspielen");
}  

 function loesungAchteck()
{ Achteck();
  Pruefe(74);
  Zugnr[1]=727374;  Zugnr[2]=948372;  Zugnr[3]=717273;  Zugnr[4]=747372;  Zugnr[5]=697071;  Zugnr[6]=928170;
  Zugnr[7]=717069;  Zugnr[8]=686970;  Zugnr[9]=496071;  Zugnr[10]=515049;  Zugnr[11]=283950;  Zugnr[12]=495051;
  Zugnr[13]=525150;  Zugnr[14]=474849;  Zugnr[15]=263748;  Zugnr[16]=494847;  Zugnr[17]=464748;  Zugnr[18]=717273;
  Zugnr[19]=626160;  Zugnr[20]=847362;  Zugnr[21]=636261;  Zugnr[22]=938271;  Zugnr[23]=594837;  Zugnr[24]=575859;
  Zugnr[25]=273849;  Zugnr[26]=363738;  Zugnr[27]=493827;  Zugnr[28]=615039;  Zugnr[29]=403938;  Zugnr[30]=717069;
  Zugnr[31]=806958; Zugnr[32]=273849; Zugnr[33]=496071; Zugnr[34]=585960; Zugnr[35]=716049;
  alert("Demozüge eingelesen! \nMit Klicken auf 'Zug wieder ausführen' können Sie die Partie abspielen");
}  


