JavaScripts -> Fun -> Arsenal Snake (Spiel)
Arsenal Snake ist eine JavaScript-Umsetzung des bekannten Spieles. Lauffähig unter Opera und IE, unter Mozilla nur mit Einschränkungen wegen der Find-As-You-Type-Technologie.
Kompatibilität getestet:
Script-Code
<script type="text/javascript">
<!--
// = = ================================================================== = =
// = = Arsenal Snake v1.0 (c) 2003 Triple-M / http://www.htmlarsenal.de = =
// = = ================================================================== = =
// --------------------------------------------------------------------------
// -- Dieses Script und viele andere im --
// -- This script and many more in the --
// --------------------------------------------------------------------------
// -- HTML ARSENAL - Die Quelle für HTML, JavaScript, PHP --
// -- HTML ARSENAL - Your Source for HTML, JavaScript, PHP --
// --------------------------------------------------------------------------
// -- -= http://www.htmlarsenal.de =- --
// --------------------------------------------------------------------------
// Benutzung / Usage
// =================
// Einfach ein Script mit dem Inhalt arsenalsnake(); in den Body-Bereich
// Simply include a script with the content arsenalsnake(); in the body area
// Veränderbare Einstellungen / Adjustable Settings
// ================================================
var bg_color="#000000"; // Hintergrund des Spielfeldes / Background of field
var sn_color="#ffffff"; // Schlangenfarbe / Snake color
var br_color="#ff0000"; // Randfarbe / Border Color
var nu_color="#00ff00"; // Nummernfarbe / Number color
var wa_color="#0000ff"; // Wandfarbe / Wall color
// Script-Code
// ===========
// Ab hier bitte nichts mehr verändern
// Please do not change anything from here on
var td_size=15;
var nu_size=12;
var i,j;
var dx,dy;
var ldx,ldy;
var nx,ny,nn;
var ll;
var field=new Array(40);
for(i=0;i<40;i++) {
field[i]=new Array(25);
}
var snakex=new Array(100);
var snakey=new Array(100);
var snakel=1;
var snakea=5;
var points=0;
var to=0;
var paused=false;
function down(kevent) {
var k;
if(window.event.keyCode)k=window.event.keyCode;
else k=kevent.which;
switch (k) {
case 83: if(ldy!=1) { dx=0; dy=-1; } break;
case 88: if(ldy!=-1) { dx=0; dy=1; } break;
case 89: if(ldx!=1) { dx=-1; dy=0; } break;
case 67: if(ldx!=-1) { dx=1; dy=0; } break;
default: break;
}
}
document.onkeydown=down;
function as_empty() {
for(i=0;i<40;i++) for(j=0;j<25;j++) {
field[i][j]=false;
}
}
function arsenalsnake() {
document.writeln('<style type="text/css">');
document.writeln('table.as { margin:auto; margin-bottom:10px; border-collapse:collapse; border:5px solid '+br_color+'; width:'+(td_size*40)+'px; height:'+(td_size*25)+'px; table-layout:fixed; }');
document.writeln('table.as td { border:0px none; width:'+td_size+'px; height:'+td_size+'px; padding:0px; text-align:center; vertical-align:center; background-color:'+bg_color+'; color:'+nu_color+'; font-size:'+nu_size+'px; font-family:Verdana,sans-serif; }');
document.writeln('table.command { margin:auto; border-collapse:collapse; border:5px solid '+br_color+'; width:'+(td_size*40)+'px; table-layout:fixed; }');
document.writeln('table.command td.button { border:5px solid '+br_color+'; width:25%; font-family:Verdana,sans-serif; font-size:12px; font-weight:bold; background-color: #c0c0c0; color:#000000; text-align:center; cursor:hand; }');
document.writeln('table.command td.status { border:5px solid '+br_color+'; width:100%; font-family:Verdana,sans-serif; font-size:12px; background-color: '+bg_color+'; color:'+nu_color+'; text-align:center; }');
document.writeln('</style>');
document.writeln('<table class="as">');
for(i=0;i<25;i++) {
document.writeln('<tr>');
for(j=0;j<40;j++) document.writeln('<td id="as_'+j+'_'+i+'"> </td>');
document.writeln('</tr>');
}
document.writeln('</table>');
document.writeln('<table class="command">');
document.writeln('<tr>');
document.writeln('<td class="button" onClick="points=0; as_start(0)">Neu starten</td>');
document.writeln('<td class="button" onClick="as_help();">Hilfe</td>');
document.writeln('<td class="button" onClick="as_pause()">Pause</td>');
document.writeln('<td class="button" onClick="window.open(\'http://www.htmlarsenal.de\',\'_blank\',\'location=yes, menubar=no, resizable=yes, scrollbars=yes, status=no, toolbar=yes, maximized=yes\')" >HTML Arsenal</td>');
document.writeln('</tr>');
document.writeln('<tr><td id = "status" class="status" colspan="4"> - ARSENAL SNAKE v1.0 -</td></tr>');
document.writeln('</table>');
window.setTimeout('document.getElementById("status").firstChild.nodeValue="[s] - oben, [y] - links, [x] - unten, [c] - rechts"',2000);
}
function as_pause() {
if(to) {
window.clearTimeout(to);
to=0;
paused=true;
}
else if(paused) {
paused=false;
to=window.setTimeout("as_move()",125);
}
}
function as_help() {
w=window.open("","help","location=no, dependant=yes, resizable=no, scrollbars=no, status=no, toolbar=no, width=400, height=300, left="+(screen.availWidth/2-200)+", top="+(screen.availHeight/2-150));
w.document.open();
w.document.writeln('<html><head><title>ARSENAL SNAKE HILFE</title><style type="text/css"><!--');
w.document.writeln('body { background-color:#ffffff; color:#000000; font-family:Verdana,sans-serif; fonts-size:12px; text-align:justify }');
w.document.writeln('h1 { text-align:center; font-size:16px }');
w.document.writeln('-'+'->');
w.document.writeln('</style></head>');
w.document.writeln('<body>');
w.document.writeln('<h1>Hilfe zu Arsenal Snake</h1>');
w.document.writeln('<p>Klicken Sie auf "Neu Starten", um ein neues Spiel zu starten.</p>');
w.document.writeln('<p>Steuern Sie Ihre Schlange mit [s],[y],[x] und [c], um sie zu den Zahlen zu führen. Für jede gefressene Zahl gibt es Punkte. Wenn Sie in einem Level die <b>9</b> gefressen haben, wird das nächste Level geladen.</p>');
w.document.writeln('<p>Insgesamt hat Arsenal Snake 9 Level. Nach dem 9.Level ist das Spiel zu Ende.</p>');
w.document.writeln('<p style="text-align:center"><a href="javascript:window.close()">[Schließen]</a></p>');
w.document.writeln('</body></html>');
w.document.close();
}
function as_distribute(num) {
var okay=true;
var x,y,i;
do {
okay=true;
x=Math.floor(Math.random()*40);
y=Math.floor(Math.random()*25);
if(field[x][y])okay=false;
for(i=0;i<snakel;i++) if((x==snakex[i]) && (y==snakey[i])) okay=false;
} while(okay==false);
document.getElementById("as_"+x+"_"+y).firstChild.nodeValue=num;
nx=x;
ny=y;
nn=num;
}
function as_level(lev) {
as_empty();
switch(lev) {
case 0: break;
case 1: for(i=10;i<30;i++) { field[i][5]=true; field[i][20]=true; } break;
case 2: for(i=0;i<40;i++) if(i<20) { field[i][5]=true; field[i][15]=true;} else {field[i][10]=true; field[i][20]=true; } break;
case 3: for(i=0;i<19;i++) { field[i][12]=true; field[39-i][12]=true; } break;
case 4: for(i=0;i<23;i++) { field[10][i]=true; field[20][24-i]=true; field[30][i]=true; } break;
case 5: for(i=0;i<18;i++) { field[i][12]=true; field[39-i][12]=true; } for(i=0;i<11;i++) { field[19][i]=true; field[20][i]=true; field[19][24-i]=true; field[20][24-i]=true; } break;
case 6: for(i=0;i<12;i++) { field[10][i]=true; field[30][i]=true; field[10][24-i]=true; field[30][24-i]=true; } field[8][12]=true; field[12][12]=true; field[28][12]=true; field[32][12]=true; break;
case 7: for(i=0;i<39;i++) { field[i][8]=true; field[39-i][10]=true; field[i][14]=true; field[39-i][16]=true; } for(i=0;i<3;i++) { field[39-i][6]=true; field[i][18]=true; } break;
case 8: for(i=1;i<39;i++) field[i][12]=true; for(i=1;i<24;i++) {field[19][i]=true; field[20][i]=true;} for(i=0;i<3;i++) { field[3][11+i]=true; field[36][11+i]=true; } for(i=0;i<4;i++) { field[18+i][3]=true; field[18+i][21]=true; } for(i=0;i<2;i++) {field[i][10]=true; field[i][14]=true; field[39-i][10]=true; field[39-i][14]=true; field[17][i]=true; field[22][i]=true; field[17][24-i]=true; field[22][24-i]=true; } break;
}
for(i=0;i<40;i++) {
for(j=0;j<25;j++) {
if(field[i][j]) document.getElementById("as_"+i+"_"+j).style.backgroundColor=wa_color;
else document.getElementById("as_"+i+"_"+j).style.backgroundColor=bg_color;
document.getElementById("as_"+i+"_"+j).firstChild.nodeValue="";
}
}
window.blur();
window.focus();
}
function as_start(level) {
if(to)window.clearTimeout(to);
as_level(level);
ll=level;
ldx=dx=1;
ldy=dy=0;
snakel=1;
snakea=5;
snakex[0]=21;
snakey[0]=13;
as_distribute(1);
document.getElementById("as_21_13").style.backgroundColor=sn_color;
document.getElementById("status").firstChild.nodeValue="Level "+(level+1)+" gestartet...";
window.setTimeout('document.getElementById("status").firstChild.nodeValue="Ihre Punktzahl: "+points',2000);
to=window.setTimeout("as_move()",125);
}
function as_move() {
var collision=false;
for(i=snakel+1;i>0;i--) {
snakex[i]=snakex[i-1];
snakey[i]=snakey[i-1];
}
cx=snakex[0]=snakex[1]+dx;
cy=snakey[0]=snakey[1]+dy;
ldx=dx;
ldy=dy;
if((cx==nx) && (cy==ny)) {
document.getElementById("as_"+cx+"_"+cy).firstChild.nodeValue="";
points+=(ll+1)*10;
if(nn==9) {
if(ll==8) {
document.getElementById("status").firstChild.nodeValue="Sie haben GEWONNEN! Herzlichen Glückwunsch!";
} else {
document.getElementById("status").firstChild.nodeValue="Level "+(ll+1)+" beendet!";
window.setTimeout("as_start("+(ll+1)+")",100);
}
to=0;
return;
}
else {
document.getElementById("status").firstChild.nodeValue="Ihre Punktzahl: "+points;
as_distribute(nn+1);
snakea+=5;
}
}
for(i=1;i<snakel;i++) {
if((cx==snakex[i]) && (cy==snakey[i])) collision=true;
}
if((cx<0) || (cx>39) || (cy<0) || (cy>24) || collision || field[cx][cy]) {
document.getElementById("status").firstChild.nodeValue="Sie haben leider verloren!";
to=0;
} else {
document.getElementById("as_"+cx+"_"+cy).style.backgroundColor=sn_color;
if(snakea>0) {
snakel++;
snakea--;
} else {
for(i=0;i<snakel;i++) {
if((snakex[snakel]==snakex[i]) && (snakey[snakel]==snakey[i])) collision=true;
}
if(!collision)document.getElementById("as_"+snakex[snakel]+"_"+snakey[snakel]).style.backgroundColor=bg_color;
}
to=window.setTimeout("as_move()",125);
}
}
// ----------------------------
// -- Ende / End Script-Code --
// ----------------------------
// -- Arsenal Snake --
// -- Author: Triple-M --
// -- www.htmlarsenal.de --
// -- 19.Feb.2004 --
// ----------------------------
//-->
</script>
<!--
// = = ================================================================== = =
// = = Arsenal Snake v1.0 (c) 2003 Triple-M / http://www.htmlarsenal.de = =
// = = ================================================================== = =
// --------------------------------------------------------------------------
// -- Dieses Script und viele andere im --
// -- This script and many more in the --
// --------------------------------------------------------------------------
// -- HTML ARSENAL - Die Quelle für HTML, JavaScript, PHP --
// -- HTML ARSENAL - Your Source for HTML, JavaScript, PHP --
// --------------------------------------------------------------------------
// -- -= http://www.htmlarsenal.de =- --
// --------------------------------------------------------------------------
// Benutzung / Usage
// =================
// Einfach ein Script mit dem Inhalt arsenalsnake(); in den Body-Bereich
// Simply include a script with the content arsenalsnake(); in the body area
// Veränderbare Einstellungen / Adjustable Settings
// ================================================
var bg_color="#000000"; // Hintergrund des Spielfeldes / Background of field
var sn_color="#ffffff"; // Schlangenfarbe / Snake color
var br_color="#ff0000"; // Randfarbe / Border Color
var nu_color="#00ff00"; // Nummernfarbe / Number color
var wa_color="#0000ff"; // Wandfarbe / Wall color
// Script-Code
// ===========
// Ab hier bitte nichts mehr verändern
// Please do not change anything from here on
var td_size=15;
var nu_size=12;
var i,j;
var dx,dy;
var ldx,ldy;
var nx,ny,nn;
var ll;
var field=new Array(40);
for(i=0;i<40;i++) {
field[i]=new Array(25);
}
var snakex=new Array(100);
var snakey=new Array(100);
var snakel=1;
var snakea=5;
var points=0;
var to=0;
var paused=false;
function down(kevent) {
var k;
if(window.event.keyCode)k=window.event.keyCode;
else k=kevent.which;
switch (k) {
case 83: if(ldy!=1) { dx=0; dy=-1; } break;
case 88: if(ldy!=-1) { dx=0; dy=1; } break;
case 89: if(ldx!=1) { dx=-1; dy=0; } break;
case 67: if(ldx!=-1) { dx=1; dy=0; } break;
default: break;
}
}
document.onkeydown=down;
function as_empty() {
for(i=0;i<40;i++) for(j=0;j<25;j++) {
field[i][j]=false;
}
}
function arsenalsnake() {
document.writeln('<style type="text/css">');
document.writeln('table.as { margin:auto; margin-bottom:10px; border-collapse:collapse; border:5px solid '+br_color+'; width:'+(td_size*40)+'px; height:'+(td_size*25)+'px; table-layout:fixed; }');
document.writeln('table.as td { border:0px none; width:'+td_size+'px; height:'+td_size+'px; padding:0px; text-align:center; vertical-align:center; background-color:'+bg_color+'; color:'+nu_color+'; font-size:'+nu_size+'px; font-family:Verdana,sans-serif; }');
document.writeln('table.command { margin:auto; border-collapse:collapse; border:5px solid '+br_color+'; width:'+(td_size*40)+'px; table-layout:fixed; }');
document.writeln('table.command td.button { border:5px solid '+br_color+'; width:25%; font-family:Verdana,sans-serif; font-size:12px; font-weight:bold; background-color: #c0c0c0; color:#000000; text-align:center; cursor:hand; }');
document.writeln('table.command td.status { border:5px solid '+br_color+'; width:100%; font-family:Verdana,sans-serif; font-size:12px; background-color: '+bg_color+'; color:'+nu_color+'; text-align:center; }');
document.writeln('</style>');
document.writeln('<table class="as">');
for(i=0;i<25;i++) {
document.writeln('<tr>');
for(j=0;j<40;j++) document.writeln('<td id="as_'+j+'_'+i+'"> </td>');
document.writeln('</tr>');
}
document.writeln('</table>');
document.writeln('<table class="command">');
document.writeln('<tr>');
document.writeln('<td class="button" onClick="points=0; as_start(0)">Neu starten</td>');
document.writeln('<td class="button" onClick="as_help();">Hilfe</td>');
document.writeln('<td class="button" onClick="as_pause()">Pause</td>');
document.writeln('<td class="button" onClick="window.open(\'http://www.htmlarsenal.de\',\'_blank\',\'location=yes, menubar=no, resizable=yes, scrollbars=yes, status=no, toolbar=yes, maximized=yes\')" >HTML Arsenal</td>');
document.writeln('</tr>');
document.writeln('<tr><td id = "status" class="status" colspan="4"> - ARSENAL SNAKE v1.0 -</td></tr>');
document.writeln('</table>');
window.setTimeout('document.getElementById("status").firstChild.nodeValue="[s] - oben, [y] - links, [x] - unten, [c] - rechts"',2000);
}
function as_pause() {
if(to) {
window.clearTimeout(to);
to=0;
paused=true;
}
else if(paused) {
paused=false;
to=window.setTimeout("as_move()",125);
}
}
function as_help() {
w=window.open("","help","location=no, dependant=yes, resizable=no, scrollbars=no, status=no, toolbar=no, width=400, height=300, left="+(screen.availWidth/2-200)+", top="+(screen.availHeight/2-150));
w.document.open();
w.document.writeln('<html><head><title>ARSENAL SNAKE HILFE</title><style type="text/css"><!--');
w.document.writeln('body { background-color:#ffffff; color:#000000; font-family:Verdana,sans-serif; fonts-size:12px; text-align:justify }');
w.document.writeln('h1 { text-align:center; font-size:16px }');
w.document.writeln('-'+'->');
w.document.writeln('</style></head>');
w.document.writeln('<body>');
w.document.writeln('<h1>Hilfe zu Arsenal Snake</h1>');
w.document.writeln('<p>Klicken Sie auf "Neu Starten", um ein neues Spiel zu starten.</p>');
w.document.writeln('<p>Steuern Sie Ihre Schlange mit [s],[y],[x] und [c], um sie zu den Zahlen zu führen. Für jede gefressene Zahl gibt es Punkte. Wenn Sie in einem Level die <b>9</b> gefressen haben, wird das nächste Level geladen.</p>');
w.document.writeln('<p>Insgesamt hat Arsenal Snake 9 Level. Nach dem 9.Level ist das Spiel zu Ende.</p>');
w.document.writeln('<p style="text-align:center"><a href="javascript:window.close()">[Schließen]</a></p>');
w.document.writeln('</body></html>');
w.document.close();
}
function as_distribute(num) {
var okay=true;
var x,y,i;
do {
okay=true;
x=Math.floor(Math.random()*40);
y=Math.floor(Math.random()*25);
if(field[x][y])okay=false;
for(i=0;i<snakel;i++) if((x==snakex[i]) && (y==snakey[i])) okay=false;
} while(okay==false);
document.getElementById("as_"+x+"_"+y).firstChild.nodeValue=num;
nx=x;
ny=y;
nn=num;
}
function as_level(lev) {
as_empty();
switch(lev) {
case 0: break;
case 1: for(i=10;i<30;i++) { field[i][5]=true; field[i][20]=true; } break;
case 2: for(i=0;i<40;i++) if(i<20) { field[i][5]=true; field[i][15]=true;} else {field[i][10]=true; field[i][20]=true; } break;
case 3: for(i=0;i<19;i++) { field[i][12]=true; field[39-i][12]=true; } break;
case 4: for(i=0;i<23;i++) { field[10][i]=true; field[20][24-i]=true; field[30][i]=true; } break;
case 5: for(i=0;i<18;i++) { field[i][12]=true; field[39-i][12]=true; } for(i=0;i<11;i++) { field[19][i]=true; field[20][i]=true; field[19][24-i]=true; field[20][24-i]=true; } break;
case 6: for(i=0;i<12;i++) { field[10][i]=true; field[30][i]=true; field[10][24-i]=true; field[30][24-i]=true; } field[8][12]=true; field[12][12]=true; field[28][12]=true; field[32][12]=true; break;
case 7: for(i=0;i<39;i++) { field[i][8]=true; field[39-i][10]=true; field[i][14]=true; field[39-i][16]=true; } for(i=0;i<3;i++) { field[39-i][6]=true; field[i][18]=true; } break;
case 8: for(i=1;i<39;i++) field[i][12]=true; for(i=1;i<24;i++) {field[19][i]=true; field[20][i]=true;} for(i=0;i<3;i++) { field[3][11+i]=true; field[36][11+i]=true; } for(i=0;i<4;i++) { field[18+i][3]=true; field[18+i][21]=true; } for(i=0;i<2;i++) {field[i][10]=true; field[i][14]=true; field[39-i][10]=true; field[39-i][14]=true; field[17][i]=true; field[22][i]=true; field[17][24-i]=true; field[22][24-i]=true; } break;
}
for(i=0;i<40;i++) {
for(j=0;j<25;j++) {
if(field[i][j]) document.getElementById("as_"+i+"_"+j).style.backgroundColor=wa_color;
else document.getElementById("as_"+i+"_"+j).style.backgroundColor=bg_color;
document.getElementById("as_"+i+"_"+j).firstChild.nodeValue="";
}
}
window.blur();
window.focus();
}
function as_start(level) {
if(to)window.clearTimeout(to);
as_level(level);
ll=level;
ldx=dx=1;
ldy=dy=0;
snakel=1;
snakea=5;
snakex[0]=21;
snakey[0]=13;
as_distribute(1);
document.getElementById("as_21_13").style.backgroundColor=sn_color;
document.getElementById("status").firstChild.nodeValue="Level "+(level+1)+" gestartet...";
window.setTimeout('document.getElementById("status").firstChild.nodeValue="Ihre Punktzahl: "+points',2000);
to=window.setTimeout("as_move()",125);
}
function as_move() {
var collision=false;
for(i=snakel+1;i>0;i--) {
snakex[i]=snakex[i-1];
snakey[i]=snakey[i-1];
}
cx=snakex[0]=snakex[1]+dx;
cy=snakey[0]=snakey[1]+dy;
ldx=dx;
ldy=dy;
if((cx==nx) && (cy==ny)) {
document.getElementById("as_"+cx+"_"+cy).firstChild.nodeValue="";
points+=(ll+1)*10;
if(nn==9) {
if(ll==8) {
document.getElementById("status").firstChild.nodeValue="Sie haben GEWONNEN! Herzlichen Glückwunsch!";
} else {
document.getElementById("status").firstChild.nodeValue="Level "+(ll+1)+" beendet!";
window.setTimeout("as_start("+(ll+1)+")",100);
}
to=0;
return;
}
else {
document.getElementById("status").firstChild.nodeValue="Ihre Punktzahl: "+points;
as_distribute(nn+1);
snakea+=5;
}
}
for(i=1;i<snakel;i++) {
if((cx==snakex[i]) && (cy==snakey[i])) collision=true;
}
if((cx<0) || (cx>39) || (cy<0) || (cy>24) || collision || field[cx][cy]) {
document.getElementById("status").firstChild.nodeValue="Sie haben leider verloren!";
to=0;
} else {
document.getElementById("as_"+cx+"_"+cy).style.backgroundColor=sn_color;
if(snakea>0) {
snakel++;
snakea--;
} else {
for(i=0;i<snakel;i++) {
if((snakex[snakel]==snakex[i]) && (snakey[snakel]==snakey[i])) collision=true;
}
if(!collision)document.getElementById("as_"+snakex[snakel]+"_"+snakey[snakel]).style.backgroundColor=bg_color;
}
to=window.setTimeout("as_move()",125);
}
}
// ----------------------------
// -- Ende / End Script-Code --
// ----------------------------
// -- Arsenal Snake --
// -- Author: Triple-M --
// -- www.htmlarsenal.de --
// -- 19.Feb.2004 --
// ----------------------------
//-->
</script>