// ----- Angleichungen fuer die Parameter var LeerA = LeerX; var LeerB = LeerY; var LeerPosistion = ((LeerY - 1) * Spalten) + (LeerX - 1); var BildAnzahl = BildListe.length; var loaded = 0; var TempListe = new Array(BildAnzahl); var hilf=0; var ausgabe=true; var zugnr=0; var startzeit=new Date(); var jetztzeit=new Date(); var zeita = startzeit.getTime() /1000; var zeite = jetztzeit.getTime() / 1000; var zeitdif=Math.floor(zeite-zeita); // Pruefen ob die Angaben in der BildListe mit den Spalten und zeilen uebereinstimmt if (BildAnzahl != (Spalten * Zeilen)) { alert("Die Anzahl der Spalten und Zeilen stimmt nicht mit der Anzahl der Bilder in der BildListe ueberein!"); } // ----- Funktionen // SpielAnleitung function Anleitung(){ var winanl; winanl=window.open("","Spielanleitung","width=300,height=230,resizable=yes"); winanl.document.write("Spielanleitung - Schiebepuzzle
");
winanl.document.write("Das Puzzle soll durch waagrechtes und senkrechtes Verschieben des leeren Feldes gelöst werden. ");
winanl.document.write("Die neue Position des leeren Feldes wird durch einfachen Mausclick bestimmt.
");
winanl.document.write("Es können auch mehrere Teile gleichzeitig (in eine Richtung) verschoben werden. ");
winanl.document.write("
");
winanl.document.write("Viel Spaß
"); winanl.document.bgColor="#00FFFF"; } // Initialisierung des Puzzles function Laden() { loaded = 1; NeuStart(); } // Karte Verschieben function Schiebe( xpos, ypos ) { // Abbruch, wenn das LeerBild angeklickt wurde if (( xpos == LeerA ) && ( ypos == LeerB )) return; // Pruefen, ob das Leer-Bild in der selben Zeile liegt if (ypos == LeerB) { if (ZugZeigen == true){ zugnr=zugnr+1; document.ZugAnzeige.ZugZaehler.value=zugnr; } Leer = ((LeerB-1) * Spalten) + LeerA - 1; // Liegt es Links, dann nach rechts schieben if (LeerA < xpos) { while (LeerA != xpos) { TempListe[Leer] = TempListe[Leer+1]; TempListe[Leer+1] = BildListe[LeerPosistion]; document.images[Leer].src = TempListe[Leer] ; LeerA += 1; Leer += 1; document.images[Leer].src = TempListe[Leer] ; } } // Liegt es Rechts dann nach links schieben else { while (LeerA != xpos) { TempListe[Leer] = TempListe[Leer-1]; TempListe[Leer-1] = BildListe[LeerPosistion]; document.images[Leer].src = TempListe[Leer] ; LeerA -= 1; Leer -= 1; document.images[Leer].src = TempListe[Leer] ; } } } else { // Pruefen, ob die Karte in der selben Spalte mit dem LeerBild liegt if (xpos == LeerA) { if (ZugZeigen == true){ zugnr=zugnr+1; document.ZugAnzeige.ZugZaehler.value=zugnr; } Leer = ((LeerB-1) * Spalten) + LeerA - 1; // Liegt sie darunter, dann nch oben schieben if (LeerB < ypos) { while (LeerB != ypos) { TempListe[Leer] = TempListe[Leer+Spalten]; TempListe[Leer+Spalten] = BildListe[LeerPosistion]; document.images[Leer].src = TempListe[Leer] ; LeerB += 1; Leer += Spalten; document.images[Leer].src = TempListe[Leer] ; } } // liegt sie darueber, dann nach unten schieben else { while (LeerB != ypos) { TempListe[Leer] = TempListe[(Leer-Spalten)]; TempListe[Leer-Spalten] = BildListe[LeerPosistion]; document.images[Leer].src = TempListe[Leer] ; LeerB -= 1; Leer -= Spalten; document.images[Leer].src = TempListe[Leer] ; } } } } } // Die BildListe in die temporaere Liste kopieren function ZurueckSetzen() { for (var i = 0; i < BildAnzahl; i++) { TempListe[i] = BildListe[i]; } } // Zeit anzeigen function ZeitAnzeigen(){ jetztzeit=new Date(); zeite=jetztzeit.getTime() / 1000; zeitdif=Math.floor(zeite-zeita); document.ZugAnzeige.SpielZeit.value=zeitdif; window.setTimeout('ZeitAnzeigen()',500); } // Neustart-Routine function NeuStart() { // Laden der Bildliste in die Dokumentbilder for (var i = 0; i < BildAnzahl; i++){ document.images[i].src = BildListe[i]; TempListe[i] = BildListe[i]; } // ZurueckSetzen(); LeerA = LeerX; LeerB = LeerY; if (ZeitZeigen == true){ startzeit=new Date(); zeita=startzeit.getTime() / 1000; zeitdif=0; document.ZugAnzeige.SpielZeit.value=zeitdif; window.setTimeout('ZeitAnzeigen()',500); } if (ZugZeigen == true){ zugnr=0; document.ZugAnzeige.ZugZaehler.value=zugnr; } } ZurueckSetzen(); function Mischen() { // Abbruch, wenn das Spiel nicht geladen wurde if (loaded == 0) { return; } var Temp; for (var MischVorgang = 0; MischVorgang < MaxMischen ; MischVorgang++) { // Mal horizontal ein wenig herumschieben Temp = LeerA; while ( Temp == LeerA) { Temp = (random (Spalten)) + 1; } Schiebe (Temp, LeerB); // und mal vertikal ein wenig schieben Temp = LeerB; while (Temp == LeerB) { Temp = (random (Zeilen)) + 1; } Schiebe (LeerA, Temp); } if (ZeitZeigen == true){ startzeit=new Date(); zeita=startzeit.getTime() / 1000; zeitdif=0; document.ZugAnzeige.SpielZeit.value=zeitdif; window.setTimeout('ZeitAnzeigen()',500); } if (ZugZeigen == true){ zugnr=0; document.ZugAnzeige.ZugZaehler.value=zugnr; } } function ZugZeitAnzeige(){ document.write('