Spiel: Mühle

Infos zu Spielen, Bots und Tools.
1. FC Keller
Moderator
Beiträge: 866
Registriert: 04.07.2004, 17:10
Wohnort: heimat:// Thüringen.Deutschland.eu/ Zeulenroda
Kontaktdaten:

Spiel: Mühle

Ungelesener Beitrag von 1. FC Keller » 12.11.2009, 21:17

Nachdem es nun über ein Jahr auf Eis lag habe ich letzte Woche mein Mühle-Spiel fertigstellen können.

Äußerliches / Funktionsweise
Um ein Spiel zu starten muss muss man den Befehl

Code: Alles auswählen

/muehle USER
absenden. So erscheinen beim eingeladenen User 2 Buttons, mit denen er das Spiel entweder annehmen oder ablehnen kann.
Nimmt er das Spiel an, so wird bei beiden unten rechts in der Onlineliste ein kleines Mühle-Spielfeld eingeblendet.
Zunächst setzt jeder Spieler abwechselnd insgesamt je 9 Steine frei auf die Punkte im Spielfeld. Anschließend wird abwechselnd ein eigener Stein entlang einer Linie gesetzt. Eine Mühle hat man wenn man 3 eigene Steine entlang einer Linie auf dem Spielfeld nebeneinander liegen hat. Wenn man eine Mühle hat darf man einen beliebigen gegnerischen Stein schlagen, der sich nicht selbst in einer Mühle befindet (wenn sich alle Steine des Gegners in Mühlen befinden kann ein beliebiger geschlagen werden). Wenn ein Spieler nur noch 3 Steine hat darf er mit seinen Steinen frei über das ganze Spielfeld springen. Wenn ihm ein weiterer Stein abgenommen wird, und er damit natürlich keine Mühle mehr bekommen kann, hat er das Spiel verloren. Außerdem hat man verloren wenn man keinen Stein mehr bewegen kann.


Voraussetzungen
Wie immer ist die Grundscriptsammlung sowie ein Webspace für die JS-Datei und die Bilder notwendig und das Nickmenü hilfreich.

Einbau

Folgendermaßen könnt ihr euch das Script selbst anlegen, anpassen und hosten:

Den folgenden Code müsst ihr als JS-Datei auf den Webspace hochladen:

Code: Alles auswählen

var muehleBilderPfad = "http://www.beispiel.de/muehle/";
var muehleFieldColors = ["#000","#555"];
var muehleAbsolutePosition = false;
var muehlePlayerNr = 2;
var muehlePlayer = new Array(2);
var muehleGame;
var muehleGameTmp;
var muehleVorbei = true;
var muehleBilder=[0,"playerb","playera"];
var muehleZuege = 0;
var muehlePlayerFrei = new Array(2);
muehlePlayerFrei[1] = true;
muehlePlayerFrei[2] = false;
var muehleTmpPlayer = new Array(2);
muehleTmpPlayer[1] = "";
muehleTmpPlayer[2] = "";
var muehleImPlayer;
var muehleMarkiert=[-1,-1,-1,-1];
var testAusgabe = false;

function muehleBtnClick(y, x){
  prd=parent.rightFrame.document;
  
  var tmpSendeBefehl=false;
  //weisse Felder ignorieren und abbrechen wenn man nicht am Zug ist
  if((y==0||y==6)&&(x==1||x==2||x==4||x==5) || (y==1||y==5)&&(x==0||x==2||x==4||x==6) || (y==2||y==4)&&(x==0||x==1||x==5||x==6) || y==3&&x==3)
    return;
  if(muehlePlayerNr!=muehleImPlayer){
    alert("du bist nicht dran!");
    return;
  }
  if(muehleZuege<18 && muehleMarkiert[0] == -1 && muehleMarkiert[1] == -1){ //Steine setzen
    if(muehleGame[y][x]!=0 && muehleMarkiert[0] == -1 && muehleMarkiert[1] == -1){
      alert("Spielfeld bereits besetzt.");
      return;
    }
    else if(muehleGueltigerZug(-1,-1,y,x) == 2){
      //Muehle! Stein aussuchen!
      alert("Muehle! Waehle nun einen gegnerischen Stein, welcher geschlagen werden soll.");
      muehleMarkiert=[y,x,-1,-1];
      //prd.getElementsByName("muehleSpalte"+x)[y].parentNode.style.backgroundColor = muehleFieldColors[1];
      prd.getElementsByName("muehleSpalte"+x)[y].src = muehleBilderPfad+muehleBilder[muehlePlayerNr]+".gif";
    }
    else{
      sendeText("/muehle setzen, "+muehlePlayer[muehlePlayerNr==1?2:1]+", "+y+", "+x)
    }
  }
  else if(muehleZuege>=18 && muehleMarkiert[2]==-1 && muehleMarkiert[3]==-1){ //schieben bzw. springen
    if(muehleMarkiert[0] == -1 && muehleMarkiert[1] == -1){ //stein zum schieben markieren
      if(muehleGame[y][x]==muehleImPlayer){
        muehleMarkiert=[y,x,-1,-1];
        prd.getElementsByName("muehleSpalte"+x)[y].parentNode.style.backgroundColor = muehleFieldColors[1];
      }
      else alert("Bitte waehle einen eigenen Spielstein aus!");
    }
    else if(muehleMarkiert[2]==-1 && muehleMarkiert[3]==-1){ //stein schieben
      if(muehleMarkiert[0]==y && muehleMarkiert[1] == x){
        muehleMarkiert=[-1,-1,-1,-1];
        prd.getElementsByName("muehleSpalte"+x)[y].parentNode.style.backgroundColor = muehleFieldColors[0];
      }
      else if(muehleGame[y][x] != 0){
        alert("Dieses Feld ist nicht frei.");
      }
      else{
        w=muehleMarkiert[0];
        v=muehleMarkiert[1];
//        if(muehleCount(muehleImPlayer)!=3){
        if(muehleGueltigerZug(w,v,y,x) == 1){
          sendeText("/muehle setzen, "+muehlePlayer[muehleImPlayer==1?2:1]+", "+w+", "+v+", "+y+", "+x);
          prd.getElementsByName("muehleSpalte"+v)[w].parentNode.style.backgroundColor = muehleFieldColors[0];
          muehleMarkiert=[-1,-1,-1,-1];
        }
        else if(muehleGueltigerZug(w,v,y,x) == 2){
          prd.getElementsByName("muehleSpalte"+x)[y].parentNode.style.backgroundColor = muehleFieldColors[1];
          muehleMarkiert[2] = y;
          muehleMarkiert[3] = x;
          alert("Muehle! Waehle nun einen gegnerischen Stein aus, der geschlagen werden soll.");
        }
        else{
          alert("Das Feld muss an den Stein angrenzen, sofern man mehr als 3 Steine hat.");
        }
/*        }
        else if(muehleGame[y][x]==0){
          sendeText("/muehle setzen, "+muehlePlayer[muehleImPlayer==1?2:1]+", "+w+", "+v+", "+y+", "+x);
          prd.getElementsByName("muehleSpalte"+x)[y].parentNode.style.backgroundColor = muehleFieldColors[0];
        }*/ //ueberfluessig, da dies bei muehleGueltigerZug mit geprueft wird.
      }
    }
  }
  else{ //3. zug: stein schlagen!
    tmp=muehleImPlayer==1?2:1;
    chk=false;
    muehleGameTmp=clone(muehleGame);
    if(muehleGame[y][x] == tmp){
      for(i=0;i<7;i++)for(j=0;j<7;j++){
	if(muehleGame[j][i]==tmp && !isMuehle(j,i,tmp))chk=true;//es gibt einen Stein der nicht in einer Muehle ist!
      }
      //wenn es einen Stein ausserhalb einer Muehle gibt darf keiner aus einer Muehle geschlagen werden!
      if(chk && isMuehle(y,x,tmp))alert("Du musst einen Stein auswaehlen der sich nicht in einer Muehle befindet!");
      else{
	//gegnerischen Stein schlagen
	markierte=", "+muehleMarkiert[0]+", "+muehleMarkiert[1];
	if(muehleZuege>=18)markierte+=", "+muehleMarkiert[2]+", "+muehleMarkiert[3];
	//prd.getElementsByName("muehleSpalte"+muehleMarkiert[1])[muehleMarkiert[0]].parentNode.style.backgroundColor = muehleFieldColors[0];
	sendeText("/muehle setzen, "+muehlePlayer[muehlePlayerNr==1?2:1]+markierte+", "+y+", "+x);
	muehleMarkiert=[-1,-1,-1,-1];
      }
    }
    else alert("Waehle einen gegnerischen Stein aus! "+muehleGame[y][x]+" "+muehleImPlayer);
  }
}

function muehleGueltigerZug(w, v, y, x){
  var chk=false;
  if(w==-1 && v==-1 ||
    muehleGame[y][x]==0 &&
      (w==0&&v==0&&y==0&&x==3 || w==0&&v==0&&y==3&&x==0 ||
      w==0&&v==3&&y==0&&x==0 || w==0&&v==3&&y==1&&x==3 || w==0&&v==3&&y==0&&x==6 ||
      w==0&&v==6&&y==0&&x==3 || w==0&&v==6&&y==3&&x==6 ||
      w==1&&v==1&&y==3&&x==1 || w==1&&v==1&&y==1&&x==3 ||
      w==1&&v==3&&y==1&&x==1 || w==1&&v==3&&y==0&&x==3 || w==1&&v==3&&y==2&&x==3 || w==1&&v==3&&y==1&&x==5 ||
      w==1&&v==5&&y==1&&x==3 || w==1&&v==5&&y==3&&x==5 ||
      w==2&&v==2&&y==3&&x==2 || w==2&&v==2&&y==2&&x==3 ||
      w==2&&v==3&&y==2&&x==2 || w==2&&v==3&&y==1&&x==3 || w==2&&v==3&&y==2&&x==4 ||
      w==2&&v==4&&y==2&&x==3 || w==2&&v==4&&y==3&&x==4 ||
      w==3&&v==0&&y==0&&x==0 || w==3&&v==0&&y==6&&x==3 || w==3&&v==0&&y==3&&x==1 ||
      w==3&&v==1&&y==3&&x==0 || w==3&&v==1&&y==1&&x==1 || w==3&&v==1&&y==5&&x==1 || w==3&&v==1&&y==3&&x==2 ||
      w==3&&v==2&&y==3&&x==1 || w==3&&v==2&&y==2&&x==2 || w==3&&v==2&&y==4&&x==2 ||
      w==3&&v==4&&y==2&&x==4 || w==3&&v==4&&y==4&&x==4 || w==3&&v==4&&y==3&&x==5 ||
      w==3&&v==5&&y==3&&x==4 || w==3&&v==5&&y==3&&x==6 || w==3&&v==5&&y==1&&x==5 || w==3&&v==5&&y==5&&x==5 ||
      w==3&&v==6&&y==3&&x==5 || w==3&&v==6&&y==0&&x==6 || w==3&&v==6&&y==6&&x==6 ||
      w==4&&v==2&&y==3&&x==2 || w==4&&v==2&&y==4&&x==3 ||
      w==4&&v==3&&y==4&&x==2 || w==4&&v==3&&y==5&&x==3 || w==4&&v==3&&y==4&&x==4 ||
      w==4&&v==4&&y==4&&x==3 || w==4&&v==4&&y==3&&x==4 ||
      w==5&&v==1&&y==3&&x==1 || w==5&&v==1&&y==5&&x==3 ||
      w==5&&v==3&&y==5&&x==1 || w==5&&v==3&&y==4&&x==3 || w==5&&v==3&&y==6&&x==3 || w==5&&v==3&&y==5&&x==5 ||
      w==5&&v==5&&y==5&&x==3 || w==5&&v==5&&y==3&&x==5 ||
      w==6&&v==0&&y==3&&x==0 || w==6&&v==0&&y==6&&x==3 ||
      w==6&&v==3&&y==6&&x==0 || w==6&&v==3&&y==5&&x==3 || w==6&&v==3&&y==6&&x==6 ||
      w==6&&v==6&&y==6&&x==3 || w==6&&v==6&&y==3&&x==6 ||
      muehleCount()==3)){
    chk=true;
    muehleGameTmp=clone(muehleGame);
    if(w>-1 && x>-1)muehleGameTmp[w][v]=0;
    muehleGameTmp[y][x]=muehlePlayerNr;
  }
  if(chk){
    if(isMuehle(y,x,muehlePlayerNr)){ //Muehle!
      return 2;
    }
    else return 1; //gueltiger Zug
  }
  else return 0; //ungueltiger Zug
}
function isMuehle(y,x,z){
  a=muehleGameTmp;
  if((x==0&&(y==0||y==3||y==6)&&a[0][0]==z&&a[3][0]==z&&a[6][0]==z) ||
      (x==1&&(y==1||y==3||y==5)&&a[1][1]==z&&a[3][1]==z&&a[5][1]==z) ||
      (x==2&&(y==2||y==3||y==4)&&a[2][2]==z&&a[3][2]==z&&a[4][2]==z) ||
      (x==3&&(y==0||y==1||y==2)&&a[0][3]==z&&a[1][3]==z&&a[2][3]==z) ||
      (x==3&&(y==4||y==5||y==6)&&a[4][3]==z&&a[5][3]==z&&a[6][3]==z) ||
      (x==4&&(y==2||y==3||y==4)&&a[2][4]==z&&a[3][4]==z&&a[4][4]==z) ||
      (x==5&&(y==1||y==3||y==5)&&a[1][5]==z&&a[3][5]==z&&a[5][5]==z) ||
      (x==6&&(y==0||y==3||y==6)&&a[0][6]==z&&a[3][6]==z&&a[6][6]==z) ||
      (y==0&&(x==0||x==3||x==6)&&a[0][0]==z&&a[0][3]==z&&a[0][6]==z) ||
      (y==1&&(x==1||x==3||x==5)&&a[1][1]==z&&a[1][3]==z&&a[1][5]==z) ||
      (y==2&&(x==2||x==3||x==4)&&a[2][2]==z&&a[2][3]==z&&a[2][4]==z) ||
      (y==3&&(x==0||x==1||x==2)&&a[3][0]==z&&a[3][1]==z&&a[3][2]==z) ||
      (y==3&&(x==4||x==5||x==6)&&a[3][4]==z&&a[3][5]==z&&a[3][6]==z) ||
      (y==4&&(x==2||x==3||x==4)&&a[4][2]==z&&a[4][3]==z&&a[4][4]==z) ||
      (y==5&&(x==1||x==3||x==5)&&a[5][1]==z&&a[5][3]==z&&a[5][5]==z) ||
      (y==6&&(x==0||x==3||x==6)&&a[6][0]==z&&a[6][3]==z&&a[6][6]==z)){
    return true;
  }
  else return false;
}
function muehleCount(){
  var j;
  var c=0;
  for(var i=0;i<7;i++){
    for(j=0;j<7;j++){
      if(muehleGame[i][j]==muehlePlayerNr)c++;
    }
  }
  return c;
}
function muehleBefehlsAuswertung(eingabe, sender){
  if(strip_tags(eingabe)==strip_tags(sender)){
    if(strip_tags(sender)==myNick)
      document.write("Mühle Fehler: sich selbst einladen ist nicht möglich");
    else
      document.getElementsByTagName("table")[document.getElementsByTagName("table").length-1].style.display = "none";
    return;
  }
  a = strip_tags(eingabe).split(", ");
  b = strip_tags(sender);
  if(strip_tags(a[0]).toLowerCase()=="regeln"){
    if(b.toLowerCase() == myNick.toLowerCase()){
     document.write("<b><u>Regeln für Muehle</u></b><br>Zunächst setzt jeder Spieler abwechselnd insgesamt je 9 Steine frei auf die Punkte im Spielfeld. Anschließend wird abwechselnd ein eigener Stein entlang einer Linie gesetzt. Eine Mühle hat man wenn man 3 eigene Steine entlang einer Linie auf dem Spielfeld nebeneinander liegen hat. Wenn man eine Mühle hat darf man einen beliebigen gegnerischen Stein schlagen, der sich nicht selbst in einer Mühle befindet (wenn sich alle Steine des Gegners in Mühlen befinden kann ein beliebiger geschlagen werden). Wenn ein Spieler nur noch 3 Steine hat darf er mit seinen Steinen frei über das ganze Spielfeld springen. Wenn ihm ein weiterer Stein abgenommen wird, und er damit natürlich keine Mühle mehr bekommen kann, hat er das Spiel verloren. Außerdem hat man verloren wenn man keinen Stein mehr bewegen kann.");
    }
    else{
      document.getElementsByTagName("table")[document.getElementsByTagName("table").length-1].style.display = "none";
    }
  }
  else if(a.length==1){
    muehleEinladung(sender, eingabe);
  }
  if(a[0]=="imFree"){
    muehleFrei(sender, a[1], a[2])
  }
  if(a[0]=="setzen"){
    gegner=a[1];
    setzer=strip_tags(b);
    for(i=0;i<2;i++)
      a.shift();
    muehleSetzen(gegner, setzer, a);
    document.getElementsByTagName("table")[document.getElementsByTagName("table").length-1].style.display = "none";
  }
}

function muehleSwitchPlayer(){
  muehlePlayerNr = (muehlePlayerNr%2)+1;
  parent.rightFrame.document.getElementById("amZug").firstChild.nodeValue  = muehlePlayer[muehlePlayerNr];
}
function muehleSetzen(gegner, setzer, zuegeArray){
  var rd=parent.rightFrame.document;
  if((myNick != muehlePlayer[1] && myNick != muehlePlayer[2]) || (gegner != muehlePlayer[1] && gegner != muehlePlayer[2]) || (strip_tags(setzer) !=  muehlePlayer[1] && strip_tags(setzer) != muehlePlayer[2])){
    muehleTmpGame=[];
    return;
  }
  muehleTmpGame = clone(muehleGame);
  if(muehleZuege<18){
    y=parseInt(zuegeArray[0]);
    x=parseInt(zuegeArray[1]);
    if((y==0||y==6)&&(x==1||x==2||x==4||x==5) || (y==1||y==5)&&(x==0||x==2||x==4||x==6) || (y==2||y==4)&&(x==0||x==1||x==5||x==6) || y==3&&x==3)
      return; // freie felder bzw. linien, keine knotenpunkte auf denen steine sitzen koennen
    if(muehleGame[y][x] != 0 || setzer != muehlePlayer[muehlePlayerNr])
      return; // ungueltiger Zug
    muehleGame[y][x]=muehlePlayerNr;
    rd.getElementsByName("muehleSpalte"+x)[y].src=muehleBilderPfad+muehleBilder[muehlePlayerNr]+".gif";
    if(zuegeArray.length==4){//muehle!
      my=parseInt(zuegeArray[2]);
      mx=parseInt(zuegeArray[3]);
      muehleGame[my][mx]=0;
      rd.getElementsByName("muehleSpalte"+mx)[my].src=muehleBilderPfad+"blank.gif";
    }
  }
  else{
    w=parseInt(zuegeArray[0]); //ref zeile
    v=parseInt(zuegeArray[1]); //ref spalte
    y=parseInt(zuegeArray[2]); //ziel zeile
    x=parseInt(zuegeArray[3]); //ziel spalte
    guelt=muehleGueltigerZug(w,v,y,x);
    if(guelt>=1){
      muehleGame[w][v]=0;
      muehleGame[y][x]=muehlePlayerNr;
      rd.getElementsByName("muehleSpalte"+v)[w].src=muehleBilderPfad+"blank.gif";
      rd.getElementsByName("muehleSpalte"+x)[y].src=muehleBilderPfad+muehleBilder[muehlePlayerNr]+".gif";
      rd.getElementsByName("muehleSpalte"+v)[w].parentNode.style.backgroundColor = muehleFieldColors[0];
      rd.getElementsByName("muehleSpalte"+x)[y].parentNode.style.backgroundColor = muehleFieldColors[0];
    }
    if(guelt==2 && zuegeArray.length==6){//muehle!
      my=parseInt(zuegeArray[4]);
      mx=parseInt(zuegeArray[5]);
      muehleGame[my][mx]=0;
      rd.getElementsByName("muehleSpalte"+mx)[my].src=muehleBilderPfad+"blank.gif";
    }
    muehleTmpGame=[];
    muehleCheckIfWon();
  }
  muehleZuege++;
  muehleSwitchPlayer();
}
function muehleCheckIfWon(){
  var steinCounter=[0,0,0];
  for(k=0;k<7;k++){
    for(l=0;l<7;l++){
      //console.log(l+" "+k);
      m = muehleGame[k][l];
      if(m > 0)
	steinCounter[m]++;
    }
  }
  if(steinCounter[1] <= 2 || steinCounter[2] <= 2){
    alert(muehlePlayer[steinCounter[1]<=2?2:1]+" hat das Muehle-Spiel gewonnen.");
    parent.rightFrame.document.body.removeChild(parent.rightFrame.document.getElementById("muehle"));
  }
}
function muehleZeichneTabelle(){
  ie=(document.all&&!window.innerWidth && navigator.userAgent.toLowerCase().indexOf("msie") != -1)?1:0;
  r = parent.rightFrame;
  muehleTabelle = r.document.createElement("table");
  muehleTabelle.style.borderCollapse = "collapse";
  muehleTabelle.style.borderSpacing = "0px";
  muehleTbody = r.document.createElement("tbody");
  for(i=0;i<7;i++){
    muehleTr = r.document.createElement("tr");
    for(j=0;j<7;j++){
      muehleTd = r.document.createElement("td");
      muehleTd.style.border = "none";
	  muehleTd.style.backgroundColor = muehleFieldColors[0];
	  muehleTd.style.margin = "0px";
	  muehleTd.style.padding = "0px";
	  muehleTd.style.width = "18px";
	  muehleTd.style.height = "18px";
	  muehleTd.style.textAlign = "center";
	  muehleTd.style.verticalAlign = "middle";
	  muehleTd.style.backgroundImage = "url("+muehleBilderPfad+
        (i==0&&j==0||i==1&&j==1||i==2&&j==2?"ol":
        (i==6&&j==0||i==5&&j==1||i==4&&j==2?"ul":
        (i==0&&j==6||i==1&&j==5||i==2&&j==4?"or":
        (i==6&&j==6||i==5&&j==5||i==4&&j==4?"ur":
        ((i==0||i==4)&&j==3?"o":
        ((i==2||i==6)&&j==3?"u":
        (i==3&&(j==0||j==4)?"l":
        (i==3&&(j==2||j==6)?"r":
        (i==3&&(j==1||j==5)||(i==1||i==5)&&j==3?"kreuz":
        ((i==0||i==6)&&(j==1||j==2||j==4||j==5)||(i==1||i==5)&&(j==2||j==4)?"waagerecht":
        (j==0||j==6)&&(i==1||i==2||i==4||i==5)||(j==1||j==5)&&(i==2||i==4)?"senkrecht":
        "transparent"))))))))))+".gif)";
      if(!ie){
        muehleTdImg = new Image();
        muehleTdImg.src=muehleBilderPfad+"blank.gif";
        muehleTdImg.style.height = "14px";
        muehleTdImg.style.width = "14px";
        muehleTdImg.name = "muehleSpalte"+j;
        eval("muehleTdImg.onclick = function(e){parent.mainframe.muehleBtnClick("+i+", "+j+")}");
        muehleTd.appendChild(muehleTdImg);
      }
      else{
        muehleTdImg = "<img src='"+muehleBilderPfad+"blank.gif' style='hight:14px;width:14px;' onclick='parent.mainframe.muehleBtnClick("+i+", "+j+")' name='muehleSpalte"+j+"' />";
        muehleTd.innerHTML += muehleTdImg;
      }
      muehleTr.appendChild(muehleTd);
    }
    muehleTbody.appendChild(muehleTr);
  }
  muehleTabelle.appendChild(muehleTbody);
  muehleSpielfeld = r.document.createElement("p");
  muehleSpielfeld.style.border = "#888 solid 1px";
  muehleSpielfeld.setAttribute("id", "muehle");
  muehleClose = r.document.createElement("div");
  muehleClose.style.marginBottom="0px";
  muehleClose.style.textAlign="right";
  muehleCloseLink = r.document.createElement("a");
  muehleCloseLink.setAttribute("href", "javascript:void(document.body.removeChild(document.getElementById('muehle')));void(pm=parent.mainframe);void(pm.sendeText('/f '+pm.muehlePlayer[(pm.muehleImPlayer==1?2:1)]+' muehle-Automessage: ich habe das muehle-Spiel verlassen.'));");
  muehleCloseLink.appendChild(r.document.createTextNode("X"));
  muehleClose.appendChild(muehleCloseLink);
  muehleSpielfeld.appendChild(muehleClose);
  muehleSpielfeld.appendChild(muehleTabelle);
  if(muehleAbsolutePosition){
    muehleSpielfeld.style.position = "absolute";
    muehleSpielfeld.style.bottom = "0px";
    muehleSpielfeld.style.right = "0px";
  }
  muehleNachTbl = r.document.createElement("span");
  muehleNachTbl.appendChild(r.document.createTextNode("Am Zug: "));
  muehleAmZug = r.document.createElement("span");
  muehleAmZug.setAttribute("id", "amZug");
  muehleAmZug.appendChild(r.document.createTextNode(muehlePlayer[2]));
  muehleNachTbl.appendChild(muehleAmZug);
  muehleSpielfeld.appendChild(muehleNachTbl);
  if(r.document.getElementById("muehle"))
    r.document.body.removeChild(r.document.getElementById("muehle"));
  r.document.body.appendChild(muehleSpielfeld);
}
function muehleEinladung(einlader, eingeladener){
  einlader = strip_tags(einlader);
  if(myNick == einlader || myNick.toLowerCase() == strip_tags(eingeladener).toLowerCase()){
    muehleTmpPlayer[1] = einlader;
    muehleTmpPlayer[2] = strip_tags(eingeladener);
    muehlePlayerFrei[2] = false;
    if(myNick.toLowerCase()==strip_tags(eingeladener).toLowerCase()){
      document.write("lädt dich auf eine Runde Mühle ein. <a href='#' onclick='sendeText(\"/muehle Regeln\")'>Regeln anzeigen</a><p style='text-align:right;'><button onclick='muehleElBtnsDeakt(this); sendeText(\"/muehle imFree, "+muehleTmpPlayer[1]+", true\")'>annehmen</button><button onclick='muehleElBtnsDeakt(this); sendeText(\"/muehle imFree, "+muehleTmpPlayer[1]+", false\")'>ablehnen</button></p>");
    }
    else
      document.write("lädt "+eingeladener+" auf eine Runde Mühle ein.");
  }
  else
    document.write("lädt "+eingeladener+" auf eine Runde Mühle ein.");
  if((einlader==muehlePlayer[1] || einlader == muehlePlayer[2]) && !muehleVorbei){
    muehleVorbei = true;
    document.write(" Er/Sie beendet damit das derzeitige Spiel.");
    rd=parent.rightFrame.document;
    if(rd.getElementById("muehle"))
      rd.body.removeChild(rd.getElementById("muehle"));
  }
}
function muehleElBtnsDeakt(objBtn){
  for(i in objBtn.parentNode.getElementsByTagName('button')){
    objBtn.parentNode.getElementsByTagName('button')[i].disabled=true;
  }
}
function muehleFrei(freeUser, einlader, isFree){
  if(strip_tags(freeUser)==myNick)
    muehleVorbei = true;
  if(!(myNick == einlader || myNick == muehleTmpPlayer[2])){
    document.write((isFree=="true")?"nimmt die Mühle-Einladung an.":"lehnt die Mühle-Einladung ab.");
    return;
  }
  if(isFree=="false")
    document.write("lehnt die Mühle-Einladung ab.");
  //Meldung fuer anderen Spieler des vorherigen Spieles falls dieses noch nicht beendet war
  if(!muehleVorbei && isFree=="true"){
    document.write(" nimmt die Einladung an und verlässt damit das bisherige Spiel.");
    rd=parent.rightFrame.document;
    if(rd.getElementById("muehle"))
      rd.body.removeChild(rd.getElementById("muehle"));
    return;
  }
  if(strip_tags(freeUser) == muehleTmpPlayer[2] && isFree=="true"){
    muehlePlayerFrei[2] = true;
    document.write(" nimmt die Einladung an.");
  }
  if(muehlePlayerFrei[1] && muehlePlayerFrei[2])
    starteMuehle();
}
function starteMuehle(){
  muehlePlayer = muehleTmpPlayer;
  muehleTmpPlayer = new Array();
  muehleTmpPlayer[1]=muehleTmpPlayer[2]="";
  muehlePlayerNr = 2;
  muehleVorbei = false;
  muehleImPlayer = (myNick==muehlePlayer[1])?1:2;
  muehleGame = new Array(8);
  
  muehleZeichneTabelle();
  for(i=0; i < 7; i++){
    muehleGame[i]=[0,0,0,0,0,0,0];
  }
}
//Quelle: http://javascript.geniusbug.com/index.php?action=show&name=clone
function clone(myObj){
  if(typeof(myObj) != 'object') return myObj;
  if(myObj == null) return myObj;
  var myNewObj = new Object();
  for(var i in myObj)
    myNewObj[i] = clone(myObj[i]);
  return myNewObj;
}
Anzupassen ist lediglich folgendes in der ersten Codezeile:

Code: Alles auswählen

var muehleBilderPfad = "http://www.beispiel.de/muehle/";
Hier bitte das Verzeichnis angeben, in dem ihr alle Bilder hochladet, die hier gebraucht werden.
Diese sind: playera.gif, playerb.gif, blank.gif und die Spielfeld-Teile ol.gif, waagerecht.gif, o.gif, or.gif, senkrecht.gif, kreuz.gif, l.gif, r.gif, ul.gif, ur.gif, u.gif

Die folgenden 2 Einstellungen sind optional.

In der 2. Zeile steht folgendes:

Code: Alles auswählen

var muehleFieldColors = ["#000","#555"];
Die erste Farbe wird als Standard-Hintergrund verwendet und die zweite markiert einzelne Stein-Bewegungen vor dem Absenden

In der 3. seht ihr:

Code: Alles auswählen

var muehleAbsolutePosition = true;
Dadurch wird eingestellt ob das Spielfeld in der Onlineliste unten rechts (und ggf. Nick-Überlappend) oder oberhalb von "Derzeit im Raum" angezeigt werden soll. Standard (true) bedeutet unten. Wenn es oben sein soll ändert es in false:

Code: Alles auswählen

var muehleAbsolutePosition = false;
Um den Code auch im Chat einzubinden müsst ihr den folgenden Code mit angepasster URL der js-Datei einfügen:

Code: Alles auswählen

<script type="text/javascript" src="http://www.deineDomain.de/muehle.js"></script>
Weiterhin muss noch ein Chatbefehl im Admin-Menü angelegt werden. Der Name muss, anders als bei anderen Scripts exakt so
eingehalten werden.

/muehle

Code: Alles auswählen

<script type=text/javascript>if(parent.info){muehleBefehlsAuswertung('%user%','%me%');}else{document.write('spielt mit einem anderen Chatter M&uuml;hle')}</script>
Moni hat wiedermal Grafiken in unterschiedlichen Farben für euch erstellt.

Benutzeravatar
ZischDings
Moderator
Beiträge: 672
Registriert: 22.12.2004, 16:01
Kontaktdaten:

Grafiken für Müle

Ungelesener Beitrag von ZischDings » 12.11.2009, 21:27

Klickt auf die Spielfelder um die rar-Dateien runterzuladen. Entpackt sie und ladet alle Dateien daraus auf eueren Webspace in den Ordner, den ihr im Script angegeben habt.
BildBildBildBildBildBildBild
Bild
BildBildBildBildBildBildBildBild

Spielsteine - als playera.gif und playerb.gif in den gleichen Ordner wie die Spielfeld-Grafiken speichern.
BildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBild

Benutzeravatar
hamigra
Beiträge: 567
Registriert: 31.08.2006, 16:02
Wohnort: Werdau
Kontaktdaten:

Re: Spiel: Mühle

Ungelesener Beitrag von hamigra » 12.11.2009, 22:15

GEIL !!! Ich hatte ja schon die Ehre zu testen - perfekt!!!
edit:erledigt :wink:
Zuletzt geändert von hamigra am 12.11.2009, 22:22, insgesamt 2-mal geändert.

1. FC Keller
Moderator
Beiträge: 866
Registriert: 04.07.2004, 17:10
Wohnort: heimat:// Thüringen.Deutschland.eu/ Zeulenroda
Kontaktdaten:

Re: Spiel: Mühle

Ungelesener Beitrag von 1. FC Keller » 12.11.2009, 22:18

^^ mist kam mein copy+paste doch wieder raus ^^

danke für den hinweis. habs editiert.

Maxs
Moderator
Beiträge: 551
Registriert: 09.10.2008, 18:21
Kontaktdaten:

Re: Spiel: Mühle

Ungelesener Beitrag von Maxs » 13.11.2009, 14:46

Das Spiel funktioniert sehr gut, nur bei mir sind da so komische weiße kästchen, die glaub ich nciht da hin sollten. Wenn ich einen Stein draufsetze verschwindet das Kästchen.
Hier mal ein Bild:
Bild

1. FC Keller
Moderator
Beiträge: 866
Registriert: 04.07.2004, 17:10
Wohnort: heimat:// Thüringen.Deutschland.eu/ Zeulenroda
Kontaktdaten:

Re: Spiel: Mühle

Ungelesener Beitrag von 1. FC Keller » 13.11.2009, 15:51

dann fehlt vermutlich die blank.gif. ist eine datei mit diesem namen in der rar? wenn nicht müsste moni nochmal ran ;)

Benutzeravatar
hamigra
Beiträge: 567
Registriert: 31.08.2006, 16:02
Wohnort: Werdau
Kontaktdaten:

Re: Spiel: Mühle

Ungelesener Beitrag von hamigra » 13.11.2009, 16:20

blank.gif fehlt :wink:

Benutzeravatar
ZischDings
Moderator
Beiträge: 672
Registriert: 22.12.2004, 16:01
Kontaktdaten:

Re: Spiel: Mühle

Ungelesener Beitrag von ZischDings » 13.11.2009, 16:52

zischdings hat geschrieben:sorry
zischdings hat geschrieben:leute
zischdings hat geschrieben:blank.gif fehlte :)

Maxs
Moderator
Beiträge: 551
Registriert: 09.10.2008, 18:21
Kontaktdaten:

Re: Spiel: Mühle

Ungelesener Beitrag von Maxs » 13.11.2009, 19:04

Danke!!!
So, funktioniert jetzt super :wink:
Wieder einmal ein gelungenes Spiel!

Grüße, Maxs

Blachy66
Beiträge: 9
Registriert: 10.11.2009, 23:01
Wohnort: Lünen

Re: Spiel: Mühle

Ungelesener Beitrag von Blachy66 » 25.11.2009, 11:35

Das Spiel geh, nur muss man sich die Steine vorstellen, da ich bei mir keine Steine,und auch kein Spielfeld sehe. Die Daten (Bilder) habe ich wie beschrieben mir kopiert und auch auf den Webspace gespeichert. Was habe ich falsch gemacht? :lol: Ich stelle auch einen Bild rein, wo Ihr euch das , so wie es bei mir aussieh anschauen könnt. Bild

1. FC Keller
Moderator
Beiträge: 866
Registriert: 04.07.2004, 17:10
Wohnort: heimat:// Thüringen.Deutschland.eu/ Zeulenroda
Kontaktdaten:

Re: Spiel: Mühle

Ungelesener Beitrag von 1. FC Keller » 25.11.2009, 12:53

Dann stimmt vermutlich der Pfad nicht den du bei var muehleBilderPfad = "http://www.beispiel.de/muehle/";
eingetragen hast. Wenn du den Fehler nicht findest verlinke mal die js-Datei damit ich mirs ansehn kann.

Blachy66
Beiträge: 9
Registriert: 10.11.2009, 23:01
Wohnort: Lünen

Re: Spiel: Mühle

Ungelesener Beitrag von Blachy66 » 26.11.2009, 00:33

Jo Danke Dir Keller fehler lag am Pfad :oops: , Spiel funzt super.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 28 Gäste