<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
<script type="text/javascript">
function createCell(x, y){ //创建单元格
var newDiv = document.createElement("div");
newDiv.style.position = "absolute";
newDiv.style.width = cellWidth + "px";
newDiv.style.height = cellWidth + "px";
newDiv.style.background = "#999933";
newDiv.style.border = "solid 1px #666633";
newDiv.style.top = 100 + cellWidth*y + "px";
newDiv.style.left = document.body.clientWidth/2 - boardWidth/2*cellWidth + x*cellWidth + "px";
document.getElementById("content").appendChild(newDiv);
return newDiv;
}
function productFood(){ //随机产生食物
var foodX = Math.round(Math.random()*(boardWidth-1));
var foodY = Math.round(Math.random()*(boardWidth-1));
for(var i=0; i<snake.body.length; i++){
if(snake.body[i].x==foodX && snake.body[i].y==foodY){
productFood();
return;
}
}
board[foodX][foodY].style.background = "#333300";
board[foodX][foodY].isFood = true;
}
function move(){ //移动——计算下一步的显示区域
var newX, newY;
newX = newY = 0;
switch(snake.way){
case "right" : newX = snake.body[0].x < boardWidth-1 ? snake.body[0].x+1 : 0;
newY = snake.body[0].y;
setStyle();
break;
case "left" : newX = snake.body[0].x > 0 ? snake.body[0].x-1 : boardWidth-1;
newY = snake.body[0].y;
setStyle();
break;
case "up" : newX = snake.body[0].x;
newY = snake.body[0].y > 0 ? snake.body[0].y-1 : boardWidth-1;
setStyle();
break;
case "down" : newX = snake.body[0].x;
newY = snake.body[0].y < boardWidth-1 ? snake.body[0].y+1 : 0;
setStyle();
break;
}
function setStyle(){ //闭包
for(var i=0; i<snake.body.length; i++){
if(snake.body[i].x==newX && snake.body[i].y==newY){
clearInterval(loop);
alert("游戏结束,你吃掉了自己的身体");
return;
}
}
snake.body.splice(0,0,{x:newX, y:newY});
board[newX][newY].style.background = "#333300";
if(board[newX][newY].isFood){
board[newX][newY].isFood = false;
productFood();
}
else{
var cell = snake.body.pop();
board[cell.x][cell.y].style.background = "#999933";
}
}
}
function changeBoard(val){ //更改区域设置
document.body.focus();
board = null;
boardWidth = val;
snake.body = [{x:0, y:0}];
snake.way = "left";
clearInterval(loop);
main();
}
function changeSpeed(val){ //更改速度设置
document.body.focus();
board = null;
snake.moveSpeed = val;
snake.body = [{x:0, y:0}];
snake.way = "left";
clearInterval(loop);
main();
}
var cellWidth = 13; //单元格宽度高度
var boardWidth = 20; //区域宽度高度
var board; //区域
var snake = { //蛇
body:[{x:0, y:0}],
way:"left",
moveSpeed:500
};
var loop; //循环
function main(){
//清空body
if(document.getElementById("content")){
document.getElementById("content").innerHTML = "";
}
else{
var newDiv = document.createElement("div");
newDiv.id = "content";
document.body.appendChild(newDiv);
}
//画盘
board = new Array(boardWidth);
for(var x=0; x<boardWidth; x++){
board[x] = new Array(boardWidth);
for(var y=0; y<boardWidth; y++){
(function(){
var _x = x;
var _y = y;
setTimeout(function(){
board[_x][_y] = createCell(_x, _y);
}, _y*69);
})();
}
} //捕获方向键
document.body.onkeydown = function(){
switch(event.keyCode){
case 38 : snake.way = (snake.way=="left" || snake.way=="right") ? "up" : snake.way; break;
case 40 : snake.way = (snake.way=="left" || snake.way=="right") ? "down" : snake.way; break;
case 37 : snake.way = (snake.way=="up" || snake.way=="down") ? "left" : snake.way; break;
case 39 : snake.way = (snake.way=="up" || snake.way=="down") ? "right" : snake.way; break;
}
}
//延迟开始,等待加载
setTimeout(function(){
productFood();
loop = setInterval(function(){
move();
}, snake.moveSpeed);
}, boardWidth*100);
}
window.onload = main;
</script>
</head>
<body>
<form id="form1" runat="server">
<div id="select">
20*20:<input id="Radio1" name="boardOnly" onclick="changeBoard(20)" checked="checked" type="radio" /><br />
30*30:<input id="Radio2" name="boardOnly" onclick="changeBoard(30)" type="radio" /><br />
<br /><br />
拖拉机:<input id="Radio4" name="speedOnly" onclick="changeSpeed(600)" checked="checked" type="radio" /><br />
汽车:<input id="Radio5" name="speedOnly" onclick="changeSpeed(300)" type="radio" /><br />
火车:<input id="Radio6" name="speedOnly" onclick="changeSpeed(200)" type="radio" /><br />
飞机:<input id="Radio7" name="speedOnly" onclick="changeSpeed(90)" type="radio" /><br />
飞船:<input id="Radio8" name="speedOnly" onclick="changeSpeed(20)" type="radio" /><br />
</div>
</form>
</body>
</html>
解决方案 »
- 问题,为何返回NaN
- 两个页面之间传送大量数据(也不算大量)
- jQuery怎么遍历表格,获取第一列的值,在线等...
- 弹出窗口后对焦点转移的控制
- 点击网页图片后如何获得图片的路径
- 打印时,怎么样用js设置纸张大小,打印完毕重设回默认纸张(俺在csdn上搜索好多贴,都不尽人意,希望高手你出手,不要乱贴一些没有用的代
- 请问怎样动态设置FRAMESET?多谢!!!
- 请帮我看看创建对象的两种方法的区别,谢谢!
- escape(string)转换的16进制和JSP 里用URLEecoder.encode(string)...?
- 图片没有设置高度,获取不到Div的正常高度
- 小鸟呼声:求js代码块详解~
- 貌似self.parent,只能往上找,能不能从top往下遍历?
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
<script type="text/javascript">
function createCell(x, y){ //创建单元格
var newDiv = document.createElement("div");
newDiv.style.position = "absolute";
newDiv.style.width = cellWidth + "px";
newDiv.style.height = cellWidth + "px";
newDiv.style.background = "#999933";
newDiv.style.border = "solid 1px #666633";
newDiv.style.top = 100 + cellWidth*y + "px";
newDiv.style.left = document.body.clientWidth/2 - boardWidth/2*cellWidth + x*cellWidth + "px";
document.getElementById("content").appendChild(newDiv);
return newDiv;
}
function productFood(){ //随机产生食物
var foodX = Math.round(Math.random()*(boardWidth-1));
var foodY = Math.round(Math.random()*(boardWidth-1));
for(var i=0; i<snake.body.length; i++){
if(snake.body[i].x==foodX && snake.body[i].y==foodY){
productFood();
return;
}
}
board[foodX][foodY].style.background = "#333300";
board[foodX][foodY].isFood = true;
}
function move(){ //移动——计算下一步的显示区域
var newX, newY;
newX = newY = 0;
switch(snake.way){
case "right" : newX = snake.body[0].x < boardWidth-1 ? snake.body[0].x+1 : 0;
newY = snake.body[0].y;
setStyle();
break;
case "left" : newX = snake.body[0].x > 0 ? snake.body[0].x-1 : boardWidth-1;
newY = snake.body[0].y;
setStyle();
break;
case "up" : newX = snake.body[0].x;
newY = snake.body[0].y > 0 ? snake.body[0].y-1 : boardWidth-1;
setStyle();
break;
case "down" : newX = snake.body[0].x;
newY = snake.body[0].y < boardWidth-1 ? snake.body[0].y+1 : 0;
setStyle();
break;
}
function setStyle(){ //闭包
for(var i=0; i<snake.body.length; i++){
if(snake.body[i].x==newX && snake.body[i].y==newY){
clearInterval(loop);
alert("游戏结束,你吃掉了自己的身体");
return;
}
}
snake.body.splice(0,0,{x:newX, y:newY});
board[newX][newY].style.background = "#333300";
if(board[newX][newY].isFood){
board[newX][newY].isFood = false;
productFood();
}
else{
var cell = snake.body.pop();
board[cell.x][cell.y].style.background = "#999933";
}
}
}
function changeBoard(val){ //更改区域设置
document.body.focus();
board = null;
boardWidth = val;
snake.body = [{x:0, y:0}];
snake.way = "left";
clearInterval(loop);
main();
}
function changeSpeed(val){ //更改速度设置
document.body.focus();
board = null;
snake.moveSpeed = val;
snake.body = [{x:0, y:0}];
snake.way = "left";
clearInterval(loop);
main();
}
var cellWidth = 13; //单元格宽度高度
var boardWidth = 20; //区域宽度高度
var board; //区域
var snake = { //蛇
body:[{x:0, y:0}],
way:"left",
moveSpeed:500
};
var loop; //循环
function main(){
//清空body
if(document.getElementById("content")){
document.getElementById("content").innerHTML = "";
}
else{
var newDiv = document.createElement("div");
newDiv.id = "content";
document.body.appendChild(newDiv);
}
//画盘
board = new Array(boardWidth);
for(var x=0; x<boardWidth; x++){
board[x] = new Array(boardWidth);
for(var y=0; y<boardWidth; y++){
(function(){
var _x = x;
var _y = y;
setTimeout(function(){
board[_x][_y] = createCell(_x, _y);
}, _x*69);
})();
}
} //捕获方向键
document.body.onkeydown = function(){
var oldWay = snake.way;
switch(event.keyCode){
case 38 : snake.way = (snake.way=="left" || snake.way=="right") ? "up" : snake.way; break;
case 40 : snake.way = (snake.way=="left" || snake.way=="right") ? "down" : snake.way; break;
case 37 : snake.way = (snake.way=="up" || snake.way=="down") ? "left" : snake.way; break;
case 39 : snake.way = (snake.way=="up" || snake.way=="down") ? "right" : snake.way; break;
}
if(oldWay != snake.way) move();
}
//延迟开始,等待加载
setTimeout(function(){
productFood();
loop = setInterval(function(){
move();
}, snake.moveSpeed);
}, boardWidth*100);
}
window.onload = main;
</script>
</head>
<body>
<form id="form1" runat="server">
<div id="select">
20*20:<input id="Radio1" name="boardOnly" onclick="changeBoard(20)" checked="checked" type="radio" /><br />
30*30:<input id="Radio2" name="boardOnly" onclick="changeBoard(30)" type="radio" /><br />
<br /><br />
拖拉机司机:<input id="Radio4" name="speedOnly" onclick="changeSpeed(300)" checked="checked" type="radio" /><br />
汽车司机:<input id="Radio5" name="speedOnly" onclick="changeSpeed(200)" type="radio" /><br />
火车司机:<input id="Radio6" name="speedOnly" onclick="changeSpeed(100)" type="radio" /><br />
飞机司机:<input id="Radio7" name="speedOnly" onclick="changeSpeed(30)" type="radio" /><br />
飞船司机:<input id="Radio8" name="speedOnly" onclick="changeSpeed(10)" type="radio" /><br />
</div>
</form>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> new document </title>
<meta name="generator" content="editplus" />
<meta name="author" content="" />
<meta name="keywords" content="" />
<meta name="description" content="" />
<script type="text/javascript">
<!--
var unit=15;
var rows=20;
var cols=30;
var stop;
var gameMap;
var fangXiang=37;
//var arr_snake=new Array();
var arr_snake_x=new Array();
var arr_snake_y=new Array();
var snake_length=1;
for(j=0;j<snake_length;j++){
arr_snake_x[j]=10;
arr_snake_y[j]=10+j; }
var sx=parseInt(Math.random()*cols );
var sy=parseInt(Math.random()*rows );
//初始化
function init()
{
createMap();
createBean();
createSnake();
} //建立地图
function createMap()
{
var ogameSanke=document.getElementById("gameSanke");
ogameSanke.innerHTML="<div class='gameMap' id='gameMap' style='width: "+unit*cols+"px;height:"+unit*rows+"px;' ></div>";
gameMap=new Array();
for(y=0;y<rows;y++)
{
gameMap[y]=new Array();
for (x=0;x<cols ;x++ )
{
gameMap[y][x]='0';
}
}
} //创建豆
function createBean()
{
bx=parseInt(Math.random()*cols );
by=parseInt(Math.random()*rows );
var ogameSanke=document.getElementById("gameMap");
ogameSanke.innerHTML+="<span class='Bean' style='width: "+unit+"px;height:"+unit+"px;left:"+unit*bx+"px;top:"+unit*by+"px;' >d</span>";
gameMap[by][bx]='bean'; } //创建蛇
function createSnake()
{
//snake_length++;
//arr_snake[snake_length-1][0]=sx;
//arr_snake[snake_length-1][1]=sy;
//alert(snake_length);
var ogameSanke=document.getElementById("gameMap");
for(j=0;j<snake_length;j++){
ogameSanke.innerHTML+="<div class='Snake' style='width: "+unit+"px;height:"+unit+"px;left:"+unit*arr_snake_x[j]+"px;top:"+unit*arr_snake_y[j]+"px;' ></div>"; }
} //
function keyDown()
{
clearTimeout( stop);
var key=event.keyCode;
////防止蛇反向爬
if( (fangXiang+key)%2 !=0 )
{
fangXiang=key;
} switch(fangXiang)
{
case 37: //左
move(-1,0);
break;
case 38:
move(0,-1);
break;
case 39:
move(1,0);
break;
case 40:
move(0,1);
break;
}
return false;
} //蛇爬
function move(x,y)
{
//sx+=x;
//sy+=y;
var oSanke=document.getElementById("gameMap").getElementsByTagName('div'); for (j=snake_length-1 ;j>0 ;j-- )
{
arr_snake_x[j]=arr_snake_x[j-1];
arr_snake_y[j]=arr_snake_y[j-1];
}
arr_snake_x[0]+=x;
arr_snake_y[0]+=y;
if(arr_snake_x[0]>=0 && arr_snake_x[0]<=cols && arr_snake_y[0]>=0 && arr_snake_y[0]<=rows){
//oSanke[0].style.left=(sx)*unit+'px';
//oSanke[0].style.top=(sy)*unit+'px';
for ( len=0 ;len<snake_length ;len++ )
{
oSanke[len].style.left=(arr_snake_x[len])*unit+'px';
oSanke[len].style.top=(arr_snake_y[len])*unit+'px';
} eat(arr_snake_x[0],arr_snake_y[0]);
stop=setTimeout( 'move('+x+','+y+')' , 500);
}else{
over();
}
}
//吃
function eat(x,y){
if (gameMap[y][x]=='bean')
{
var obean=document.getElementById("gameMap").getElementsByTagName('span');
obean[0].removeNode(true);
createBean();
//createSnake();
zhangchang()
}
}
//长长
function zhangchang(){
arr_snake_x[snake_length]=arr_snake_x[snake_length-1];
arr_snake_y[snake_length]=arr_snake_y[snake_length-1];
var ogameSanke=document.getElementById("gameMap");
ogameSanke.innerHTML+="<div class='Snake' style='width: "+unit+"px;height:"+unit+"px;left:"+unit*arr_snake_x[snake_length]+"px;top:"+unit*arr_snake_y[snake_length]+"px;' ></div>";
snake_length++;
}
//死
function over()
{
restart=confirm("游戏结束");
if(restart){
window.location.reload();
}
}
//执行
window.onload=init;
document.onkeydown=keyDown;
//-->
</script>
<style>
.gameMap{position:absolute; border:5px outset #00f ;background-color:#eee}
.Bean{position:absolute; background-color:#f00;border:1px outset #fc0; }
.Snake{position:absolute; background-color:#00f;border:1px outset #66CCFF }
</style>
</head> <body>
<div id="gameSanke"></div>
</body>
</html>