原创javascript小游戏实现代码


Posted in Javascript onAugust 19, 2010

以下是代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<title>jjb</title> 
<style type="text/css"> 
* { margin:0px; padding:0px;} 
#content{ width:800px; height:500px; position:absolute; left:10px; top:10px; background:url(bg.gif) repeat-x left top;} 
#scbox{width:100px; background:#000000; font-weight:bold; color:#FFFFFF; font-size:12px; line-height:22px; padding-left:10px;} 
#start{ position:absolute; left:215px; _left:190px; top:140px;} 
#life { height:22px; background:#009000; position:absolute; left:110px; top:0px;} 
#bottom { width:800px; height:44px; position:absolute; left:0; top:456px; background:#333; z-index:9;} 
#startbox { height:150px; position:absolute; left:260px; top:100px; background:#000000; color:#fff; font-size:12px; padding:10px;} 
#jia {font-size:40px; font-family:Verdana, Arial, Helvetica, sans-serif; color:#0099CC; position:absolute; z-index:1001;} 
#jian {font-size:40px; font-family:Verdana, Arial, Helvetica, sans-serif; color:#FF0000; position:absolute; z-index:1001;} 
</style> 
<script language="javascript"> 
(function (){ 
(new Image()).src = "38.gif"; 
(new Image()).src = "48.gif"; 
(new Image()).src = "bike.gif"; 
(new Image()).src = "bike2.gif"; 
(new Image()).src = "bg.gif"; 
})(); 
//缓存加载图片 
function $(id) {return document.getElementById(id);} 
var boxBaseAttr = new Object; 
boxBaseAttr = { 
width : "26px", 
height : "40px", 
position: "absolute", 
top : "30px", 
background : "url(38.gif) no-repeat center top", 
zIndex : 10 
}; 
var boxBaseAttr2 = new Object; 
boxBaseAttr2 = { 
width : "26px", 
height : "40px", 
position: "absolute", 
top : "30px", 
background : "url(48.gif) no-repeat center top", 
zIndex : 10 
}; var ele = new Object; 
ele = { 
div : document.createElement("div"), 
span: function (){ 
var sp = document.createElement("span"); 
for(var s in boxBaseAttr) { 
sp.style[s] = boxBaseAttr[s]; 
} 
sp.setAttribute("type", "good"); 
return sp; 
}, 
badspan : function (){ 
var sp2 = document.createElement("span"); 
for(var s in boxBaseAttr2) { 
sp2.style[s] = boxBaseAttr2[s]; 
} 
sp2.setAttribute("type", "bad"); 
return sp2; 
} 
}; 
var sco = 0, lifeWidth = 690, lifes = true; 
var bar = { 
getScore : function () { 
sco += 10; 
$("sc").innerHTML = sco; 
}, 
loseScore : function (){ 
sco -= 10; 
$("sc").innerHTML = sco; 
}, 
life : function (){ 
var life = $("life"); 
var sl = setInterval(function(){ 
if(lifeWidth < 23) { 
lifes = false; 
clearInterval(sl); 
return; 
} 
else { 
lifeWidth -= 23; 
life.style.width = lifeWidth + "px"; 
} 
},1000); 
} 
}; 
var fire = { 
init : function (o, x, y) { 
o.style.display = "block"; 
o.style.left = x + "px"; 
o.style.top = y + "px"; 
var fs = setInterval(function(){ 
if (y >= 280) { 
y -= 10; 
o.style.top = y + "px"; 
} 
else{ 
clearInterval(fs); 
o.style.display = "none"; 
} 
},10); 
} 
}; 
/*-- game begin --*/ 
function game() { 
var content = $("content"), x = 0; 
var pigBaseAttr = new Object; 
pigBaseAttr = { 
background : "url(bike.gif) no-repeat center top", 
position : "absolute", 
top : content.clientHeight-44+"px", 
left : (content.clientWidth - 45)/2+"px", 
width : "45px", 
height : "44px", 
zIndex : 1000 
}; 
var pig = ele.div.cloneNode(true); 
for(var s in pigBaseAttr) { 
pig.style[s] = pigBaseAttr[s]; 
} 
content.appendChild(pig); 
/* -- 小猪移动功能begin--*/ 
content.onmousemove = function (event){ 
var e = event || window.event; 
if ( x > e.clientX) { 
//pig.style.width = "110px"; 
pig.style.background = "url(bike.gif) no-repeat left top"; 
if (e.clientX -45 < 0) { 
pig.style.left = "0px"; 
} else if(e.clientX + 45 > 800) { 
pig.style.left = "755px"; 
} 
else { 
pig.style.left = (e.clientX - 45)+"px"; 
} 
} 
else if (x < e.clientX) { 
//pig.style.width = "110px"; 
pig.style.background = "url(bike2.gif) no-repeat right top"; 
if (e.clientX -45 < 0) { 
pig.style.left = "0px"; 
} else if(e.clientX + 45 > 800) { 
pig.style.left = "755px"; 
} 
else { 
pig.style.left = (e.clientX - 45)+"px"; 
} 
} 
x = e.clientX; 
} 
/*-- 判断是否撞击,传入参数为box和content --*/ 
function meet(obox,parent) { 
var objX = obox.offsetLeft; 
var pigX = pig.offsetLeft; 
var boxType = obox.getAttribute("type"); 
if (objX + 26 >= pigX && objX <= pigX + 45) { 
if (boxType == "good") { 
bar.getScore(); 
fire.init($("jia"), pigX, pig.offsetTop-30); 
} 
else if(boxType == "bad") { 
bar.loseScore(); 
fire.init($("jian"), pigX, pig.offsetTop-30); 
} 
obox.style.left = "-2000px"; 
} 
} 
/* -- 创建随机位置的金币 begin--*/ 
function createbox() { 
var box = ele.span(); 
var b = 30; 
var boxLeft = Math.floor(Math.random()*760);//产生随机距离 
box.style.left = boxLeft + "px"; 
content.appendChild(box); 
//box进入游戏界面,开始移动,并开始执行函数和pig比对是否撞击 
var st = setInterval(function (){ 
if (b < 460){ 
box.style.top = b + 5 + "px"; 
b += 5; 
if (b >= 416) { 
meet(box, content); 
} 
} 
else { 
content.removeChild(box); 
clearInterval(st); 
b = 30; 
} 
},5); 
} 
function createbadbox() { 
var box = ele.badspan(); 
var b = 30; 
var boxLeft = Math.floor(Math.random()*760);//产生随机距离 
box.style.left = boxLeft + "px"; 
content.appendChild(box); 
//box进入游戏界面,开始移动,并开始执行函数和pig比对是否撞击 
var st = setInterval(function (){ 
if (b < 460){ 
box.style.top = b + 5 + "px"; 
b += 5; 
if (b > 416) { 
meet(box, content); 
} 
} 
else { 
content.removeChild(box); 
clearInterval(st); 
b = 30; 
} 
},5); 
} 
bar.life(); 
/*-- 开始执行循环添加box函数 --*/ 
var xt = setInterval(function(){ 
if (lifes == false) { 
clearInterval(xt); 
alert("时间到,您的得分是:"+sco); 
lifeWidth = 690; 
lifes = true; 
sco = 0; 
$("startbox").style.display = "block"; 
$("start").value = "再玩一次"; 
content.removeChild(pig); 
}else{ 
createbox(); 
createbadbox(); 
} 
},500); 
} 
window.onload = function () { 
$("start").onclick = function () { 
$("startbox").style.display = "none"; 
new game(); 
} 
} 
</script> 
</head> 
<body> 
<div id="content"> 
<div id="startbox"> 
<p>游戏规则:</p> 
<p>(1) 你只有30秒的时间,用鼠标控制小猪左右移动;</p> 
<p>(2) 小猪接到<img src="38.gif" />女孩,加10分;</p> 
<p>(3) 小猪接到<img src="48.gif" />女孩,减10分;</p> 
<input type="button" id="start" value="开始游戏" /> 
</div> 
<div id="scbox">分数:<span id="sc">0</span></div> 
<div id="life" style="width:690px;"></div> 
<div id="bottom"></div> 
<div id="jia" style="display:none;">+10</div> 
<div id="jian" style="display:none;">-10</div> 
</div> 
</body> 
</html>

演示代码:/js/js_game/index.htm
代码打包下载
Javascript 相关文章推荐
使用自定义setTimeout和setInterval使之可以传递参数和对象参数
Apr 24 Javascript
自写的一个jQuery圆角插件
Oct 26 Javascript
解决css和js的{}与smarty定界符冲突问题的两种方法
Sep 10 Javascript
Bootstrap安装环境配置教程分享
May 27 Javascript
深入理解JavaScript中的call、apply、bind方法的区别
May 30 Javascript
HTML的select控件美化
Mar 27 Javascript
bootstrap table单元格新增行并编辑
May 19 Javascript
vue2.0 子组件改变props值,并向父组件传值的方法
Mar 01 Javascript
详解如何用VUE写一个多用模态框组件模版
Sep 27 Javascript
vue vantUI实现文件(图片、文档、视频、音频)上传(多文件)
Oct 15 Javascript
Vue select 绑定动态变量的实例讲解
Oct 22 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
Feb 26 Vue.js
jQuery与ExtJS之选择实例分析
Aug 19 #Javascript
JQuery跨Iframe选择实现代码
Aug 19 #Javascript
JQuery中each()的使用方法说明
Aug 19 #Javascript
jquery获取input的value问题说明
Aug 19 #Javascript
JavaScript开发规范要求(规范化代码)
Aug 16 #Javascript
JavaScript学习历程和心得小结
Aug 16 #Javascript
javascript中的prototype属性使用说明(函数功能扩展)
Aug 16 #Javascript
You might like
php 什么是PEAR?(第三篇)
2009/03/19 PHP
PHP生成excel时单元格内换行问题的解决方法
2010/08/26 PHP
PHP实现采集中国天气网未来7天天气
2014/10/15 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
javascript Firefox与IE 替换节点的方法
2010/02/24 Javascript
JQuery最佳实践之精妙的自定义事件
2010/08/11 Javascript
JS实现合并两个数组并去除重复项只留一个的方法
2015/12/17 Javascript
AngularJS递归指令实现Tree View效果示例
2016/11/07 Javascript
AngularJs表单校验功能实例代码
2017/02/09 Javascript
canvas压缩图片转换成base64格式输出文件流
2017/03/09 Javascript
JS利用cookies设置每隔24小时弹出框
2017/04/20 Javascript
Javascript创建类和对象详解
2017/05/31 Javascript
JS处理一些简单计算题
2018/02/24 Javascript
vue鼠标移入添加class样式,鼠标移出去除样式(active)实现方法
2018/08/22 Javascript
vue项目中使用Svg的方法
2018/10/24 Javascript
jQuery事件多次绑定与解绑问题实例分析
2019/02/19 jQuery
JS实现马赛克图片效果完整示例
2019/04/13 Javascript
IntelliJ IDEA编辑器配置vue高亮显示
2019/09/26 Javascript
VUE 解决mode为history页面为空白的问题
2019/11/01 Javascript
JavaScript手写数组的常用函数总结
2020/11/22 Javascript
[40:03]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
python 读取竖线分隔符的文本方法
2018/12/20 Python
python执行精确的小数计算方法
2019/01/21 Python
解决django前后端分离csrf验证的问题
2019/02/03 Python
详解Python给照片换底色(蓝底换红底)
2019/03/22 Python
Python切割图片成九宫格的示例代码
2020/03/10 Python
python 实现关联规则算法Apriori的示例
2020/09/30 Python
Python基于爬虫实现全网搜索并下载音乐
2021/02/14 Python
html5 svg 中元素点击事件添加方法
2013/01/16 HTML / CSS
非凡女性奢华谦虚风格:The Modist
2017/10/28 全球购物
PHP如何自定义函数
2016/09/16 面试题
党支部承诺书范文
2014/03/28 职场文书
大学生就业自荐书
2014/06/16 职场文书
师德师风事迹材料
2014/12/20 职场文书
用Python进行栅格数据的分区统计和批量提取
2021/05/27 Python