Spiel: Dame

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

Spiel: Dame

Ungelesener Beitrag von 1. FC Keller » 27.04.2010, 16:14

kopiert aus dem alten Forum

Hiermit möchte ich euch als kleine Weihnachtsüberaschung mein zweites Spiel für die Webkicks-Chats vorstellen: Dame.

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

Code: Alles auswählen

/dame 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 Dame-Spielfeld eingeblendet.
Wenn man auf einen eigenen Stein klickt bekommt man alle möglichen Züge markiert. Durch Klicken auf so ein markiertes
Feld bewegt man den Stein. Die Steine können nur auf den dunklen Feldern bewegt werden. Durch überspringen eines
gegnerischen Steins kann man diesen "Schlagen". Wer keine Steine mehr hat hat das Spiel verloren.
Wenn ein Stein ganz hinten ankommt wird dieser zur Dame. Die Dame kann sich in beide Richtungen bewegen und beliebig
viele Felder überspringen.
Wenn man einen gegnerischen Stein überspringen kann muss man das auch tun. Tut man das nicht wird der eigene Stein, der
hätte springen müssen, entfernt. Dabei sind Sprünge von Damen priorisiert. Kann man also mit einer Dame und einem normalen
Stein springen, so muss man die Dame nehmen.


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

Einbau

Ab sofort gibt es auf http://www.wktools.net einen Generator. Damit könnt ihr euch ein eigenes Design für dieses Spiel erstellen. Dafür braucht ihr keine besonderen Erfahrungen mit Scripts oder HTML und müsst auch nichts selbst auf einen Webspace hochladen. Er ist also auch für Anfänger durchaus geeignet. Wenn ihr den Generator nutzen wollt braucht ihr ab hier nicht weiterlesen, denn hier wird nur noch der manuelle Einbau erklärt.

------------------------------------------------------------------------------------

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 dameBilderPfad = "http://www.deineDomain.de/dame/";
var dameFieldColors = ["#CAAD6C","#7B5536"]; 
var dameAbsolutePosition = false;
var damePlayerNr = 2;
var damePlayer = new Array(2);
var dameGame;
var dameVorbei = true;
var dameBild1="playera";
var dameBild="playerb";
var dameZuege = 0;
var damePlayerFrei = new Array(2);
damePlayerFrei[1] = true;
damePlayerFrei[2] = false;
var dameTmpPlayer = new Array(2);
dameTmpPlayer[1] = "";
dameTmpPlayer[2] = "";
var dameImPlayer;
var dameMyColor, dameGegnerColor;
var dameMarkiert=[];
var dameTmpGame=[];
var testAusgabe = false;

//Durchschnitt zwischen den beiden Feldfarben errechnen (zum Markieren von Feldern)
a=dameFieldColors;
dameFieldColors[2] = "#";
for(i=1;i<a[0].length;i++){
  dameFieldColors[2] += Math.round((parseInt(a[0].charAt(i), 16)+parseInt(a[1].charAt(i), 16))/2).toString(16);
}

function dameBtnClick(zeile, spalte){
  prd=parent.rightFrame.document;
  
  var tmpSendeBefehl=false;
  //weiße Felder ignorieren und abbrechen wenn man nicht am Zug ist
  if((zeile+spalte)%2 == 0 || damePlayerNr != dameImPlayer)
    return;
	
  dameTmpGame=dameTmpGame.length==0?clone(dameGame):dameTmpGame;
  
  //tmp="";for(i=0; i < 8; i++){tmp+="\n";for(j=0;j<8;j++){tmp+=" "+dameTmpGame[i][j]}}alert(tmp);
	
  if(dameMyColor == "playerb"){
    add=-7;
    multi=-1;
  }
  else{
    add=0;
	multi=1;
  }
  gameSpalte=(spalte+add)*multi
  gameZeile=(zeile+add)*multi
  
  //fremde Steine ignorieren
  clickedStone=dameTmpGame[gameZeile][gameSpalte]
  if(clickedStone != dameImPlayer && clickedStone != dameImPlayer+2 && dameMarkiert.length==0)
    return;

  if(dameMarkiert.length==0){
    dameMoeglicheZuege=new Array();
    for(i=0;i<8;i++){
	  for(j=0;j<8;j++){
	    if(dameGueltigerZug(gameZeile, gameSpalte, i, j,0)){
          prd.getElementsByName("dameSpalte"+((j+add)*multi))[(i+add)*multi].style.backgroundColor=dameFieldColors[2];
		  dameMoeglicheZuege.push(new Array(i, j));
		}
	  }
	}
	//alert("erster Klick "+zeile+" "+spalte+" "+prd.getElementsByName("dameSpalte"+spalte)[zeile].src);
    parent.rightFrame.document.getElementsByName("dameSpalte"+spalte)[zeile].style.backgroundColor=dameFieldColors[2];
    dameMarkiert[0]=[gameZeile, gameSpalte];
    return;
  }
  else if(dameMarkiert[0][0]==gameZeile && dameMarkiert[0][1]==gameSpalte){
    //zurücksetzen
    dameMarkiert=[];
    for(i=0;i<8;i++){
      for(j=0;j<8;j++){
        parent.rightFrame.document.getElementsByName("dameSpalte"+j)[i].style.backgroundColor="transparent";
      }
    }
	dameTmpGame=[];
	dameMoeglicheZuege=[];
    return;
  }
  else if(dameMarkiert[dameMarkiert.length-1][0] == gameZeile && dameMarkiert[dameMarkiert.length-1][1] == gameSpalte){
    tmpSendeBefehl=true;
  }
  else if(aktZug = dameGueltigerZug(dameMarkiert[dameMarkiert.length-1][0], dameMarkiert[dameMarkiert.length-1][1], gameZeile, gameSpalte, dameMarkiert.length-1, dameTmpGame)){
    //zug definieren
    dameTmpGame[gameZeile][gameSpalte]=dameTmpGame[dameMarkiert[dameMarkiert.length-1][0]][dameMarkiert[dameMarkiert.length-1][1]];
	if(aktZug==2){
      //Sprung! Übersprungenen Stein entfernen!
      var i=dameMarkiert[dameMarkiert.length-1][0];
      var j=dameMarkiert[dameMarkiert.length-1][1];
      ipp=i<gameZeile;
      jpp=j<gameSpalte;
      for(;ipp && i<gameZeile || !ipp && i>gameZeile;i+=(ipp?1:-1), j+=(jpp?1:-1)){
//	    alert(i+" "+j+" "+dameTmpGame[i][j]);
        dameTmpGame[i][j]=0;
//          break;
      }
    }
    dameMoeglicheZuege=[];
    dameMarkiert.push([gameZeile, gameSpalte]);
    var tmp;
    for(var i=0;i<8;i++){
      for(var j=0;j<8;j++){
        tmp=false;
        for(var k=0;k<dameMarkiert.length;k++){
          if(dameMarkiert[k][0] == i && dameMarkiert[k][1]==j){
            tmp=true;
          }
        }
        //wenn tmp schon true ist muss die gueltigerZug-Abfrage nicht gemacht werden (Ressourcen sparen!)
        if(!tmp && dameGueltigerZug(gameZeile,gameSpalte,i,j,dameMarkiert.length-1,dameTmpGame) && (dameMarkiert.length != 2 || dameGueltigerZug(dameMarkiert[0][0],dameMarkiert[0][1],dameMarkiert[1][0],dameMarkiert[1][1],0,dameGame)==2)){
          tmp=true;
          dameMoeglicheZuege.push([i,j]);
        }
		else if(testAusgabe){
		  alert("!tmp = " + (!tmp) + ";\n dameGueltigerZug("+gameZeile+","+gameSpalte+","+i+","+j+",dameMarkiert.length-1,dameTmpGame) = "+ (dameGueltigerZug(gameZeile,gameSpalte,i,j,dameMarkiert.length-1,dameTmpGame)) + ";\n dameMarkiert.length!=2 = "+ (dameMarkiert.length!=2) +";\n dameGueltigerZug(dameMarkiert[0][0],dameMarkiert[0][1],dameMarkiert[1][0],dameMarkiert[1][1],0,dameGame)==2 = "+ (dameGueltigerZug(dameMarkiert[0][0],dameMarkiert[0][1],dameMarkiert[1][0],dameMarkiert[1][1],0,dameGame)==2));
        }
        parent.rightFrame.document.getElementsByName("dameSpalte"+((parseInt(j)+add)*multi))[(parseInt(i)+add)*multi].style.backgroundColor=(tmp?dameFieldColors[2]:"transparent");
      }
    }
  }
  if(dameMarkiert[dameMarkiert.length-1][0] == gameZeile && dameMarkiert[dameMarkiert.length-1][1] == gameSpalte && dameMoeglicheZuege.length == 0 || tmpSendeBefehl){
    //Zug absenden
    var tmp=new Array();
    for(var i=0;i<dameMarkiert.length;i++){
      tmp.push(dameMarkiert[i][0]);
      tmp.push(dameMarkiert[i][1]);
    }
    sendeText('/dame setzen, '+damePlayer[dameImPlayer==1?2:1]+', '+tmp.join(", "));
    //alert('/dame setzen, '+damePlayer[dameImPlayer==1?2:1]+', '+tmp.join(", "));
    dameMarkiert=new Array;
    for(i=0;i<8;i++){
      for(var j=0;j<8;j++)
        parent.rightFrame.document.getElementsByName("dameSpalte"+j)[i].style.backgroundColor="transparent";
    }
    dameMoeglicheZuege=[];
	dameMarkiert = new Array();
	dameTmpGame = new Array();
	return
  }
}

function dameGueltigerZug(refZeile, refSpalte, zeile, spalte, zugNummer, game){
  game=game?game:dameGame;
  stein = game[refZeile][refSpalte];
  if(game[zeile][spalte] == 0){
    if(stein==1){
      if(zeile == refZeile+1 && (spalte == refSpalte+1 || spalte == refSpalte-1) && zugNummer==0)
        return 1;//normaler Zug
      if(zeile==refZeile+2 && (spalte==refSpalte+2 && (game[zeile-1][spalte-1]==2 || game[zeile-1][spalte-1]==4) || spalte==refSpalte-2 && (game[zeile-1][spalte+1]==2 || game[zeile-1][spalte+1]==4)))
        return 2;//Sprung!
    }
    else if(stein==2){
      if(zeile == refZeile-1 && (spalte == refSpalte+1 || spalte == refSpalte-1) && zugNummer==0)
        return 1;//normaler Zug
      if(zeile==refZeile-2 && (spalte==refSpalte+2 && (game[zeile+1][spalte-1]==1 || game[zeile+1][spalte-1]==3) || spalte==refSpalte-2 && (game[zeile+1][spalte+1]==1 || game[zeile+1][spalte+1]==3)))
        return 2;//Sprung!
    }
    else if(stein==3 || stein==4){
      //Damen dürfen in jede Richtung
      //berechnen ob diagonal erreichbar
      if(refZeile-zeile == refSpalte-spalte || refZeile-zeile == (refSpalte-spalte)*-1){
        kpp = refZeile<zeile;
        lpp = refSpalte<spalte;
        chk=false;
      for(var k=refZeile+(kpp?1:-1), l=refSpalte+(lpp?1:-1); (kpp&&(k<=zeile) || !kpp&&(k>=zeile)) && (lpp&&(l<=spalte) || !lpp&&(l>=spalte)); (k=k+(kpp?1:-1)),(l=l+(lpp?1:-1))){
          if(game[k][l]==game[refZeile][refSpalte]-2 || game[k][l]==game[refZeile][refSpalte]){
            //wenn auf dem zu überspringenden Feld ein eigener Stein liegt wird abgebrochen
            break;
          }
          if(k==zeile && l==spalte)
            return chk?2:(zugNummer==0?1:0);
          if(game[k][l]==(((game[refZeile][refSpalte]-2)==1)?2:1) || game[k][l]==(((game[refZeile][refSpalte]-2)==1)?4:3)){
            if(chk){
              break;
            }
            chk=true;
          }
        }
      }
    }
  }
  return 0;
}

function dameBefehlsAuswertung(eingabe, sender){
  if(strip_tags(eingabe)==strip_tags(sender)){
    if(strip_tags(sender)==myNick)
      document.write("Dame 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 Dame</u></b><br>Wenn man auf einen eigenen Stein klickt bekommt man alle möglichen Züge markiert. Durch Klicken auf ein so markiertes Feld bewegt man den Stein. Die Steine können nur auf den dunklen Feldern bewegt werden. Durch Überspringen eines gegnerischen Steins kann man diesen \"Schlagen\". Wer keine Steine mehr hat, der hat das Spiel verloren. Wenn ein Stein ganz hinten ankommt wird dieser zur Dame. <br>Die Dame kann sich in beide Richtungen bewegen und beliebig viele Felder überspringen. Wenn man einen gegnerischen Stein überspringen kann muss man das auch tun. Tut man das nicht wird der eigene Stein, der hätte springen müssen, entfernt. Dabei sind Sprünge von Damen priorisiert. Kann man also mit einer Dame und einem normalen Stein springen, so muss man die Dame nehmen.");
    }
    else{
      document.getElementsByTagName("table")[document.getElementsByTagName("table").length-1].style.display = "none";
    }
  }
  else if(a.length==1){
    dameEinladung(sender, eingabe);
  }
  if(a[0]=="imFree"){
    dameFrei(sender, a[1], a[2])
  }
  if(a[0]=="setzen"){
    gegner=a[1];
	setzer=b;
	for(i=0;i<2;i++)
	  a.shift();
    dameSetzen(gegner, setzer, a);
	document.getElementsByTagName("table")[document.getElementsByTagName("table").length-1].style.display = "none";
  }
}

function dameSwitchPlayer(){
  dameBild = (damePlayerNr==1)?"playerb":"playera";
  dameBild1 = (damePlayerNr==1)?"playera":"playerb";
  damePlayerNr = (damePlayerNr==1)?2:1;
  parent.rightFrame.document.getElementById("amZug").firstChild.nodeValue  = damePlayer[damePlayerNr];
}
function dameSetzen(gegner, setzer, zuegeArray){
  dameTmpGame = clone(dameGame);
  var rd=parent.rightFrame.document;
  if((!(myNick == damePlayer[1] || myNick == damePlayer[2])) || (gegner != damePlayer[1] && gegner != damePlayer[2]) || (strip_tags(setzer) !=  damePlayer[1] && strip_tags(setzer) != damePlayer[2])){
    dameTmpGame=[];
    return;
  }
  refZeile=parseInt(zuegeArray[0]);
  refSpalte=parseInt(zuegeArray[1]);
  destZeile=parseInt(zuegeArray[2]);
  destSpalte=parseInt(zuegeArray[3]);
  //geprüft wird hier nur der erste Teil-Zug (bei Mehrfachsprüngen)
  ersterZug = dameGueltigerZug(refZeile, refSpalte, destZeile, destSpalte,0);
  if(!ersterZug){
    if(myNick == gegner)
      sendeText("/f "+strip_tags(setzer)+" Dame-Automessage: Fehlerhafter Spielzug!");
	dameTmpGame=[];
    return;
  }
  dameSwitchPlayer();
  setzer=strip_tags(setzer);
  if(dameImPlayer==1){
    add=-7;
    multi=-1;
  }
  else{
    add=0;
    multi=1;
  }
  gesetzterStein = dameGame[refZeile][refSpalte];
  for(var a=0;a+3<zuegeArray.length;a+=2){
    refZeile=parseInt(zuegeArray[a]);
    refSpalte=parseInt(zuegeArray[a+1]);
    destZeile=parseInt(zuegeArray[a+2]);
    destSpalte=parseInt(zuegeArray[a+3]);
    
    olRefSpalte=(refSpalte+add)*multi;
    olRefZeile=(refZeile+add)*multi;
    olDestSpalte=(destSpalte+add)*multi;
    olDestZeile=(destZeile+add)*multi;
    delSpalte=delZeile=-1;
    if(gesetzterStein<3){
      if(destSpalte==refSpalte+2)
        delSpalte=refSpalte+1;
      if(destSpalte==refSpalte-2)
        delSpalte=refSpalte-1;
      if(destZeile==refZeile+2)
        delZeile=refZeile+1;
      if(destZeile==refZeile-2)
        delZeile=refZeile-1;
    }
    else{
      if(refZeile-destZeile == refSpalte-destSpalte || refZeile-destZeile == (refSpalte-destSpalte)*-1){
        ipp = refZeile<destZeile;
        jpp = refSpalte<destSpalte;
        chk=false;
        for(i=refZeile+(ipp?1:-1),j=refSpalte+(jpp?1:-1); (ipp&(i<=destZeile) || !ipp&&(i>= destZeile)) && (jpp&&(j<=destSpalte) || !jpp&&(j>=destSpalte)); (i=i+(ipp?1:-1)),(j=j+(jpp?1:-1))){
          if(dameGame[i][j]==(((dameGame[refZeile][refSpalte]-2)==1)?2:1) || dameGame[i][j]==(((dameGame[refZeile][refSpalte]-2)==1)?4:3)){
            delZeile=i;
            delSpalte=j;
          }
        }
      }
    }
    if(delSpalte!=-1){
      dameGame[delZeile][delSpalte]=0;
      parent.rightFrame.document.getElementsByName("dameSpalte"+(delSpalte+add)*multi)[(delZeile+add)*multi].src=dameBilderPfad+"blank.gif";
    } 
    dameGame[refZeile][refSpalte] = 0;
    parent.rightFrame.document.getElementsByName("dameSpalte"+olRefSpalte)[olRefZeile].src=dameBilderPfad+"blank.gif";
    if((destZeile==0 || destZeile==7) && gesetzterStein < 3){
      //Dame erhalten!
      dameGame[destZeile][destSpalte] = gesetzterStein+2;
      parent.rightFrame.document.getElementsByName("dameSpalte"+olDestSpalte)[olDestZeile].src=dameBilderPfad+dameBild+"1.gif";
      break;
    }
    else{
      dameGame[destZeile][destSpalte] = gesetzterStein;
      parent.rightFrame.document.getElementsByName("dameSpalte"+olDestSpalte)[olDestZeile].src=dameBilderPfad+dameBild+(gesetzterStein>2?"1":"")+".gif";
    }
    if(delSpalte == -1)
      break;
  }
  //Sprungzwang. Damesprung geht vor. Bei Missachtung/Übersehen wird der Stein, der hätte springen müssen, gelöscht.
  if(gesetzterStein<=2 || gesetzterStein>2 && ersterZug==1){
    //Damesprung geht vor!
    for(var i=0;i<8;i++){
      for(var j=0;j<8;j++){
        if(dameGame[i][j]==gesetzterStein+2){
          for(var a=0;a<8;a++){
            for(var b=0;b<8;b++){
              if(dameGueltigerZug(i,j,a,b,0,dameTmpGame)==2){
                if(i==zuegeArray[0] && j==zuegeArray[1]){
                  //wenn ein Stein der hätte springen müssen normal gesetzt wurde wird dieser gelöscht
                  i=parseInt(zuegeArray[2]);
                  j=parseInt(zuegeArray[3]);
                }
                dameGame[i][j]=0;
                parent.rightFrame.document.getElementsByName("dameSpalte"+((j+add)*multi))[(i+add)*multi].src=dameBilderPfad+"blank.gif";
                dameTmpGame=[];
				dameCheckIfWon();
                return;
              }
            }
          }
        }
      }
    }
	//Ende Damesprungerkennung
  }
  if(ersterZug == 1){
    for(var i=0;i<8;i++){
      for(var j=0;j<8;j++){
        for(var a=0;a<8;a++){
          for(var b=0;b<8;b++){
            tmp = dameGueltigerZug(i,j,a,b,0,dameTmpGame);
            if(tmp==2 && (dameTmpGame[i][j]==gesetzterStein || dameTmpGame[i][j]==gesetzterStein+(gesetzterStein>2?-2:2))){
			  //Wenn der getestete Zug ein Sprung mit einem eigenen Stein wäre...
              if(i==zuegeArray[0] && j==zuegeArray[1]){
                //wenn ein Stein der hätte springen müssen normal gesetzt wurde wird dieser gelöscht
                i=parseInt(zuegeArray[2]);
                j=parseInt(zuegeArray[3]);
              }
              dameGame[i][j]=0;
              parent.rightFrame.document.getElementsByName("dameSpalte"+((j+add)*multi))[(i+add)*multi].src=dameBilderPfad+"blank.gif";
              dameTmpGame=[];
              dameCheckIfWon();
              return;
            }
          }
        }
      }
    }
  }
  dameTmpGame=[];
  dameCheckIfWon();
}
function dameCheckIfWon(){
  var steinCounter=[0,0,0];
  for(var k=0;k<8;k++){
    for(var l=0;l<8;l++){
	  m=dameGame[k][l]
      if(m>0)
	    steinCounter[m<3?m:m-2]++;
    }
  }
  if(steinCounter[1] == 0 || steinCounter[2]==0){
    alert(damePlayer[steinCounter[1]==0?2:1]+" hat das Dame-Spiel gewonnen.");
    parent.rightFrame.document.body.removeChild(parent.rightFrame.document.getElementById("dame"));
  }
}
function dameZeichneTabelle(){
  ie=(document.all&&!window.innerWidth && navigator.userAgent.toLowerCase().indexOf("msie") != -1)?1:0;
  r = parent.rightFrame;
  dameTabelle = r.document.createElement("table");
  dameTabelle.style.borderCollapse = "collapse";
  dameTabelle.style.borderSpacing = "0px";
  dameTbody = r.document.createElement("tbody");
  for(i=0;i<8;i++){
    dameTr = r.document.createElement("tr");
    for(j=0;j<8;j++){
      dameTd = r.document.createElement("td");
      dameTd.style.border = "solid #555 1px";
	  dameTd.style.backgroundColor = dameFieldColors[(i+j)%2];
      if(!ie){
        dameTdImg = new Image();
        dameTdImg.src=dameBilderPfad+"blank.gif";
        dameTdImg.style.height = "13px";
        dameTdImg.style.width = "13px";
        dameTdImg.name = "dameSpalte"+j;
        eval("dameTdImg.onclick = function(e){parent.mainframe.dameBtnClick("+i+", "+j+")}");
        dameTd.appendChild(dameTdImg);
      }
      else{
        dameTdImg = "<img src='"+dameBilderPfad+"blank.gif' style='hight:13px;width:13px' onclick='parent.mainframe.dameBtnClick("+i+", "+j+")' name='dameSpalte"+j+"' />";
        dameTd.innerHTML += dameTdImg;
      }
      dameTr.appendChild(dameTd);
    }
    dameTbody.appendChild(dameTr);
  }
  dameTabelle.appendChild(dameTbody);
  dameSpielfeld = r.document.createElement("p");
  dameSpielfeld.style.border = "#888 solid 1px";
  dameSpielfeld.setAttribute("id", "dame");
  dameClose = r.document.createElement("div");
  dameClose.style.marginBottom="0px";
  dameClose.style.textAlign="right";
  dameCloseLink = r.document.createElement("a");
  dameCloseLink.setAttribute("href", "javascript:void(document.body.removeChild(document.getElementById('dame')));void(pm=parent.mainframe);void(pm.sendeText('/f '+pm.damePlayer[(pm.dameImPlayer==1?2:1)]+' Dame-Automessage: ich habe das Dame-Spiel verlassen.'));");
  dameCloseLink.appendChild(r.document.createTextNode("X"));
  dameClose.appendChild(dameCloseLink);
  dameSpielfeld.appendChild(dameClose);
  dameSpielfeld.appendChild(dameTabelle);
  if(dameAbsolutePosition){
    dameSpielfeld.style.position = "absolute";
    dameSpielfeld.style.bottom = "0px";
    dameSpielfeld.style.right = "0px";
  }
  dameNachTbl = r.document.createElement("span");
  dameNachTbl.appendChild(r.document.createTextNode("Am Zug: "));
  dameAmZug = r.document.createElement("span");
  dameAmZug.setAttribute("id", "amZug");
  dameAmZug.appendChild(r.document.createTextNode(damePlayer[2]));
  dameNachTbl.appendChild(dameAmZug);
  dameSpielfeld.appendChild(dameNachTbl);
  if(r.document.getElementById("dame"))
    r.document.body.removeChild(r.document.getElementById("dame"));
  r.document.body.appendChild(dameSpielfeld);
}
function dameEinladung(einlader, eingeladener){
  einlader = strip_tags(einlader);
  if(myNick == einlader || myNick.toLowerCase() == strip_tags(eingeladener).toLowerCase()){
    dameTmpPlayer[1] = einlader;
    dameTmpPlayer[2] = strip_tags(eingeladener);
    damePlayerFrei[2] = false;
   if(myNick.toLowerCase()==strip_tags(eingeladener).toLowerCase()){
      document.write("l&auml;dt dich auf eine Runde Dame ein. <a href='#' onclick='sendeText(\"/dame Regeln\");return false;'>Regeln anzeigen</a><p style='text-align:right;'><button onclick='dameElBtnsDeakt(this); sendeText(\"/dame imFree, "+dameTmpPlayer[1]+", true\")'>annehmen</button><button onclick='dameElBtnsDeakt(this); sendeText(\"/dame imFree, "+dameTmpPlayer[1]+", false\")'>ablehnen</button></p>");
    }
    else
      document.write("l&auml;dt "+eingeladener+" auf eine Runde Dame ein.");
  }
  else
    document.write("l&auml;dt "+eingeladener+" auf eine Runde Dame ein.");
  if((einlader==damePlayer[1] || einlader == damePlayer[2]) && !dameVorbei){
    dameVorbei = true;
    document.write(" Er/Sie beendet damit das derzeitige Spiel.");
    rd=parent.rightFrame.document;
    if(rd.getElementById("dame"))
      rd.body.removeChild(rd.getElementById("dame"));
  }
}
function dameElBtnsDeakt(objBtn){
  for(i in objBtn.parentNode.getElementsByTagName('button')){
    objBtn.parentNode.getElementsByTagName('button')[i].disabled=true;
  }
}
function dameFrei(freeUser, einlader, isFree){
  if(strip_tags(freeUser)==myNick)
    dameVorbei = true;
  if(!(myNick == einlader || myNick == dameTmpPlayer[2])){
    document.write((isFree=="true")?"nimmt die Dame-Einladung an.":"lehnt die Dame-Einladung ab.");
    return;
  }
  if(isFree=="false")
    document.write("lehnt die Dame-Einladung ab.");
  //Meldung für anderen Spieler des vorherigen Spieles falls dieses noch nicht beendet war
  if(!dameVorbei && isFree=="true"){
    document.write(" nimmt die Einladung an und verl&auml;sst damit das bisherige Spiel.");
    rd=parent.rightFrame.document;
    if(rd.getElementById("dame"))
      rd.body.removeChild(rd.getElementById("dame"));
    return;
  }
  if(strip_tags(freeUser) == dameTmpPlayer[2] && isFree=="true"){
    damePlayerFrei[2] = true;
    document.write(" nimmt die Einladung an.");
  }
  if(damePlayerFrei[1] && damePlayerFrei[2])
    starteDame();
}
function starteDame(){
  damePlayer = dameTmpPlayer;
  dameTmpPlayer = new Array();
  dameTmpPlayer[1]=dameTmpPlayer[2]="";
  damePlayerNr = 2;
  dameVorbei = false;
  dameImPlayer = (myNick==damePlayer[1])?1:2;
  dameGame = new Array(8);
  
  dameMyColor = (dameImPlayer==2)?"playera":"playerb";
  dameGegnerColor = (dameImPlayer==2)?"playerb":"playera";
  dameZeichneTabelle();
  
  for(i=0; i < 8; i++){
    dameGame[i]=new Array(8);
    for(j=0;j<8;j++){
	  dameGame[i][j] = (i+j)%2?(i<3?1:(i>4?2:0)):-1;
      parent.rightFrame.document.getElementsByName("dameSpalte"+j)[i].src = dameBilderPfad+((i+j)%2?(i<3?dameGegnerColor:(i>4?dameMyColor:"blank")):"blank")+".gif";
    }
  }
}
//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 dameBilderPfad = "http://www.beispiel.de/dame/";
Hier bitte das Verzeichnis angeben, in dem ihr alle Bilder hochladet, die hier gebraucht werden.

Die folgenden 2 Einstellungen sind optional.

In der 2. Zeile steht folgendes:

Code: Alles auswählen

var dameFieldColors = ["#CAAD6C","#7B5536"]; 
Das sind die beiden Farben für die Felder. Die Markierung ist immer automatisch der Mittelwert aus diesen beiden Farben.

In der 3. seht ihr:

Code: Alles auswählen

var dameAbsolutePosition = 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 dameAbsolutePosition = 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/dame.js"></script>
Weiterhin muss noch ein Chatbefehl im Admin-Menü angelegt werden. Der Name muss, anders als bei anderen Scripts exakt so
eingehalten werden.

/dame

Code: Alles auswählen

<script type=text/javascript>if(parent.info){dameBefehlsAuswertung('%user%','%me%');}else{document.write('spielt mit einem anderen Chatter Dame')}</script>
Zischdings war so nett und hat die Designs für das Spiel entworfen. Ihr müsst jeweils die 5 Bilder in das Verzeichnis hochladen,
welches Ihr in dem Script eingestellt habt. Die Codezeile ist jeweils die Farbeinstellung für das Spielfeld, welche Ihr in der
2. Codezeile anpassen könnt.
Selbstverständlich könnt ihr auch wieder eigene Designs erstellen. Die Bilder haben alle das Format 13x13 Pixel.

Benutzeravatar
ZischDings
Webkicks - Team
Beiträge: 672
Registriert: 22.12.2004, 16:01
Kontaktdaten:

dame

Ungelesener Beitrag von ZischDings » 29.04.2010, 12:30

hier ein paar designs für das spiel. falls jemand andere farben möchte ... bitte bescheid sagen - dazu bitte
mindestens 2 oder gleich alle 4 farbtöne (spielfeld und/oder spielsteine, hexcodes oder auch RGB) nennen.


edit:
für diejenigen unter euch, die zwar steine/kronen brauchen, ihr spielfeld aber selbst färben möchten, habe ich mal ein
paar grafiken extra angefertigt (die dateinamen habe ich zur einfacheren farborientierung nach den jeweiligen hexcodes
benannt, zum einbau ins dame-game müssten sie natürlich entsprechend umbenannt werden) - viel spaß beim gestalten ;-)
(auch hier gilt: eigene farbwünsche bitte nennen)


BildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBild
BildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBildBild


Bild
Bild Bild Bild Bild
dame.zip (alle spielsteine inkl. blank.gif)
var dameFieldColors = ["#CAAD6C","#7B5536"];


Bild
Bild Bild Bild Bild
dame.zip (alle spielsteine inkl. blank.gif)
var dameFieldColors = ["#C4ECFF","#4D85A0"];


Bild
Bild Bild Bild Bild
dame.zip (alle spielsteine inkl. blank.gif)
var dameFieldColors = ["#DFDFDF","#A3A3A3"];


Bild
Bild Bild Bild Bild
dame.zip (alle spielsteine inkl. blank.gif)
var dameFieldColors = ["#C1C2E1","#8686C4"];


Bild
Bild Bild Bild Bild
dame.zip (alle spielsteine inkl. blank.gif)
var dameFieldColors = ["#A3CAA3","#538A53"];


Bild
Bild Bild Bild Bild
dame.zip (alle spielsteine inkl. blank.gif)
var dameFieldColors = ["#CAAD6C","#946641"];

Benutzeravatar
ThePhilosopher
Beiträge: 3
Registriert: 31.03.2012, 01:12
Wohnort: Magdeburg
Kontaktdaten:

Re: Spiel: Dame

Ungelesener Beitrag von ThePhilosopher » 31.03.2012, 01:48

Hi =)

Ich habe eine kleine Frage. Ich bin ein kleiner Retro-Freak, stehe gerne auf etwas ältere oder gewohntere Dinge, Musik von Beethoven, Buch von Knigge, ... und ich habe das Damespiel in schwarz-weiß mit schwarzen und weißen Steinchen kennengelernt.

Was für andere nur ein Spiel ist, ist für mich etwas sehr wichtiges, fast ein Ritual, denn es erinnert mich an meinen vor einigen Jahren verstorbenen Großvater. Sein Name war Joachim und er war ein herzensguter Mensch. Ohne ihn hätte ich nie erfahren, wie Dame funktioniert und was es für ein schönes Spiel ist. Ich erinnere mich noch, wie ich mit ihm die ersten Male spielte und ständig verlor, das waren noch großartige Zeiten. Irgendwann wurde ich älter, mein Bewusstsein reifte heran, sodass ich während des Spiels nicht mehr einfach in die Küche zur Oma rannte, nur um mir einen Kinder-Pinguin zu stibitzen. Das Spiel musste erst beendet werden, unbedingt. Wiederum ein wenig später dann, ging es mir nicht mehr nur darum, schnell fertig zu werden, nein, ich wollte gar als Sieger aus jener Steinschlacht hervorgehen. Es war so lustig, wie mein Opa und ich uns witzeshalber gegenseitig mit lustigen Vokabeln begrüßten, wenn wieder ein Stein im Krieg der Königinnen gefallen war. Aber es basierte jede Vokabel stets nur auf freundlichstem Terrain und selbst heute, wenn ich mit wem spiele, rutscht mir eventuell ein "Mist" oder so heraus, aber mit einem schelmischen Lächeln auf dem Gesichte, denn Dame ist ein Spiel des Friedens und der Freundschaft und von jenen, die den Verstand verlieren, wenn sie selbst verlieren, halte ich rein gar nichts, denn sie verstehen nicht den edlen Sinngehalt und die Symbole hinter dem Spiel. Doch ich schweife ab ...

Die letzten Male vermochte ich dann wider meines Erwartens siegreich hervorzugehen - mein Großvater war wirklich ein hervorragender Dame-Spieler, allerdings hat er mich zu einem recht guten Dame-Kämpfer ausgebildet, was er die letzten Male mit einem lächelnden "Verdammt, den sah ich nicht kommen" kundtat. Ich besitze heute noch das erste Spielfeld und es war das einzige, auf welchem wir je unsere Schlachten ausfochten. Auch sämtliche Steine befinden sich noch in meinem Besitze. Wann immer ich Dame spiele, sinke ich hinab ins Tal der Erinnerungen und gedenke, zeitgleich wie ich Dame mit anderen spiele, meinem Großvater. Dieses Spiel ist für mich eine so kostbare Kindheitserinnerung, dass ich nicht drauf verzichten könnte.

Was ich fragen wollte, war das Folgende: Sie haben da so wunderschöne, bunte Steine hochgeladen. Könnten Sie mir gütigerweise ein ebensolches Schwarzweiß-Set zusammenstellen? Das wäre wunderbar. Wie funktioniert eigentlich der Dame-Generator? Wenn ich mit dem das Spiel generiere, erscheinen nie Steine. Muss ich in die Kästchen Farbcodes eingeben oder eine URL? Und müssen die verlinkten Steine einen bestimmten Namen haben, oder kann man sie nennen wie man mag? Weil ich beim Blindspielen nämlich recht bedenkliche Verluste heimgetragen habe. Aber mein Gegner auch, davon mal abgesehen. ;-D

Ich würde mich sehr dolle freuen, wenn Sie mir ein solches Set zusammenstellen und hochladen könnten. Mein Dank wäre gigantisch. :)

Mit freundlichsten Grüßen,
The Philosopher :)

P.S.: Ich mag meinen Großvater über alles und das Wissen darum, dass ich ihn am Ende allen Seins wiedersehen werde, füllt mich mit größter Freude. Jedes Spiel, das ich spiele, egal gegen wen, widme ich in der Stille meiner Seele meinem Großvater, denn ich weiß, dass er da oben bestimmt sehen kann, welch einen ehrgeizigen Schüler er hatte. Und ich freue mich ganz spitzbübisch schon auf den Tag, wo ich droben wieder meine Steine gegen die Seinen in die Schlacht schicken kann und wir lachend wieder einmal und mit Worten bedenken können, ganz im Sinne der Freude, die Seele gefüllet mit Spannung, wer siegen wird. :D

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

Re: Spiel: Dame

Ungelesener Beitrag von 1. FC Keller » 30.04.2012, 14:48

Hallo,

im Dame-Generator haben sich ein paar Fehler gefunden.
Jetzt sollte er wieder funktionieren.

In die Felder werden die kompletten URLs der Steine eingetragen. Daher ist es beim Generator auch egal wie sie benannt sind.
Wir hosten auf wktools auch selbst die Grafiken für alle Steine, die Moni hier gepostet hat.
Die URLs für weiß und schwarz sind:
http://wktools.net/farben/005-15.gif
http://wktools.net/farben/005-krone.gif
http://wktools.net/farben/001-15.gif
http://wktools.net/farben/001-krone.gif

Wenn einmal eine Gültige Grafik-URL in dem Feld steht, dann kann man auch auf die Vorschau des Bildes rechts neben dem Feld klicken und es öffnet sich eine Tabelle, in der man zwischen den bei uns gehosteten Steinen wählen kann... Es ist aber auch möglich selbst hochgeladene Steine zu verwenden indem man diese URLs angibt.

Matityahu_BenAvner
Beiträge: 13
Registriert: 23.07.2017, 20:38
Wohnort: Jerusalem

Re: Spiel: Dame

Ungelesener Beitrag von Matityahu_BenAvner » 26.07.2017, 17:16

Ich hab das Spiel in meinem Chat, aber aus irgendeinem Grund schaltet es ständig von rechteckiger auf quadratische Ansicht um und zurück und hängt extrem.

Woran könnte das liegen?

MfG

Matityahu_BenAvner
Beiträge: 13
Registriert: 23.07.2017, 20:38
Wohnort: Jerusalem

Re: Spiel: Dame

Ungelesener Beitrag von Matityahu_BenAvner » 26.07.2017, 17:25

Ich hab noch eine weitere Frage. Hättet ihr die Steine in Gold? Also Rot 255 (FF), Grün zwischen 200 und 204 (cc) und Blau 0? Dann könnte man ein Gold-/Silber-Spiel zusammenstellen.

Antworten

Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 1 Gast