Spiel: Tic Tac Toe

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: Tic Tac Toe

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

Kopiert aus dem alten Forum

Da es hier schon mehrfach gewünscht wurde habe ich mich gestern und heute mal hin gesetzt und mein 4 Gewinnt-Script auf Tic Tac Toe umgeschrieben.

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

Code: Alles auswählen

/ttt 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 in unten rechts in der Onlineliste ein kleines Tic Tac Toe - Spielfeld (3x3 Felder) eingebledet. Durch Klicken auf ein Feld setzt man dort sein Symbol. Dies geschieht immer abwechselnd.
Wer zuerst 3 Spielsteine in eine Reihe bekommt - egal ob waagerecht, senkrecht oder diagonal - hat das Spiel gewonnen.

Voraussetzungen

Voraussetzung ist mal wieder die Grundscriptsammlung.

Das Klapp-Menü für die Onlineliste ist hilfreich, aber nicht notwendig. Dort kann ein weiterer Menü-Eintrag angelegt werden, mit dem man ein Spiel startet.

Weiterhin benötigt ihr einen Webspace um einige Grafiken und eine js-Datei hochzuladen.

Einbau

Wenn die Voraussetzungen gegeben/erledigt sind könnt ihr dann also das Spiel in eueren Chat einbauen.

Zunächst erstellt ihr euch eine js-Datei. Dort kommt folgender Code

hinein:

Code: Alles auswählen

var tttBilderPfad = "http://www.beispiel.de/ttt/";
var tttAbsolutePosition = true;
var tttTdBorderStyle = "#aaaaaa dotted 1px";
var tttSpielfeldBorderStyle = "#888888 solid 1px";
var tttTableBorderStyle = "#830 outset 2px";
var tttPlayerNr = 10;
var tttPlayer = new Array(2);
var tttGame;
var tttVorbei = true;
var tttBild1="playera";
var tttZuege = 0;
var tttPlayerFrei = new Array(2);
tttPlayerFrei[1] = true;
tttPlayerFrei[10] = false;
var tttTmpPlayer = new Array(2);
tttTmpPlayer[1] = "";
tttTmpPlayer[10] = "";
var tttImPlayer;
var tttMyColor;

function tttBtnClick(zeile, spalte){
  if(tttGame[zeile][spalte] != 0){
    alert("Dieses Feld ist bereits besetzt.");
    return;
  }
  if(tttVorbei){
    alert("Das Spiel ist vorbei.");
    return;
  }
  if(tttImPlayer == tttPlayerNr)
    sendeText("/ttt setzen, "+tttPlayer[(tttImPlayer==1?10:1)]+", "+zeile+", "+spalte);
  else
    alert("Du bist nicht dran!");
}
function tttSwitchPlayer(){
  tttBild = (tttPlayerNr==1)?"playerb":"playera";
  tttBild1 = (tttPlayerNr==1)?"playera":"playerb";
  tttPlayerNr = (tttPlayerNr==1)?10:1;
  parent.rightFrame.document.getElementById("amZug").firstChild.nodeValue  = tttPlayer[tttPlayerNr];
}
function tttBefehlsAuswertung(eingabe, sender){
  if(strip_tags(eingabe)==strip_tags(sender)){
    if(strip_tags(sender)==myNick)
      document.write("Tic Tac Toe 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 Tic Tac Toe</u></b><br>Ziel des Spiels ist es, sein Symbol 3 mal in eine Reihe zu bekommen. Ob waagerecht, senkrecht oder diagonal ist egal. Wer zuerst 3 seiner Symbole in eine Reihe bekommt hat gewonnen. Daher ist es mindestens genauso wichtig zu verhindern, dass der Gegner eine solche Reihe erreicht.<br>Es wird immer abwechselnd gesetzt. Durch Klicken auf ein beliebiges freies Feld kann man dort sein Zeichen setzen.<br>Die beiden Spieler setzen immer abwechselnd. Wenn das Spielfeld voll ist und niemand eine 3er-Reihe erreicht hat endet das Spiel unentschieden.");
   }
   else{
     document.getElementsByTagName("table")[document.getElementsByTagName("table").length-1].style.display = "none";
   }
  }
  else if(a.length==1){
    tttEinladung(sender, eingabe);
  }
  else if(a[0]=="imFree"){
    tttImFree(sender, a[1], a[2])
  }
  else if(a[0]=="setzen"){
    gegner=a[1];
   setzer=b;
   zeile=parseInt(a[2]);
   spalte=parseInt(a[3]);
   tttSetzen(gegner, setzer, zeile, spalte);
   document.getElementsByTagName("table")[document.getElementsByTagName("table").length-1].style.display = "none";
  }
}
function tttSetzen(gegner, setzer, zeile, spalte){
  var rd=parent.rightFrame.document;
  if((!(myNick == tttPlayer[1] || myNick == tttPlayer[10])) || (gegner != tttPlayer[1] && gegner != tttPlayer[10]) || (strip_tags(setzer) !=  tttPlayer[1] && strip_tags(setzer) != tttPlayer[10])){
    return;
  }
  if(tttGame[zeile][spalte] != 0){
    alert("Dieses Feld ist bereits belegt.");
    return;
  }
  if(tttVorbei){
    alert("Das Spiel  ist vorbei.");
    return;
  }
  if(strip_tags(setzer) != tttPlayer[tttPlayerNr]){
    alert("so nicht!");
    return;
  }
  tttSwitchPlayer();
  tttGame[zeile][spalte] = tttPlayerNr;
  parent.rightFrame.document.getElementsByName("tttSpalte"+spalte)[zeile].src = tttBilderPfad+tttBild1+".gif";
  parent.rightFrame.document.getElementsByName("tttSpalte"+spalte)[zeile].setAttribute("alt", (tttBild1=="playera"?"X":"O"));
  tttZuege++;
  if(tttZuege == 9){
    tttVorbei = true;
    alert("Unentschieden");
    rd.body.removeChild(rd.getElementById("TicTacToe"));
    tttPlayer[1] = myNick;
    tttPlayer[10] = myNick;
  }
  if(tttCheckIfWon()){
    tmp = (tttPlayerNr==1)?10:1;
    window.setTimeout('alert("'+tttPlayer[tmp]+' hat gewonnen.");rd=parent.rightFrame.document;if(rd.getElementById("TicTacToe")){rd.body.removeChild(rd.getElementById("TicTacToe"))}', 500);
    tttVorbei = true;
    tttPlayer[1] = myNick;
    tttPlayer[10] = myNick;
  }
}
function tttCheckIfWon(){
  if(tttGame[0][0]+tttGame[1][1]+tttGame[2][2] == tttPlayerNr*3 || tttGame[0][2]+tttGame[1][1]+tttGame[2][0] == tttPlayerNr*3)
    return true;
  for(i=0;i<=2;i++){
    if(tttGame[i][0]+tttGame[i][1]+tttGame[i][2] == tttPlayerNr*3 || tttGame[0][i]+tttGame[1][i]+tttGame[2][i] == tttPlayerNr*3){
      return true;
    }
  }
}
function tttZeichneTabelle(){
  ie=(document.all&&!window.innerWidth && navigator.userAgent.toLowerCase().indexOf("msie") != -1)?1:0;
  r = parent.rightFrame;
  tttTabelle = r.document.createElement("table");
  tttTabelle.style.borderCollapse = "collapse";
  tttTabelle.style.borderSpacing = "0px";
  tttTabelle.style.border = tttTableBorderStyle;
  tttTbody = r.document.createElement("tbody");
  tttErsteZeile = r.document.createElement("tr");
  for(i=0;i<3;i++){
    tttTr = r.document.createElement("tr");
    for(j=0;j<3;j++){
      tttTd = r.document.createElement("td");
      tttTd.style.border = tttTdBorderStyle;
      tttTd.style.textAlign = "center";
	  tttTd.style.verticalAlign = "middle";
	  tttTd.style.width = "45px";
	  tttTd.style.height = "45px";
      if(!ie){
        tttTdImg = new Image();
        tttTdImg.src=tttBilderPfad+"blank.gif";
        tttTdImg.style.height = "30px";
        tttTdImg.style.width = "30px";
        tttTdImg.name = "tttSpalte"+j;
        eval("tttTdImg.onclick = function(e){parent.mainframe.tttBtnClick("+i+", "+j+")}");
        tttTd.appendChild(tttTdImg);
      }
      else{
        tttTdImg = "<img src='"+tttBilderPfad+"blank.gif' style='hight:30px;width:30px' onclick='parent.mainframe.tttBtnClick("+i+", "+j+")' name='tttSpalte"+j+"' />";
        tttTd.innerHTML += tttTdImg;
      }
      tttTr.appendChild(tttTd);
    }
    tttTbody.appendChild(tttTr);
  }
  tttTabelle.appendChild(tttTbody);
  tttSpielfeld = r.document.createElement("p");
  tttSpielfeld.style.border = tttSpielfeldBorderStyle;
  tttSpielfeld.setAttribute("id", "TicTacToe");
  tttClose = r.document.createElement("div");
  tttClose.style.marginBottom="0px";
  tttClose.style.textAlign="right";
  tttCloseLink = r.document.createElement("a");
  tttCloseLink.setAttribute("href", "javascript:void(document.body.removeChild(document.getElementById('TicTacToe')));void(pm=parent.mainframe);void(pm.sendeText('/f '+pm.tttPlayer[(pm.tttImPlayer==1?10:1)]+' ich habe das TicTacToe-Spiel verlassen.')); document.body.removeChild(document.getElementById('TicTacToe'))");
  tttCloseLink.appendChild(r.document.createTextNode("X"));
  tttClose.appendChild(tttCloseLink);
  tttSpielfeld.appendChild(tttClose);
  tttSpielfeld.appendChild(tttTabelle);
  if(tttAbsolutePosition){
    tttSpielfeld.style.position = "absolute";
    tttSpielfeld.style.bottom = "10px";
    tttSpielfeld.style.right = "15px";
  }
  tttNachTbl = r.document.createElement("span");
  tttNachTbl.appendChild(r.document.createTextNode("Am Zug: "));
  tttAmZug = r.document.createElement("span");
  tttAmZug.setAttribute("id", "amZug");
  tttAmZug.appendChild(r.document.createTextNode(tttPlayer[10]));
  tttNachTbl.appendChild(tttAmZug);
  tttSpielfeld.appendChild(tttNachTbl);
  if(r.document.getElementById("TicTacToe"))
  r.document.body.removeChild(r.document.getElementById("TicTacToe"));
  r.document.body.insertBefore(tttSpielfeld, r.document.getElementsByTagName("p")[0]);
}
function tttEinladung(einlader, eingeladener){
  einlader = strip_tags(einlader);
  if(myNick == einlader || myNick.toLowerCase() == strip_tags(eingeladener).toLowerCase()){
    tttTmpPlayer[1] = einlader;
    tttTmpPlayer[10] = strip_tags(eingeladener);
    tttPlayerFrei[10] = false;
   if(myNick.toLowerCase()==strip_tags(eingeladener).toLowerCase()){
      document.write("l&auml;dt dich auf eine Runde Tic Tac Toe ein. <a href='#' onclick='sendeText(\"/ttt Regeln\");return false;'>Regeln anzeigen</a><p style='text-align:right;'><button onclick='tttElBtnsDeakt(this); sendeText(\"/ttt imFree, "+tttTmpPlayer[1]+", true\")'>annehmen</button><button onclick='tttElBtnsDeakt(this); sendeText(\"/ttt imFree, "+tttTmpPlayer[1]+", false\")'>ablehnen</button></p>");
    }
    else
      document.write("l&auml;dt "+eingeladener+" auf eine Runde Tic Tac Toe ein.");
  }
  else
    document.write("l&auml;dt "+eingeladener+" auf eine Runde Tic Tac Toe ein.");
  if((einlader==tttPlayer[1] || einlader == tttPlayer[10]) && !tttVorbei){
    tttVorbei = true;
    document.write(" Er/Sie beendet damit das derzeitige Spiel.");
    rd=parent.rightFrame.document;
    if(rd.getElementById("TicTacToe"))
      rd.body.removeChild(rd.getElementById("TicTacToe"));
  }
}
function tttElBtnsDeakt(objBtn){
  for(i in objBtn.parentNode.getElementsByTagName('button')){
    objBtn.parentNode.getElementsByTagName('button')[i].disabled=true;
  }
}
function tttImFree(freeUser, einlader, isFree){
  if(strip_tags(freeUser)==myNick)
    tttVorbei = true;
  if(!(myNick == einlader || myNick == tttTmpPlayer[10])){
    document.write((isFree=="true")?"nimmt die Tic Tac Toe-Einladung an.":"lehnt die Tic Tac Toe-Einladung ab.");
    return;
  }
  if(isFree=="false")
    document.write("lehnt die Tic Tac Toe-Einladung ab.");
  //Meldung für anderen Spieler des vorherigen Spieles falls dieses noch nicht beendet war
  if(!tttVorbei && isFree=="true"){
    document.write(" nimmt die Einladung an und verl&auml;sst damit das bisherige Spiel.");
    rd=parent.rightFrame.document;
    if(rd.getElementById("TicTacToe"))
      rd.body.removeChild(rd.getElementById("TicTacToe"));
    return;
  }
  if(strip_tags(freeUser) == tttTmpPlayer[10] && isFree=="true"){
    tttPlayerFrei[10] = true;
    document.write(" nimmt die Einladung an.");
  }
  if(tttPlayerFrei[1] && tttPlayerFrei[10])
    starteTicTacToe();
}
function starteTicTacToe(){
  tttPlayer = tttTmpPlayer;
  tttTmpPlayer = new Array();
  tttTmpPlayer[1]=tttTmpPlayer[10]="";
  tttZuege = 0;
  tttPlayerNr = 10;
  tttVorbei = false;
  tttImPlayer = (myNick==tttPlayer[1])?1:10;
  tttGame = new Array(6);
  for(i=0; i < tttGame.length; i++)
    tttGame[i] = new Array(0,0,0,0,0,0,0);
  tttMyColor = (tttImPlayer==10)?"playera":"playerb";
  tttZeichneTabelle();
}
Anzupassen ist lediglich folgendes in der ersten Codezeile:

Code: Alles auswählen

var tttBilderPfad = "http://www.beispiel.de/ttt/";
Hier bitte das Verzeichnis angeben, in dem ihr alle Bilder hochladet, die hier gebraucht werden. Das ist einmal ein transparentes gif-Bild mit dem Namen blank.gif und weiterhin je ein Symbol (idR X und O) für die beiden Spieler. Diese müssen mit playera.gif und playerb.gif benannt werden. Zischdings bietet im folgenden Post einige Bildchen dafür an.

Die folgenden 2 Einstellungen sind optional.

In der 2. Zeile steht folgendes:

Code: Alles auswählen

var tttAbsolutePosition = 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 tttAbsolutePosition = false;
In den folgenden 3 Zeilen werden die Rahmen-Styles für die einzelnen Felder, die Tabelle und das ganze Spielfeld (incl. "am Zug" und Exit-Link) definiert. Das kann bei bedarf auch angepasst werden.

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/ttt.js"></script>
Zuguterletzt muss noch ein Chatbefehl im Admin-Menü angelegt werden. Der Name muss, wie bei allen meinen Spielen genau eingehalten werden.

/ttt

Code: Alles auswählen

<script type=text/javascript>if(parent.info){tttBefehlsAuswertung('%user%','%me%');}else{document.write('spielt mit einem anderen Chatter Tic Tac Toe')}</script>
Zuletzt geändert von 1. FC Keller am 12.10.2016, 13:02, insgesamt 1-mal geändert.
Grund: copy+paste Fehler (Anpassung von vg zu ttt vergessen)

Hotel
Beiträge: 2
Registriert: 11.02.2011, 14:45

Re: Spiel: Tic Tac Toe

Ungelesener Beitrag von Hotel » 11.02.2011, 14:50

Hey, kannst du mir das mal genauer Erklären?

Edit by Team: Unnötiges Zitat entfernt.

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

Re: Spiel: Tic Tac Toe

Ungelesener Beitrag von 1. FC Keller » 11.02.2011, 15:42

Was ist denn unklar? Eigentlich ist der Einbau ziemlich detailliert erklärt.

Bei allgemeinen Fragen wie "was ist eine JS-Datei" oder ähnlichem können dir vielleicht die Script-FAQ weiterhelfen.

Hotel
Beiträge: 2
Registriert: 11.02.2011, 14:45

Re: Spiel: Tic Tac Toe

Ungelesener Beitrag von Hotel » 11.02.2011, 15:44

Ich verstehe das nicht, hast du Teamviewer oder Skype?
Skype:
gegenboter33

Lkwmonster
Beiträge: 85
Registriert: 15.01.2012, 10:29
Wohnort: In einem kleinen Bergbaudorf in China wo Kinder schon mit 5 Jahren in einem Bergbau arbeiten müssen.
Kontaktdaten:

Re: Spiel: Tic Tac Toe

Ungelesener Beitrag von Lkwmonster » 16.03.2012, 13:49

Hallo 1.FC Keller,
du hast ja geschrieben, Zischdings bietet im folgenden Post einige Bildchen dafür an.n Wo sind dann die Bilder? Oder muss ich die selber erstellen?
MfG
Lkwmonster

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

Re: tic tac toe

Ungelesener Beitrag von ZischDings » 16.03.2012, 17:12

Nein, musst Du natürlich nicht ;) Hier die Spielsteine:
Benötigt werden 1 blank.gif (gezippt zum Runterladen)
und 2 Spielsteine - bitte denkt daran, diese vor dem Upload umzubenennen
in playera.gif und playerb.gif

Bild Bild Bild Bild Bild Bild Bild Bild Bild Bild Bild Bild Bild Bild Bild
Bild Bild Bild Bild Bild Bild Bild Bild Bild Bild Bild Bild Bild Bild Bild

Bild Bild Bild Bild Bild Bild Bild Bild Bild Bild Bild Bild Bild Bild Bild
Bild Bild Bild Bild Bild Bild Bild Bild Bild Bild Bild Bild Bild Bild Bild
Meine Meinung steht fest, verwirren Sie mich nicht mit Tatsachen!

http://www.wasguckstu.de

rosita
Beiträge: 14
Registriert: 15.01.2007, 10:02
Wohnort: neukirchen / erzgeb

Re: Spiel: Tic Tac Toe

Ungelesener Beitrag von rosita » 28.01.2014, 19:04

Hallöchen ihr Lieben,
bei mir werden die Bilder nicht angezeigt.. was mach ich falsch?
Da sind schon irgendwelche Zeichen im Spielfeld und man sieht an der Seite nur so kleine Zeichen wenn man gesetzt hat.

liebe grüße
rosita

http://server3.webkicks.de/luebeck/

rosita
Beiträge: 14
Registriert: 15.01.2007, 10:02
Wohnort: neukirchen / erzgeb

Re: Spiel: Tic Tac Toe

Ungelesener Beitrag von rosita » 30.01.2014, 16:20

Keiner eine Idee?

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

Re: Spiel: Tic Tac Toe

Ungelesener Beitrag von Maxs » 30.01.2014, 18:11

Am besten schreibst du mal deinen Code hierher oder schreibst ihn mir per PN. ;)
Wäre es nicht adäquat, den Usus heterogener Termini zu minimieren?

rosita
Beiträge: 14
Registriert: 15.01.2007, 10:02
Wohnort: neukirchen / erzgeb

Re: Spiel: Tic Tac Toe

Ungelesener Beitrag von rosita » 30.01.2014, 21:06

Hallöchen Maxs,

der Code im Adminmenü so .. <
script type="text/javascript" src="http://www.repage.de/memberdata/radio-l ... "></script>

die js-Datei ..
Script:Zeigen

Code: Alles auswählen

var tttBilderPfad = "http://www.repage.de/member/radio-luebeck/ttt/";
var tttAbsolutePosition = true;
var tttTdBorderStyle = "#aaaaaa dotted 1px";
var tttSpielfeldBorderStyle = "#888888 solid 1px";
var tttTableBorderStyle = "#830 outset 2px";
var tttPlayerNr = 10;
var tttPlayer = new Array(2);
var tttGame;
var tttVorbei = true;
var tttBild1="playera";
var tttZuege = 0;
var tttPlayerFrei = new Array(2);
tttPlayerFrei[1] = true;
tttPlayerFrei[10] = false;
var tttTmpPlayer = new Array(2);
tttTmpPlayer[1] = "";
tttTmpPlayer[10] = "";
var tttImPlayer;
var tttMyColor;

function tttBtnClick(zeile, spalte){
  if(tttGame[zeile][spalte] != 0){
    alert("Dieses Feld ist bereits besetzt.");
    return;
  }
  if(tttVorbei){
    alert("Das Spiel ist vorbei.");
    return;
  }
  if(tttImPlayer == tttPlayerNr)
    sendeText("/ttt setzen, "+tttPlayer[(tttImPlayer==1?10:1)]+", "+zeile+", "+spalte);
  else
    alert("Du bist nicht dran!");
}
function tttSwitchPlayer(){
  tttBild = (tttPlayerNr==1)?"playerb":"playera";
  tttBild1 = (tttPlayerNr==1)?"playera":"playerb";
  tttPlayerNr = (tttPlayerNr==1)?10:1;
  parent.rightFrame.document.getElementById("amZug").firstChild.nodeValue  = tttPlayer[tttPlayerNr];
}
function tttBefehlsAuswertung(eingabe, sender){
  if(strip_tags(eingabe)==strip_tags(sender)){
    if(strip_tags(sender)==myNick)
      document.write("Tic Tac Toe 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 Tic Tac Toe</u></b><br>Ziel des Spiels ist es, sein Symbol 3 mal in eine Reihe zu bekommen. Ob waagerecht, senkrecht oder diagonal ist egal. Wer zuerst 3 seiner Symbole in eine Reihe bekommt hat gewonnen. Daher ist es mindestens genauso wichtig zu verhindern, dass der Gegner eine solche Reihe erreicht.<br>Es wird immer abwechselnd gesetzt. Durch Klicken auf ein beliebiges freies Feld kann man dort sein Zeichen setzen.<br>Die beiden Spieler setzen immer abwechselnd. Wenn das Spielfeld voll ist und niemand eine 3er-Reihe erreicht hat endet das Spiel unentschieden.");
   }
   else{
     document.getElementsByTagName("table")[document.getElementsByTagName("table").length-1].style.display = "none";
   }
  }
  else if(a.length==1){
    tttEinladung(sender, eingabe);
  }
  else if(a[0]=="imFree"){
    tttImFree(sender, a[1], a[2])
  }
  else if(a[0]=="setzen"){
    gegner=a[1];
   setzer=b;
   zeile=parseInt(a[2]);
   spalte=parseInt(a[3]);
   tttSetzen(gegner, setzer, zeile, spalte);
   document.getElementsByTagName("table")[document.getElementsByTagName("table").length-1].style.display = "none";
  }
}
function tttSetzen(gegner, setzer, zeile, spalte){
  var rd=parent.rightFrame.document;
  if((!(myNick == tttPlayer[1] || myNick == tttPlayer[10])) || (gegner != tttPlayer[1] && gegner != tttPlayer[10]) || (strip_tags(setzer) !=  tttPlayer[1] && strip_tags(setzer) != tttPlayer[10])){
    return;
  }
  if(tttGame[zeile][spalte] != 0){
    alert("Dieses Feld ist bereits belegt.");
    return;
  }
  if(tttVorbei){
    alert("Das Spiel  ist vorbei.");
    return;
  }
  if(strip_tags(setzer) != tttPlayer[tttPlayerNr]){
    alert("so nicht!");
    return;
  }
  tttSwitchPlayer();
  tttGame[zeile][spalte] = tttPlayerNr;
  parent.rightFrame.document.getElementsByName("tttSpalte"+spalte)[zeile].src = tttBilderPfad+tttBild1+".gif";
  parent.rightFrame.document.getElementsByName("tttSpalte"+spalte)[zeile].setAttribute("alt", (tttBild1=="playera"?"X":"O"));
  tttZuege++;
  if(tttZuege == 9){
    tttVorbei = true;
    alert("Unentschieden");
    rd.body.removeChild(rd.getElementById("TicTacToe"));
    tttPlayer[1] = myNick;
    tttPlayer[10] = myNick;
  }
  if(tttCheckIfWon()){
    tmp = (tttPlayerNr==1)?10:1;
    window.setTimeout('alert("'+tttPlayer[tmp]+' hat gewonnen.");rd=parent.rightFrame.document;if(rd.getElementById("TicTacToe")){rd.body.removeChild(rd.getElementById("TicTacToe"))}', 500);
    tttVorbei = true;
    tttPlayer[1] = myNick;
    tttPlayer[10] = myNick;
  }
}
function tttCheckIfWon(){
  if(tttGame[0][0]+tttGame[1][1]+tttGame[2][2] == tttPlayerNr*3 || tttGame[0][2]+tttGame[1][1]+tttGame[2][0] == tttPlayerNr*3)
    return true;
  for(i=0;i<=2;i++){
    if(tttGame[i][0]+tttGame[i][1]+tttGame[i][2] == tttPlayerNr*3 || tttGame[0][i]+tttGame[1][i]+tttGame[2][i] == tttPlayerNr*3){
      return true;
    }
  }
}
function tttZeichneTabelle(){
  ie=(document.all&&!window.innerWidth && navigator.userAgent.toLowerCase().indexOf("msie") != -1)?1:0;
  r = parent.rightFrame;
  tttTabelle = r.document.createElement("table");
  tttTabelle.style.borderCollapse = "collapse";
  tttTabelle.style.borderSpacing = "0px";
  tttTabelle.style.border = tttTableBorderStyle;
  tttTbody = r.document.createElement("tbody");
  tttErsteZeile = r.document.createElement("tr");
  for(i=0;i<3;i++){
    tttTr = r.document.createElement("tr");
    for(j=0;j<3;j++){
      tttTd = r.document.createElement("td");
      tttTd.style.border = tttTdBorderStyle;
      tttTd.style.textAlign = "center";
     tttTd.style.verticalAlign = "middle";
     tttTd.style.width = "45px";
     tttTd.style.height = "45px";
      if(!ie){
        tttTdImg = new Image();
        tttTdImg.src=tttBilderPfad+"blank.gif";
        tttTdImg.style.height = "30px";
        tttTdImg.style.width = "30px";
        tttTdImg.name = "tttSpalte"+j;
        eval("tttTdImg.onclick = function(e){parent.mainframe.tttBtnClick("+i+", "+j+")}");
        tttTd.appendChild(tttTdImg);
      }
      else{
        tttTdImg = "<img src='"+tttBilderPfad+"blank.gif' style='hight:30px;width:30px' onclick='parent.mainframe.tttBtnClick("+i+", "+j+")' name='tttSpalte"+j+"' />";
        tttTd.innerHTML += tttTdImg;
      }
      tttTr.appendChild(tttTd);
    }
    tttTbody.appendChild(tttTr);
  }
  tttTabelle.appendChild(tttTbody);
  tttSpielfeld = r.document.createElement("p");
  tttSpielfeld.style.border = tttSpielfeldBorderStyle;
  tttSpielfeld.setAttribute("id", "TicTacToe");
  tttClose = r.document.createElement("div");
  tttClose.style.marginBottom="0px";
  tttClose.style.textAlign="right";
  tttCloseLink = r.document.createElement("a");
  tttCloseLink.setAttribute("href", "javascript:void(document.body.removeChild(document.getElementById('TicTacToe')));void(pm=parent.mainframe);void(pm.sendeText('/f '+pm.tttPlayer[(pm.tttImPlayer==1?10:1)]+' ich habe das TicTacToe-Spiel verlassen.')); document.body.removeChild(document.getElementById('TicTacToe'))");
  tttCloseLink.appendChild(r.document.createTextNode("X"));
  tttClose.appendChild(tttCloseLink);
  tttSpielfeld.appendChild(tttClose);
  tttSpielfeld.appendChild(tttTabelle);
  if(tttAbsolutePosition){
    tttSpielfeld.style.position = "absolute";
    tttSpielfeld.style.bottom = "10px";
    tttSpielfeld.style.right = "15px";
  }
  tttNachTbl = r.document.createElement("span");
  tttNachTbl.appendChild(r.document.createTextNode("Am Zug: "));
  tttAmZug = r.document.createElement("span");
  tttAmZug.setAttribute("id", "amZug");
  tttAmZug.appendChild(r.document.createTextNode(tttPlayer[10]));
  tttNachTbl.appendChild(tttAmZug);
  tttSpielfeld.appendChild(tttNachTbl);
  if(r.document.getElementById("TicTacToe"))
  r.document.body.removeChild(r.document.getElementById("TicTacToe"));
  r.document.body.insertBefore(tttSpielfeld, r.document.getElementsByTagName("p")[0]);
}
function tttEinladung(einlader, eingeladener){
  einlader = strip_tags(einlader);
  if(myNick == einlader || myNick.toLowerCase() == strip_tags(eingeladener).toLowerCase()){
    tttTmpPlayer[1] = einlader;
    tttTmpPlayer[10] = strip_tags(eingeladener);
    tttPlayerFrei[10] = false;
   if(myNick.toLowerCase()==strip_tags(eingeladener).toLowerCase()){
      document.write("l&auml;dt dich auf eine Runde Tic Tac Toe ein. <a href='#' onclick='sendeText(\"/ttt Regeln\");return false;'>Regeln anzeigen</a><p style='text-align:right;'><button onclick='tttElBtnsDeakt(this); sendeText(\"/ttt imFree, "+tttTmpPlayer[1]+", true\")'>annehmen</button><button onclick='tttElBtnsDeakt(this); sendeText(\"/ttt imFree, "+tttTmpPlayer[1]+", false\")'>ablehnen</button></p>");
    }
    else
      document.write("l&auml;dt "+eingeladener+" auf eine Runde Tic Tac Toe ein.");
  }
  else
    document.write("l&auml;dt "+eingeladener+" auf eine Runde Tic Tac Toe ein.");
  if((einlader==tttPlayer[1] || einlader == tttPlayer[10]) && !tttVorbei){
    tttVorbei = true;
    document.write(" Er/Sie beendet damit das derzeitige Spiel.");
    rd=parent.rightFrame.document;
    if(rd.getElementById("TicTacToe"))
      rd.body.removeChild(rd.getElementById("TicTacToe"));
  }
}
function tttElBtnsDeakt(objBtn){
  for(i in objBtn.parentNode.getElementsByTagName('button')){
    objBtn.parentNode.getElementsByTagName('button')[i].disabled=true;
  }
}
function tttImFree(freeUser, einlader, isFree){
  if(strip_tags(freeUser)==myNick)
    tttVorbei = true;
  if(!(myNick == einlader || myNick == tttTmpPlayer[10])){
    document.write((isFree=="true")?"nimmt die Tic Tac Toe-Einladung an.":"lehnt die Tic Tac Toe-Einladung ab.");
    return;
  }
  if(isFree=="false")
    document.write("lehnt die Tic Tac Toe-Einladung ab.");
  //Meldung für anderen Spieler des vorherigen Spieles falls dieses noch nicht beendet war
  if(!tttVorbei && isFree=="true"){
    document.write(" nimmt die Einladung an und verl&auml;sst damit das bisherige Spiel.");
    rd=parent.rightFrame.document;
    if(rd.getElementById("TicTacToe"))
      rd.body.removeChild(rd.getElementById("TicTacToe"));
    return;
  }
  if(strip_tags(freeUser) == tttTmpPlayer[10] && isFree=="true"){
    tttPlayerFrei[10] = true;
    document.write(" nimmt die Einladung an.");
  }
  if(tttPlayerFrei[1] && tttPlayerFrei[10])
    starteTicTacToe();
}
function starteTicTacToe(){
  tttPlayer = tttTmpPlayer;
  tttTmpPlayer = new Array();
  tttTmpPlayer[1]=tttTmpPlayer[10]="";
  tttZuege = 0;
  tttPlayerNr = 10;
  tttVorbei = false;
  tttImPlayer = (myNick==tttPlayer[1])?1:10;
  tttGame = new Array(6);
  for(i=0; i < tttGame.length; i++)
    tttGame[i] = new Array(0,0,0,0,0,0,0);
  tttMyColor = (tttImPlayer==10)?"playera":"playerb";
  tttZeichneTabelle();
}

Dachte der Fehler liegt bei dem rotmarkierten *ttt/* und hab dies als Test weggenommen. Auch da das gleiche Problem.

vielen Dank für Deine Mühe.

liebe Grüße
rosita
Zuletzt geändert von Maxs am 30.01.2014, 21:41, insgesamt 2-mal geändert.
Grund: Code versteckt ;)

rosita
Beiträge: 14
Registriert: 15.01.2007, 10:02
Wohnort: neukirchen / erzgeb

Re: Spiel: Tic Tac Toe

Ungelesener Beitrag von rosita » 30.01.2014, 21:29

Hallöchen Maxs,
ich hab den Fehler gefunden. Hatte eigentlich sogar zwei.
das ttt mußte wie vermutet weg und an das member mußte noch data ran..

vielen Dank.

liebe Grüße
rosita

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

Re: Spiel: Tic Tac Toe

Ungelesener Beitrag von Maxs » 30.01.2014, 21:41

Sehr schön :mrgreen:
Ja, da muss man bei den URLs immer schön aufpassen. ;)
Wäre es nicht adäquat, den Usus heterogener Termini zu minimieren?

Oma_Zockt
Beiträge: 4
Registriert: 22.11.2015, 10:23

Re: Spiel: Tic Tac Toe

Ungelesener Beitrag von Oma_Zockt » 22.11.2015, 13:51

ich check nicht, wie ich das jetzt in meinen chat einfüge, kann mir das jemand erklären?

Flächenblitz
Beiträge: 54
Registriert: 22.06.2015, 09:35
Wohnort: zu Hause

Re: Spiel: Tic Tac Toe

Ungelesener Beitrag von Flächenblitz » 23.11.2015, 09:46

Die Datei mit der Endung .js lädst Du auf Deinen eigenen Webspace.

Die Bilder musst Du entweder selbst erstellen oder Dir welche von "Zischdings" (Post oben) holen und entsprechend in playera.jpg usw. (Siehe 1. Post der Seite 1 !)
Anzupassen ist lediglich folgendes in der ersten Codezeile:
Code:
var tttBilderPfad = "http://www.beispiel.de/ttt/";
benennen.
Auch diese Bilder auf Deinen Webspace.

Zudem den Link am Anfang des Scripts richtig setzen.
Dann den Chatbefehl erstellen und ggf. reconnecten oder neu einloggen.

Gruß Mike

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast