 |
Forum zum WebKicks.De Chatsystem Support-Forum zum WebKicks-Chatsystem
|
Dieses Forum dient als Archiv, es können keine neuen Beiträge eröffnet werden.
Hier geht es zum neuen Webkicks Forum.
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
1. FC Keller Moderator
Anmeldedatum: 04.07.2004 Beiträge: 4176 Wohnort: heimat:// Thüringen.Deutschland.eu/ Zeulenroda
|
Verfasst am: 13.01.2008, 18:41 Titel: Spiel: Tic Tac Toe |
|
|
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
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: | 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ä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ädt "+eingeladener+" auf eine Runde Tic Tac Toe ein.");
}
else
document.write("lä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ä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: | var vgBilderPfad = "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: | 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: | 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: | <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: | <script type=text/javascript>if(parent.info){tttBefehlsAuswertung('%user%','%me%');}else{document.write('spielt mit einem anderen Chatter Tic Tac Toe')}</script> |
Zuletzt bearbeitet von 1. FC Keller am 17.02.2008, 18:43, insgesamt 2-mal bearbeitet |
|
Nach oben |
|
 |
Zischdings Webkicks - Team
Anmeldedatum: 22.12.2004 Beiträge: 6161
|
Verfasst am: 13.01.2008, 20:04 Titel: |
|
|
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

Zuletzt bearbeitet von Zischdings am 14.01.2008, 02:04, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
toby01

Anmeldedatum: 16.12.2007 Beiträge: 524
|
Verfasst am: 13.01.2008, 20:22 Titel: |
|
|
ich habe das spieleingebaut nur tut sich nichts
da kommt nur
Rayquaza |
|
Nach oben |
|
 |
Zischdings Webkicks - Team
Anmeldedatum: 22.12.2004 Beiträge: 6161
|
Verfasst am: 13.01.2008, 20:26 Titel: |
|
|
du hast das script in deiner ankündigung wie folgt verlinkt:
Code: | <script type="text/javascript" src="http://wkhost.webkicks.de/ttt.js"></script> |
das kann natürlich nicht funktionieren, die adresse sollte schon stimmen  |
|
Nach oben |
|
 |
toby01

Anmeldedatum: 16.12.2007 Beiträge: 524
|
Verfasst am: 13.01.2008, 20:36 Titel: |
|
|
ah thx zischdings |
|
Nach oben |
|
 |
VampireHIM
Anmeldedatum: 15.06.2006 Beiträge: 328
|
Verfasst am: 13.01.2008, 22:09 Titel: |
|
|
Bei Opera
Flüstermeldung "Ich habe das spiel Verlassen" - geht an einem selbst
und nach dem spiel ende schliesst sich das feld nicht von alleine. |
|
Nach oben |
|
 |
hamigra
Anmeldedatum: 31.08.2006 Beiträge: 1601 Wohnort: Werdau
|
Verfasst am: 13.01.2008, 22:43 Titel: |
|
|
<<muß @VampireHIM recht geben - auch bei unentschieden bleiben bei beiden Spielern die Spielfelder stehen.
Aber sonst perfekt DANKE 1.FC  |
|
Nach oben |
|
 |
Katzer
Anmeldedatum: 12.04.2007 Beiträge: 42 Wohnort: Remscheid
|
Verfasst am: 14.01.2008, 01:44 Titel: |
|
|
Danke erstmal für die 3 Super Games ...
Hier fehlt noch ne kleinigkeit ...
Die BLANK.GIF
Beim FF wird nen Rotes X angezeigt.
MFG Katzer |
|
Nach oben |
|
 |
Zischdings Webkicks - Team
Anmeldedatum: 22.12.2004 Beiträge: 6161
|
Verfasst am: 14.01.2008, 02:07 Titel: |
|
|
oops total verschwitzt sry :p
hier bitteschön blank.gif (gezippt) |
|
Nach oben |
|
 |
anschke
Anmeldedatum: 31.12.2007 Beiträge: 80 Wohnort: nähe münchen
|
Verfasst am: 14.01.2008, 06:44 Titel: |
|
|
bei mir ist das kästchen da allerdings besteht der hintergrund aus lauter roten kreuzen (die immer kommen wenn kein bild angezeigt werden kann) |
|
Nach oben |
|
 |
toby01

Anmeldedatum: 16.12.2007 Beiträge: 524
|
Verfasst am: 14.01.2008, 07:02 Titel: |
|
|
hatte ich auch, da fehle die datei blank.gif, die hatte ich mit von 4 gewinnt geklaut, dann gings |
|
Nach oben |
|
 |
schaggy07

Anmeldedatum: 22.11.2007 Beiträge: 258 Wohnort: Eggebek
|
Verfasst am: 14.01.2008, 14:46 Titel: |
|
|
Kann man das nciht eigendlich auch machen, das das Spielfelf eventuell als PopUp angezeigt wird, und nicht in der OL |
|
Nach oben |
|
 |
cro
Anmeldedatum: 08.04.2007 Beiträge: 225
|
Verfasst am: 14.01.2008, 22:30 Titel: |
|
|
Hey!
1. Das blank Bild nicht angezeigt.
2. Wie beim Spiel 4Gewinnt geht bei mir nichts.
Bei mir klappen die Spiele nie.
Zuletzt bearbeitet von cro am 14.01.2008, 22:57, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Link
Anmeldedatum: 05.02.2006 Beiträge: 312
|
Verfasst am: 14.01.2008, 22:38 Titel: |
|
|
Grundscriptsammlung am anfang der Ankündigung? |
|
Nach oben |
|
 |
cro
Anmeldedatum: 08.04.2007 Beiträge: 225
|
Verfasst am: 14.01.2008, 22:40 Titel: |
|
|
jo
auch ohne zeilenumbruch
also der script ist der allererste |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|