var vgBilderPfad = "
http://www.beispiel.de/4gewinnt/";
var vgAbsolutePosition = true;
var vgTdBorderStyle = "#aaaaaa dotted 1px";
var vgSpielfeldBorderStyle = "#888888 solid 1px";
var vgTableBorderStyle = "#830 outset 2px";
var vgPlayerNr = 10;
var vgPlayer = new Array(2);
var vgGame;
var vgVorbei = true;
var vgBild1="playera";
var vgZuege = 0;
var vgPlayerFrei = new Array(2);
vgPlayerFrei[1] = true;
vgPlayerFrei[10] = false;
var vgTmpPlayer = new Array(2);
vgTmpPlayer[1] = "";
vgTmpPlayer[10] = "";
var vgImPlayer;
var vgMyColor;
function vgBtnClick(spalte){
if(vgGame[0][spalte] != 0){
alert("Diese Reihe ist bereits voll.");
return;
}
if(vgVorbei){
alert("Das Spiel ist vorbei.");
return;
}
if(vgImPlayer == vgPlayerNr)
sendeText("/4gewinnt setzen, "+vgPlayer[(vgImPlayer==1?10:1)]+", "+spalte);
else
alert("Du bist nicht dran!");
}
function vgSwitchPlayer(){
vgBild = (vgPlayerNr==1)?"playerb":"playera";
vgBild1 = (vgPlayerNr==1)?"playera":"playerb";
vgPlayerNr = (vgPlayerNr==1)?10:1;
parent.rightFrame.document.getElementById("amZug").firstChild.nodeValue = vgPlayer[vgPlayerNr];
}
function vgBefehlsAuswertung(eingabe, sender){
if(strip_tags(eingabe)==strip_tags(sender)){
if(strip_tags(sender)==myNick)
document.write("4-Gewinnt 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 4 Gewinnt</u></b><br>Ziel des Spiels ist es, 4 seiner Steine in eine Reihe zu bekommen. Ob waagerecht, senkrecht oder diagonal ist egal. Wer zuerst 4 Steine 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. Man wirft einen Stein in eine Spalte indem man die Maus darüber hält und ihn durch Klicken fallen lässt.<br>Die beiden Spieler werfen immer abwechselnd je einen Spielstein. Wenn das Spielfeld voll ist und niemand eine 4er-Reihe erreicht hat endet das Spiel unentschieden.");
}
else{
document.getElementsByTagName("table")[document.getElementsByTagName("table").length-1].style.display = "none";
}
}
else if(a.length==1){
vgEinladung(sender, eingabe);
}
else if(a[0]=="imFree"){
vgImFree(sender, a[1], a[2])
}
else if(a[0]=="setzen"){
gegner=a[1];
setzer=b;
spalte=parseInt(a[2]);
vgSetzen(gegner, setzer, spalte);
document.getElementsByTagName("table")[document.getElementsByTagName("table").length-1].style.display = "none";
}
}
function vgSetzen(gegner, setzer, spalte){
var rd=parent.rightFrame.document;
if((!(myNick == vgPlayer[1] || myNick == vgPlayer[10])) || (gegner != vgPlayer[1] && gegner != vgPlayer[10]) || (strip_tags(setzer) != vgPlayer[1] && strip_tags(setzer) != vgPlayer[10])){
return;
}
if(vgGame[0][spalte] != 0){
alert("Diese Reihe ist bereits voll.");
return;
}
if(vgVorbei){
alert("Das Spiel ist vorbei.");
return;
}
if(strip_tags(setzer) != vgPlayer[vgPlayerNr]){
alert("so nicht!");
return;
}
vgSwitchPlayer();
for(zeile=vgGame.length-1; zeile > 0; zeile--){
if(vgGame[zeile][spalte] == 0)
break;
}
vgGame[zeile][spalte] = vgPlayerNr;
fall(zeile, spalte, -1, vgBild);
vgZuege++;
if(vgZuege == 42){
vgVorbei = true;
alert("Unentschieden");
if(rd.getElementById("VierGewinnt"))
rd.body.removeChild(rd.getElementById("VierGewinnt"));
vgPlayer[1] = myNick;
vgPlayer[10] = myNick;
}
if(vgCheckIfWon(zeile, spalte)){
tmp = (vgPlayerNr==1)?10:1;
window.setTimeout('alert("'+vgPlayer[tmp]+' hat gewonnen.");rd=parent.rightFrame.document;if(rd.getElementById("VierGewinnt")){rd.body.removeChild(rd.getElementById("VierGewinnt"))}', 2000);
vgVorbei = true;
vgPlayer[1] = myNick;
vgPlayer[10] = myNick;
}
}
function fall(zeile, spalte, akt, PlayerBild){
if(!parent.rightFrame.document.getElementById("VierGewinnt"))
return;
if(akt >= 0){
parent.rightFrame.document.getElementsByName("spalte"+spalte)[akt].src = vgBilderPfad+"0.gif";
parent.rightFrame.document.getElementsByName("spalte"+spalte)[akt].setAttribute("alt", "");
}
akt++;
if(akt <= zeile){
parent.rightFrame.document.getElementsByName("spalte"+spalte)[akt].src = vgBilderPfad+PlayerBild+".gif";
parent.rightFrame.document.getElementsByName("spalte"+spalte)[akt].setAttribute("alt", (PlayerBild=="playera"?"X":"O"));
}
if(akt < zeile)
window.setTimeout("fall("+zeile+", "+spalte+", "+akt+", '"+PlayerBild+"')", 300);
}
function vgCheckIfWon(zeile, spalte){
document.write("Zeile: "+zeile+" Spalte:"+spalte+"<br>");
zeile = parseInt(zeile);
spalte = parseInt(spalte);
//direction: down |
check = 0;
for(i=zeile; i<=5;i++){
if(vgGame
[spalte] == vgGame[zeile][spalte])
check++;
else
break;
}
if(check >= 4){
return true;
}
//direction left/right --
check = 1;
for(i=spalte+1; i<=6;i++){
if(vgGame[zeile] == vgGame[zeile][spalte])
check++;
else
break;
}
for(i=spalte-1; i>=0;i--){
if(vgGame[zeile] == vgGame[zeile][spalte])
check++;
else
break;
}
if(check >= 4){
return true;
}
//direction diagonal \
check = 1;
for(i=spalte+1, j=zeile+1; i<=6 && j<=5;i++, j++){
if(vgGame[j] == vgGame[zeile][spalte])
check++;
else
break;
}
for(i=spalte-1, j=zeile-1; i>=0 && j>=0;i--, j--){
if(vgGame[j] == vgGame[zeile][spalte])
check++;
else
break;
}
if(check >= 4){
return true;
}
//direction diagonal /
check = 1;
for(i=spalte+1, j=zeile-1; i<=6 && j>=0;i++, j--){
if(vgGame[j] == vgGame[zeile][spalte])
check++;
else
break;
}
for(i=spalte-1, j=zeile+1; i>=0 && j<=5;i--, j++){
if(vgGame[j] == vgGame[zeile][spalte])
check++;
else
break;
}
if(check >= 4){
return true;
}
}
function vgZeichneTabelle(){
ie=(document.all&&!window.innerWidth && navigator.userAgent.toLowerCase().indexOf("msie") != -1)?1:0;
r = parent.rightFrame;
vgTabelle = r.document.createElement("table");
vgTabelle.style.borderCollapse = "collapse";
vgTabelle.style.borderSpacing = "0px";
vgTabelle.style.border = vgTableBorderStyle;
vgTbody = r.document.createElement("tbody");
vgErsteZeile = r.document.createElement("tr");
for(i=0;i<7;i++){
vgTh = r.document.createElement("th");
vgTh.style.textAlign = "center";
//vgTh.style.border = vgTdBorderStyle;
vgThImg = r.document.createElement("img");
vgThImg.setAttribute("src", vgBilderPfad+"0.gif")
vgThImg.style.width = "15px";
vgThImg.style.height = "15px";
eval("vgThImg.onclick = function(e){parent.mainframe.vgBtnClick("+i+"); if(!parent.mainframe.vgVorbei&&parent.mainframe.vgPlayerNr==parent.mainframe.vgImPlayer){this.src='"+vgBilderPfad+vgMyColor+"1.gif'}}");
eval("vgThImg.onmouseover = function(e){if(!parent.mainframe.vgVorbei){this.src='"+vgBilderPfad+"'+parent.mainframe.vgBild1+'1.gif\';}}");
vgThImg.onmouseout = function(e){this.src=parent.mainframe.vgBilderPfad+"0.gif"};
vgTh.appendChild(vgThImg);
vgErsteZeile.appendChild(vgTh);
}
vgTbody.appendChild(vgErsteZeile);
for(i=0;i<6;i++){
vgTr = r.document.createElement("tr");
for(j=0;j<7;j++){
vgTd = r.document.createElement("td");
vgTd.style.border = vgTdBorderStyle;
if(!ie){
vgTdImg = new Image();
vgTdImg.src=vgBilderPfad+"0.gif";
vgTdImg.style.height = "15px";
vgTdImg.style.width = "15px";
vgTdImg.name = "spalte"+j;
eval("vgTdImg.onclick = function(e){parent.mainframe.vgBtnClick("+j+")}");
vgTd.appendChild(vgTdImg);
}
else{
vgTdImg = "<img src='"+vgBilderPfad+"0.gif' style='hight:15px;width:15px' onclick='parent.mainframe.vgBtnClick("+j+")' name='spalte"+j+"' />";
vgTd.innerHTML += vgTdImg;
}
vgTr.appendChild(vgTd);
}
vgTbody.appendChild(vgTr);
}
vgTabelle.appendChild(vgTbody);
vgSpielfeld = r.document.createElement("p");
vgSpielfeld.style.border = vgSpielfeldBorderStyle;
vgSpielfeld.setAttribute("id", "VierGewinnt");
vgClose = r.document.createElement("div");
vgClose.style.marginBottom="0px";
vgClose.style.textAlign="right";
vgCloseLink = r.document.createElement("a");
vgCloseLink.setAttribute("href", "javascript:void(document.body.removeChild(document.getElementById('VierGewinnt')));void(pm=parent.mainframe);void(pm.sendeText('/f '+pm.vgPlayer[(pm.vgImPlayer==1?10:1)]+' ich habe das 4-Gewinnt-Spiel verlassen.'));");
vgCloseLink.appendChild(r.document.createTextNode("X"));
vgClose.appendChild(vgCloseLink);
vgSpielfeld.appendChild(vgClose);
vgSpielfeld.appendChild(vgTabelle);
if(vgAbsolutePosition){
vgSpielfeld.style.position = "absolute";
vgSpielfeld.style.bottom = "10px";
vgSpielfeld.style.right = "15px";
}
vgNachTbl = r.document.createElement("span");
vgNachTbl.appendChild(r.document.createTextNode("Am Zug: "));
vgAmZug = r.document.createElement("span");
vgAmZug.setAttribute("id", "amZug");
vgAmZug.appendChild(r.document.createTextNode(vgPlayer[10]));
vgNachTbl.appendChild(vgAmZug);
vgSpielfeld.appendChild(vgNachTbl);
if(r.document.getElementById("VierGewinnt"))
r.document.body.removeChild(r.document.getElementById("VierGewinnt"));
r.document.body.insertBefore(vgSpielfeld, r.document.getElementsByTagName("p")[0]);
}
function vgEinladung(einlader, eingeladener){
einlader = strip_tags(einlader);
if(myNick == einlader || myNick.toLowerCase() == strip_tags(eingeladener).toLowerCase()){
vgTmpPlayer[1] = einlader;
vgTmpPlayer[10] = strip_tags(eingeladener);
vgPlayerFrei[10] = false;
if(myNick.toLowerCase()==strip_tags(eingeladener).toLowerCase()){
document.write("lädt dich auf eine Runde 4 Gewinnt ein. <a href='#' onclick='sendeText(\"/4gewinnt Regeln\");return false;'>Regeln anzeigen</a><p style='text-align:right;'><button onclick='vgElBtnsDeakt(this); sendeText(\"/4gewinnt imFree, "+vgTmpPlayer[1]+", true\")'>annehmen</button><button onclick='vgElBtnsDeakt(this); sendeText(\"/4gewinnt imFree, "+vgTmpPlayer[1]+", false\")'>ablehnen</button></p>");
}
else
document.write("lädt "+eingeladener+" auf eine Runde 4 Gewinnt ein.");
}
else
document.write("lädt "+eingeladener+" auf eine Runde 4 Gewinnt ein.");
if((einlader==vgPlayer[1] || einlader == vgPlayer[10]) && !vgVorbei){
vgVorbei = true;
document.write(" Er/Sie beendet damit das derzeitige Spiel.");
rd=parent.rightFrame.document;
if(rd.getElementById("VierGewinnt"))
rd.body.removeChild(rd.getElementById("VierGewinnt"));
}
}
function vgElBtnsDeakt(objBtn){
for(i in objBtn.parentNode.getElementsByTagName('button')){
objBtn.parentNode.getElementsByTagName('button').disabled=true;
}
}
function vgImFree(freeUser, einlader, isFree){
if(strip_tags(freeUser)==myNick)
vgVorbei = true;
if(!(myNick == einlader || myNick == vgTmpPlayer[10])){
document.write((isFree=="true")?"nimmt die 4 Gewinnt-Einladung an.":"lehnt die 4 Gewinnt-Einladung ab.");
return;
}
if(isFree=="false")
document.write("lehnt die 4 Gewinnt-Einladung ab.");
//Meldung für anderen Spieler des vorherigen Spieles falls dieses noch nicht beendet war
if(!vgVorbei && isFree=="true"){
document.write(" nimmt die Einladung an und verlässt damit das bisherige Spiel.");
rd=parent.rightFrame.document;
if(rd.getElementById("VierGewinnt"))
rd.body.removeChild(rd.getElementById("VierGewinnt"));
return;
}
if(strip_tags(freeUser) == vgTmpPlayer[10] && isFree=="true"){
vgPlayerFrei[10] = true;
document.write(" nimmt die Einladung an.");
}
if(vgPlayerFrei[1] && vgPlayerFrei[10])
starteVierGewinnt();
}
function starteVierGewinnt(){
vgPlayer = vgTmpPlayer;
vgTmpPlayer = new Array();
vgTmpPlayer[1]=vgTmpPlayer[10]="";
vgZuege = 0;
vgPlayerNr = 10;
vgVorbei = false;
vgImPlayer = (myNick==vgPlayer[1])?1:10;
vgGame = new Array(6);
for(i=0; i < vgGame.length; i++)
vgGame = new Array(0,0,0,0,0,0,0);
vgMyColor = (vgImPlayer==10)?"playera":"playerb";
vgZeichneTabelle();
}