<script type='text/javascript'>
[code=javascript]X = Y = 40;
var S='',D;
for (var y = 0; y < Y; y++) for (var x = 0; x < X; x++) {
S+='<div style="display:inline;width:10px;height:10px;font-size:1px;background-color:#c0c0c0;" id="x' + x + 'y' + y + '"></div>';
if (x == X - 1) {
S+='<br>';
}
};
if (D=document.body) D.appendChild(document.createElement('div')).innerHTML = S;
else document.write(S);
var sk = {
Snake: [[X >> 1, Y >> 1]],
Dir: [0, 1]
};
function cDie(snake) {
return ((snake.join('x')).match(new RegExp(Y + '(x|$)|' + X + ',|-|(\\d+,\\d+(x|$)).*?\\2', 'ig')));
}
function $(xy) {
return document.getElementById('x' + xy[0] + 'y' + xy[1]);
}
function setc(obj, color) {
obj.style.backgroundColor = color;
}
var cancel, R = sk.Snake[0],
add = 0;
timer = setInterval(function() {
cancel = 0;
var st;
with(sk) {
for (var i = Snake.length; i--;) {
if (i == Snake.length - 1) {
setc($(Snake[i]), '#c0c0c0');
st = Snake[i].join(',').split(',');
}
if (i) setc($(Snake[i] = Snake[i - 1].join(',').split(',')), 'blue');
if (uequ(Snake[i], R)) R = 0 * ++add;
}
if (add) {--add;
Snake.push(st);
}
Snake[0][0] += Dir[0];
Snake[0][1] += Dir[1];
var res;
if (res = cDie(Snake)) {
clearInterval(timer);
alert(((res + '').match(/x.+?x/) ? '咬到自己!': '撞墙!') + '游戏结束!');
return;
}
setc($(Snake[0]), 'red');
}
if (!R) R = [Math.random() * X | 0, Math.random() * Y | 0];
setc($(R), 'green');
},
50);
document.onkeydown = function(e) {
e = e || event;
e = e.keyCode || e.which;
var w = {
'38': [0, -1],
'39': [1, 0],
'40': [0, 1],
'37': [ - 1, 0]
};
if (!cancel && !uequ(sk.Dir, w[e])) {
cancel = sk.Dir = w[e];
}
};
function uequ(a1, a2) {
return (a1 + '\n' + a2).replace(/-|,/g, '').match(/^(\d+)\n\1$/);
}
alert('按确定开始游戏!');
</script>游戏JavaScript原创
[code=javascript]X = Y = 40;
var S='',D;
for (var y = 0; y < Y; y++) for (var x = 0; x < X; x++) {
S+='<div style="display:inline;width:10px;height:10px;font-size:1px;background-color:#c0c0c0;" id="x' + x + 'y' + y + '"></div>';
if (x == X - 1) {
S+='<br>';
}
};
if (D=document.body) D.appendChild(document.createElement('div')).innerHTML = S;
else document.write(S);
var sk = {
Snake: [[X >> 1, Y >> 1]],
Dir: [0, 1]
};
function cDie(snake) {
return ((snake.join('x')).match(new RegExp(Y + '(x|$)|' + X + ',|-|(\\d+,\\d+(x|$)).*?\\2', 'ig')));
}
function $(xy) {
return document.getElementById('x' + xy[0] + 'y' + xy[1]);
}
function setc(obj, color) {
obj.style.backgroundColor = color;
}
var cancel, R = sk.Snake[0],
add = 0;
timer = setInterval(function() {
cancel = 0;
var st;
with(sk) {
for (var i = Snake.length; i--;) {
if (i == Snake.length - 1) {
setc($(Snake[i]), '#c0c0c0');
st = Snake[i].join(',').split(',');
}
if (i) setc($(Snake[i] = Snake[i - 1].join(',').split(',')), 'blue');
if (uequ(Snake[i], R)) R = 0 * ++add;
}
if (add) {--add;
Snake.push(st);
}
Snake[0][0] += Dir[0];
Snake[0][1] += Dir[1];
var res;
if (res = cDie(Snake)) {
clearInterval(timer);
alert(((res + '').match(/x.+?x/) ? '咬到自己!': '撞墙!') + '游戏结束!');
return;
}
setc($(Snake[0]), 'red');
}
if (!R) R = [Math.random() * X | 0, Math.random() * Y | 0];
setc($(R), 'green');
},
50);
document.onkeydown = function(e) {
e = e || event;
e = e.keyCode || e.which;
var w = {
'38': [0, -1],
'39': [1, 0],
'40': [0, 1],
'37': [ - 1, 0]
};
if (!cancel && !uequ(sk.Dir, w[e])) {
cancel = sk.Dir = w[e];
}
};
function uequ(a1, a2) {
return (a1 + '\n' + a2).replace(/-|,/g, '').match(/^(\d+)\n\1$/);
}
alert('按确定开始游戏!');
</script>游戏JavaScript原创
X = Y = 40;
var S='',D;
for (var y = 0; y < Y; y++) for (var x = 0; x < X; x++) {
S+='<div style="display:inline;width:10px;height:10px;font-size:1px;background-color:#c0c0c0;" id="x' + x + 'y' + y + '"></div>';
if (x == X - 1) {
S+='<br>';
}
};
if (D=document.body) D.appendChild(document.createElement('div')).innerHTML = S;
else document.write(S);
var sk = {
Snake: [[X >> 1, Y >> 1]],
Dir: [0, 1]
};
function cDie(snake) {
return ((snake.join('x')).match(new RegExp(Y + '(x|$)|' + X + ',|-|(\\d+,\\d+(x|$)).*?\\2', 'ig')));
}
function $(xy) {
return document.getElementById('x' + xy[0] + 'y' + xy[1]);
}
function setc(obj, color) {
obj.style.backgroundColor = color;
}
var cancel, R = sk.Snake[0],
add = 0;
timer = setInterval(function() {
cancel = 0;
var st;
with(sk) {
for (var i = Snake.length; i--;) {
if (i == Snake.length - 1) {
setc($(Snake[i]), '#c0c0c0');
st = Snake[i].join(',').split(',');
}
if (i) setc($(Snake[i] = Snake[i - 1].join(',').split(',')), 'blue');
if (uequ(Snake[i], R)) R = 0 * ++add;
}
if (add) {--add;
Snake.push(st);
}
Snake[0][0] += Dir[0];
Snake[0][1] += Dir[1];
var res;
if (res = cDie(Snake)) {
clearInterval(timer);
alert(((res + '').match(/x.+?x/) ? '咬到自己!': '撞墙!') + '游戏结束!');
return;
}
setc($(Snake[0]), 'red');
}
if (!R) R = [Math.random() * X | 0, Math.random() * Y | 0];
setc($(R), 'green');
},
50);
document.onkeydown = function(e) {
e = e || event;
e = e.keyCode || e.which;
var w = {
'38': [0, -1],
'39': [1, 0],
'40': [0, 1],
'37': [ - 1, 0]
};
if (!cancel && !uequ(sk.Dir, w[e])) {
cancel = sk.Dir = w[e];
}
};
function uequ(a1, a2) {
return (a1 + '\n' + a2).replace(/-|,/g, '').match(/^(\d+)\n\1$/);
}
alert('按确定开始游戏!');
</script>
只有IE可以运行。。
然后是速度太TM快了。。
X = Y = 40;
var S='',D;
for (var y = 0; y < Y; y++) for (var x = 0; x < X; x++) {
S+='<div style="display:inline-block;_display:inline;width:10px;height:10px;font-size:1px;background-color:#c0c0c0;" id="x' + x + 'y' + y + '"></div>';
if (x == X - 1) {
S+='<br>';
}
};
if (D=document.body) D.appendChild(document.createElement('div')).innerHTML = S;
else document.write(S);
var sk = {
Snake: [[X >> 1, Y >> 1]],
Dir: [0, 1]
};
function cDie(snake) {
return ((snake.join('x')).match(new RegExp(Y + '(x|$)|' + X + ',|-|(\\d+,\\d+(x|$)).*?\\2', 'ig')));
}
function $(xy) {
return document.getElementById('x' + xy[0] + 'y' + xy[1]);
}
function setc(obj, color) {
obj.style.backgroundColor = color;
}
var cancel, R = sk.Snake[0],
add = 0;
timer = setInterval(function() {
cancel = 0;
var st;
with(sk) {
for (var i = Snake.length; i--;) {
if (i == Snake.length - 1) {
setc($(Snake[i]), '#c0c0c0');
st = Snake[i].join(',').split(',');
}
if (i) setc($(Snake[i] = Snake[i - 1].join(',').split(',')), 'blue');
if (uequ(Snake[i], R)) R = 0 * ++add;
}
if (add) {--add;
Snake.push(st);
}
Snake[0][0] += Dir[0];
Snake[0][1] += Dir[1];
var res;
if (res = cDie(Snake)) {
clearInterval(timer);
alert(((res + '').match(/x.+?x/) ? '咬到自己!': '撞墙!') + '游戏结束!');
return;
}
setc($(Snake[0]), 'red');
}
if (!R) R = [Math.random() * X | 0, Math.random() * Y | 0];
setc($(R), 'green');
},
100);
document.onkeydown = function(e) {
e = e || event;
e = e.keyCode || e.which;
var w = {
'38': [0, -1],
'39': [1, 0],
'40': [0, 1],
'37': [ - 1, 0]
};
if (!cancel && !uequ(sk.Dir, w[e])) {
cancel = sk.Dir = w[e]||sk.Dir;
}
};
function uequ(a1, a2) {
return (a1 + '\n' + a2).replace(/-|,/g, '').match(/^(\d+)\n\1$/);
}
alert('按确定开始游戏!');
</script>话说chrome会什么都没有主要是因为webkit和ie对display:inline的理解不同导致的。。ie不支持inline-block(但是ie上inline的效果等同于webkit上的inline-block,这一点确实让人很费解。。),所以改了之后就好了
X = Y = 30;
var S='';
for (var y = 0; y < Y; y++)
for (var x = 0; x < X; x++)
S+='<div style="display:inline-block;_display:inline;width:10px;height:10px;font-size:1px;background-color:#c0c0c0;" id="x' + x + 'y' + y + '"></div>'+(x == X - 1?'<br>':'');
document.write(S);
var sk = {
Snake: [[X >> 1, Y >> 1]],
Dir: [0, 1]
};
function $(xy) {
return document.getElementById('x' + xy[0] + 'y' + xy[1]);
}
function setc(obj, color) {
obj.style.backgroundColor = color;
}
var cancel, R ,add = 2;
(function() {
cancel = 0;
var st;
with(sk) {
for (var i=Snake.length; i--;) {
if(i==Snake.length-1){
setc($(Snake[i]), '#c0c0c0');
st = Snake[i].join(',').split(',');
}
i && setc($(Snake[i] = Snake[i - 1].join(',').split(',')), 'blue');
if (uequ(Snake[i], R)) R = 0 * ++add;
}
if (add) {
--add;
Snake.push(st);
}
Snake[0][0] += Dir[0];
Snake[0][1] += Dir[1];
var res;
if (res = ('x'+Snake.join('xx')+'x').match(new RegExp('x'+X + ',|,' + Y + 'x|-|(x\\d+,\\d+x).*?x\\1', 'ig')))
return alert(((res + '').match(/x.+?x/) ? '咬到自己!': '撞墙!'));
setTimeout(arguments.callee,100);
setc($(Snake[0]), 'red');
}
setc($(R = R || [Math.random() * X | 0, Math.random() * Y | 0]), 'green');
})();
document.onkeydown = function(e) {
e = e || event;
e = e.keyCode || e.which;
var w = {
'38': [0, -1],
'39': [1, 0],
'40': [0, 1],
'37': [ - 1, 0]
};
if (!cancel && !uequ(sk.Dir, w[e])) {
cancel = sk.Dir = w[e]||sk.Dir;
}
};
function uequ(a1, a2) {
return (a1 + '\n' + a2).replace(/-|,/g, '').match(/^(\d+)\n\1$/);
}
alert('按确定开始游戏!');
</script>说实话我自己都有点不确定这个有没有问题了。。不过我自己测试了好几遍都没发现问题。。