Für alle die noch nie an einem PC saßen und langeweile hatten:
In diesem Spiel geht es darum zu "erraten" wo sich die minen befinden. wenn ihr ein feld aufdeckt zeigt es euch an wie viele minen an diesem feld anliegen (horizontal, vertikal oder diagonal) Daher haben die aufgedeckten Felder immer einen wert zwischen 0 und 8. Ist der wert 0, so werden automatisch alle felder aufgedeckt die diesem anliegen.
Der Einbau ist wie immer... den folgenden code angepasst in eine js-Datei speichern und hochladen:
Code: Alles auswählen
mwBlank="http://wktools.net/images/games/4gewinnt/blue/0.gif";
mwFahne="http://wktools.net/images/games/minesweeper/moni/fahne.gif";
mwMineOK="http://wktools.net/images/games/minesweeper/moni/bombe.gif";
mwMineExp="http://wktools.net/images/games/minesweeper/moni/bombee.gif";
mwImgs="http://wktools.net/images/games/minesweeper/moni/";
mwBilder=[mwImgs+"00.gif", mwImgs+"01.gif", mwImgs+"02.gif", mwImgs+"03.gif", mwImgs+"04.gif", mwImgs+"05.gif", mwImgs+"06.gif", mwImgs+"07.gif", mwImgs+"08.gif"];
mwCols=10;
mwRows=12;
mwMines=14;
mwBefehl = "/mw";
mwSpielfeldBorderStyle="1px dotted #006600";
mwTableBorderStyle="";
mwTdBorderStyle="4px outset #444444";
mwAbsolutePosition=1;
mwSpielfeldColor="#aaaaaa";
//feste spielvariablen - nicht aendern!
mwTmpPlayer="";
mwLoesung=[];
mwOffen=[];
mwAnliegend=[];
mwGameRunning=0;
function mwBefehlsAuswertung(eingabe, sender){
u=strip_tags(eingabe);
m=strip_tags(sender);
u2=u.split(" ");
if(!mwGameRunning && u!=""){
document.write("im Moment läuft kein Minesweeper-Spiel. Spiel starten per \""+mwBefehl+"\"");
return;
}
if(!mwGameRunning){
document.write("startet ein Minesweeper-Spiel.");
tmp="";
for(i=0;i<mwMines;i++){
tmp += " "+parseInt(Math.random() * mwCols*mwRows);
}
sendeText(mwBefehl+tmp, m);
mwGameRunning=1;
mwTmpPlayer=m;
window.setTimeout("if(mwGameRunning==1)mwGameRunning=0;", 3000); //Wenn kein Spiel innerhalb von 3 Sekunden gestartet wird wird der Status wieder auf "kein Spiel laeuft" gesetzt.
return;
}
if(mwGameRunning==1 && m==mwTmpPlayer){
mwGameRunning=2;
mwLoesung=u.split(" ");
for(i=0;i<mwLoesung.length;i++)mwLoesung[i]=parseInt(mwLoesung[i]);
mwTmpPlayer="";
mwZeichneTabelle();
mwOffen=[];
mwAnliegend=[];
mwStatus=0;
document.getElementsByTagName("table")[document.getElementsByTagName("table").length-1].style.display="none";
return;
}
if(mwGameRunning != 2) return;
mwZug(u);
}
function mwZug(u){
u=u.toLowerCase();
u1=u.split(" ");
tbls=document.getElementsByTagName("table");
if(u1.length != 2){
document.write("ungültiger Zug.");
return
}
u1[0]=parseInt(u1[0]);
u1[1]=parseInt(u1[1]);
if(u1[0] == 2){
parent.rightFrame.document.getElementsByName("mwfeld")[u1[1]].src=mwFahne;
tbls[tbls.length-1].style.display="none";
return;
}
if(u1[0] == 1){
if(mwLoesung.inArray(u1[1])){
document.write("Minesweeper verloren!");
for(i=0;i<mwLoesung.length;i++)
parent.rightFrame.document.getElementsByName("mwfeld")[mwLoesung[i]].src=mwMineOK;
parent.rightFrame.document.getElementsByName("mwfeld")[u1[1]].src=mwMineExp;
mwGameRunning=0;
setTimeout('r=parent.rightFrame;r.document.body.removeChild(r.document.getElementById("Minesweeper"))', 3000);
return;
}
if(!mwOffen.inArray(parseInt(u1[1])))mwAufdecken(u1[1]);
if(mwOffen.length==(mwCols*mwRows-mwMines)){//gewonnen
document.write("Minesweeper gewonnen!");
mwGameRunning=0;
setTimeout('r=parent.rightFrame;r.document.body.removeChild(r.document.getElementById("Minesweeper"))', 3000);
return;
}
else{
tbls[tbls.length-1].style.display="none";
}
}
}
function mwZeichneTabelle(){
ie=(document.all&&!window.innerWidth && navigator.userAgent.toLowerCase().indexOf("msie") != -1)?1:0;
r = parent.rightFrame;
rd=r.document;
mwTabelle = rd.createElement("table");
mwTabelle.style.borderCollapse = "collapse";
mwTabelle.style.borderSpacing = "0px";
mwTabelle.style.border = mwTableBorderStyle;
mwTbody = rd.createElement("tbody");
k=0;
for(i=0;i<mwRows;i++){
mwTr = rd.createElement("tr");
for(j=0;j<mwCols;j++){
mwTd = rd.createElement("td");
mwTd.style.border = mwTdBorderStyle;
if(!ie){
mwTdImg = new Image();
mwTdImg.src=mwBlank;
mwTdImg.style.height = "10px";
mwTdImg.style.width = "10px";
mwTdImg.name = "mwfeld";
eval("mwTdImg.onmouseup = function(e){e=e?e:window.event; k=e.which==1?1:2; parent.mainframe.sendeText('"+mwBefehl+" '+k+' "+k+"');}");
mwTdImg.oncontextmenu=function(e){return false;};
mwTd.appendChild(mwTdImg);
}
else{
mwTdImg = "<img src='"+mwBlank+"' style='hight:10px;width:10px;' name='mwfeld' />";
mwTd.innerHTML += mwTdImg;
eval('mwTd.getElementsByTagName("img")[0].onmouseup=function(e){e=e?e:parent.rightFrame.event; k=((e.button==1)?1:2); parent.mainframe.sendeText("'+mwBefehl+' "+k+" '+k+'"); return false;}');
mwTd.getElementsByTagName("img")[0].oncontextmenu=function(e){return false;};
}
k++;
mwTr.appendChild(mwTd);
}
mwTbody.appendChild(mwTr);
}
mwTabelle.appendChild(mwTbody);
mwSpielfeld = rd.createElement("p");
mwSpielfeld.style.backgroundColor=mwSpielfeldColor;
mwSpielfeld.style.border = mwSpielfeldBorderStyle;
mwSpielfeld.setAttribute("id", "Minesweeper");
mwClose = rd.createElement("div");
mwClose.style.marginBottom="0px";
mwClose.style.textAlign="right";
mwCloseLink = rd.createElement("a");
mwCloseLink.setAttribute("href", "javascript:void(document.body.removeChild(document.getElementById('Minesweeper')));");
mwCloseLink.appendChild(rd.createTextNode("X"));
mwClose.appendChild(mwCloseLink);
mwSpielfeld.appendChild(mwClose);
mwSpielfeld.appendChild(mwTabelle);
if(mwAbsolutePosition){
mwSpielfeld.style.position = "absolute";
mwSpielfeld.style.zIndex = "2";
mwSpielfeld.style.bottom = "10px";
mwSpielfeld.style.right = "15px";
}
if(rd.getElementById("Minesweeper"))
rd.body.removeChild(rd.getElementById("Minesweeper"));
rd.body.insertBefore(mwSpielfeld, rd.getElementsByTagName("p")[0]);
}
function mwAufdecken(mwFeldID){
var mineCount=0;
var anliegend=[];
mwFeldID=parseInt(mwFeldID);
mwOffen[mwOffen.length]=mwFeldID;
if(mwFeldID>=mwCols){
j=mwFeldID-mwCols;
if(mwFeldID%mwCols)j--;
for(;(j%mwCols || (mwFeldID%mwCols<2)) && j<(mwFeldID-mwCols+2);j++){
if(mwLoesung.inArray(j))mineCount++;
anliegend[anliegend.length]=j;
}
}
if(mwFeldID<(mwCols*(mwRows-1))){
j=mwFeldID+mwCols;
if(mwFeldID%mwCols)j--;
for(;(j%mwCols || (mwFeldID%mwCols<2)) && j<(mwFeldID+mwCols+2);j++){
//console.log("100ercheck"+j);
if(mwLoesung.inArray(j))mineCount++;
anliegend[anliegend.length]=j;
}
}
if(mwFeldID%mwCols){
//console.log(mwFeldID+"%"+mwCols+"="+(mwFeldID%mwCols))
if(mwLoesung.inArray(mwFeldID-1))mineCount++;
anliegend[anliegend.length]=mwFeldID-1;
}
if((mwFeldID+1)%mwCols){
if(mwLoesung.inArray(mwFeldID+1))mineCount++;
anliegend[anliegend.length]=mwFeldID+1;
}
//console.log(mwFeldID + " "+ anliegend + " " + mineCount);
parent.rightFrame.document.getElementsByName("mwfeld")[mwFeldID].parentNode.style.border="solid 1px #eeeeee";
//console.log(parent.rightFrame.document.getElementsByName("mwfeld")[mwFeldID].src=mwBilder[mineCount]);
parent.rightFrame.document.getElementsByName("mwfeld")[mwFeldID].src=mwBilder[mineCount];
if(mwOffen.length==(mwCols*mwRows-mwMines))return;
if(mineCount==0){
for(mwTmp=0;mwTmp<anliegend.length;mwTmp++){
//console.log("offen:");
//console.log(mwOffen);
if(!mwAnliegend.inArray(anliegend[mwTmp]))mwAnliegend[mwAnliegend.length]=(anliegend[mwTmp]);
}
}
for(mwTmp=0;mwTmp<mwAnliegend.length;mwTmp++){
if(!mwOffen.inArray(mwAnliegend[mwTmp]))mwAufdecken(mwAnliegend[mwTmp]);
}
}
danach kommt das verzeichnis in dem alle zahlen-bilder liegen und anschließend die auflistung der zahlenbilder. für die 0 könnt ihr auch ein transparentes bild nehmen. die bilder haben maße von 10x10 pixel. moni hat wie immer ein paar bildchen für euch vorbereitet: http://wktools.net/images/games/mineswe ... r-moni.zip ladet euch dieses zip-File runter, entpackt es und ladet die bilder auf euren Webspace hoch.
Die Zahl hinter mwCols ist die Anzahl an spalten (nebeneinander), mwRows die Zeilen (höhe) und mwMines die Anzahl der Minen die zufällig im feld verteilt werden.
mwBefehl ist wie bei den letzten 3 Spielen auch der Befehl den ihr euch selbst aussuchen könnt.
In den folgenden 5 Zeilen könnt ihr wie immer das Desgn des Spielfeldes idividuell anpassen. mwSpielfeldColor ist dabei so ziemlich das wichtigste. Das ist die Hintergrundfarbe des spielfeldes. Die anderen style-einstellungen sind eher unwichtig.
anschließend legt ihr wie immer den zuvor eingestellten chatefehl an.
Code: Alles auswählen
<script type=text/javascript>if(parent.info){mwBefehlsAuswertung('%user%','%me%');}else{document.write('spielt Minesweeper')}</script>