zoukankan
html css js c++ java
贪食蛇JS源码
<
html xmlns
=
"
http://www.w3.org/1999/xhtml
"
>
<
head
>
<
title
>
Snake
</
title
>
<
style type
=
"
text/css
"
>
body
{
background
-
color:White;
font
-
size:12px;
}
#main
{
position:absolute;
410px;
height:310px;
border
-
style:inset;
border
-
color:#0000cc;
border
-
5px;
}
#monitor
{
position:absolute;
top:330px;
}
.snake
{
20px;
height:20px;
overflow:hidden;
background
-
color:blue;
position:absolute;
}
.food
{
20px;
height:20px;
overflow:hidden;
background
-
color:red;
position:absolute;
}
</
style
>
<
script type
=
"
text/jscript
"
>
var
AllDiv, AllSpan
var
Sx, Sy;
//
Snake的头
var
Gox, Goy;
//
移动方向
var
IsStart
=
false
;
//
是否开始
var
Fx, Fy;
//
食物的地址
var
TimeHandle;
var
IsOver
=
false
;
var
Sec
=
0
;
//
记时
function
page_load()
{
CreateSnake(
0
,
0
);
CreateSnake(
0
,
20
);
CreateSnake(
20
,
20
);
AllDiv
=
main.all.tags('DIV');
CreatFood();
AllSpan
=
main.all.tags('SPAN');
}
function
CreateSnake(x,y)
{
main.innerHTML
+=
"
<div class=\
"
snake\
"
style=\
"
top:
"
+y+
"
; left:
"
+x+
"
\
"
></div>
"
;
Sx
=
x;
Sy
=
y;
dSx.innerText
=
Sx;
dSy.innerText
=
Sy;
}
function
CreatFood()
{
if
(AllSpan
!=
null
)
{
AllSpan[
0
].removeNode(
true
);
}
do
{
Fx
=
Math.round(Math.random()
*
19
)
*
20
;
Fy
=
Math.round(Math.random()
*
14
)
*
20
;
dFx.innerText
=
Fx;
dFy.innerText
=
Fy;
}
while
(CheckBody(Fx,Fy))
main.innerHTML
+=
"
<span class=\
"
food\
"
style=\
"
top:
"
+Fy+
"
; left:
"
+Fx+
"
\
"
></span>
"
;
}
function
Move()
{
var
NSx
=
Sx
+
Gox;
var
NSy
=
Sy
+
Goy;
//
下个格子
//
是否GameOver
IsOver
=
IsGameOver(NSx,NSy);
if
(IsOver)
{
return
;
}
if
(NSx
==
Fx
&&
NSy
==
Fy)
{
CreatFood();
}
else
{
AllDiv[
0
].removeNode(
true
);
//
移动
}
CreateSnake(NSx,NSy);
}
function
IsGameOver(x,y)
{
if
(x
<
0
||
x
>=
400
||
y
>=
300
||
y
<
0
)
{
return
true
;
}
return
CheckBody(x,y)
}
//
键盘控制
function
KeyDown(){
if
(IsOver)
return
;
Key
=
event.keyCode
switch
(Key){
case
37
:Dir(
-
1
,
0
);
break
//
左
case
39
:Dir(
1
,
0
);
break
//
右
case
38
:Dir(
0
,
-
1
);
break
//
上
case
40
:Dir(
0
,
1
);
break
}
//
下
return
false
}
function
Dir(x,y)
{
if
(Gox
==
-
x
*
20
&&
Goy
==
-
y
*
20
)
return
Gox
=
x
*
20
;
Goy
=
y
*
20
;
if
(IsStart
==
false
)
{
IsStart
=
true
;
PlayGame();
}
dGox.innerText
=
Gox;
dGoy.innerText
=
Goy;
}
//
开始游戏,并不停移动
function
PlayGame()
{
Sec
++
;
if
(IsOver)
{
clearTimeout(TimeHandle);
}
else
{
Move();
TimeHandle
=
setTimeout('PlayGame()',
50
)
}
var
d
=
new
Date(
0
,
0
,
0
,
0
,
0
,
0
,
0
);
d.setTime(d.getTime()
+
Sec
*
50
);
dSec.innerText
=
Sec;
dTime.innerText
=
d.toLocaleTimeString();
}
//
检测食物
function
CheckBody(x,y)
{
for
(
var
i
=
0
; i
<
AllDiv.length;i
++
)
{
if
(AllDiv[i].style.left
==
x
+
"
px
"
&&
AllDiv[i].style.top
==
y
+
"
px
"
)
{
return
true
;
}
}
return
false
;
}
</
script
>
</
head
>
<
body onload
=
"
page_load()
"
onkeydown
=
"
KeyDown()
"
>
<
div id
=
"
main
"
>
</
div
>
<
div id
=
"
monitor
"
>
<
input type
=
"
button
"
value
=
"
test
"
onclick
=
"
clearTimeout(TimeHandle)
"
/>
<
fieldset
>
<
legend
>
参数
</
legend
>
<
ul
>
<
li
>
Sx:
<
span id
=
"
dSx
"
></
span
></
li
>
<
li
>
Sy:
<
span id
=
"
dSy
"
></
span
></
li
>
<
li
>
Fx:
<
span id
=
"
dFx
"
></
span
></
li
>
<
li
>
Fy:
<
span id
=
"
dFy
"
></
span
></
li
>
<
li
>
Gox:
<
span id
=
"
dGox
"
></
span
></
li
>
<
li
>
Goy:
<
span id
=
"
dGoy
"
></
span
></
li
>
<
li
>
Sec:
<
span id
=
"
dSec
"
></
span
></
li
>
<
li
>
Time:
<
span id
=
"
dTime
"
></
span
></
li
>
</
ul
>
</
fieldset
>
</
div
>
</
body
>
</
html
>
查看全文
相关阅读:
大一励志的我,现在已经大三了
Jenkins+K8s实现持续集成
Jenkins搭建自动化测试环境
软件开发式样书 6
软件开发式样书 5
软件开发式样书 4
软件开发式样书 3
软件开发式样书 2
软件开发式样书 1
Git学习笔记
原文地址:https://www.cnblogs.com/goodspeed/p/67616.html
最新文章
深入浅出:机器学习与人工智能代码的实现(1)
深刻理解:无人机数据系统应用
软件(程序)编写通法
我来告诉你,学 Python 为什么找不到工作
Python 智能银行卡识别系统的实现 (2)—系统的实现
Python 智能银行卡识别系统的实现 (1)— PyQt5实现登陆功能
Python面向对象三大特征之多态
我在大学的3年
基于色彩调和的专题图自动生成系统
导线测量求解程序
热门文章
【摄影测量学空间后方交会作业】求解程序
基数排序C#界面版
模仿ArcGIS用Graphics重绘的直方图分级调节器
DEM精度评价自动化系统的成果展示
高光谱数据的最佳波段选择系统的程序设计与实现
区域增长算法的设计与实现(递归思想和堆栈数据结构)
"提取位于北坡的各类用地面积信息"的程序设计与实现
通过一道题理解分布式地理信息系统
关于科学选择地图投影类型的探讨
小流域水土保持遥感信息系统
Copyright © 2011-2022 走看看