jq游戏----推箱子
2015-06-24 15:27
537 查看
jq游戏----推箱子
参考妙趣课堂视频所写的游戏,练练手还是很不错的,下面附上代码:
index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<link rel="stylesheet" type="text/css" href="css/index.css">
</head>
<body>
<div id="div1">
</div>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/index.js"></script>
</body>
</html>index.js
$(document).ready(function(){
Game.init($('#div1')); //初始化
// alert("a");
});
var Game = {
gk: [
{//第一关
map : [
1,1,4,4,4,4,1,1,
1,1,4,2,2,4,1,1,
1,4,4,3,2,4,4,1,
1,4,3,3,3,2,4,1,
4,4,3,3,3,3,4,4,
4,3,3,4,3,3,3,4,
4,3,3,3,3,3,3,4,
4,4,4,4,4,4,4,4
],
xiangzi : [
{x: 4, y: 3},
{x: 3, y: 4},
{x: 4, y: 5},
{x: 5, y: 5}
],
me : {x:3 ,y:6}
}
],
init:function(id){
this.oParent = id;
this.createmap(0);
},
createmap: function(inow){
this.oParent.empty();
this.nowJson = this.gk[inow];
this.oParent.css('width',Math.sqrt(this.nowJson.map.length)*50);
$.each(this.nowJson.map , $.proxy(function(i,elem){ //$.proxy替换this指针
this.oParent.append('<div class="bg'+elem +'"></div>')
},this));
this.createBox();
this.createMe();
},
createBox :function(){ //创建箱子
$.each(this.nowJson.xiangzi,$.proxy(function(i,elem){
var oBox = $('<div class="xiangzi"></div>');
oBox.css({
"left":elem.x*50,
"top":elem.y*50
});
this.oParent.append(oBox);
},this))
},
createMe : function(){ //创建我
var oP = $('<div class="me"></div>');
oP.css({
"left":this.nowJson.me.x*50,
"top":this.nowJson.me.y*50
});
oP.data('x',this.nowJson.me.x);
oP.data('y',this.nowJson.me.y);
this.oParent.append(oP);
this.bindMe(oP);
},
bindMe : function(oP){ //操作人
$(document).keydown($.proxy(function(ev){
switch(ev.which){
case 37://←
this.runMe(oP,{x:-1});
break;
case 38://shang
this.runMe(oP,{y:-1});
break;
case 39://you
this.runMe(oP,{x:1});
break;
case 40://xia
this.runMe(oP,{y:1});
break;
}
},this));
},
runMe :function(oP,opt){
var stepX = opt.x||0;
var stepY = opt.y||0;
if(this.nowJson.map[(oP.data('y')+stepY)*Math.sqrt(this.nowJson.map.length)+oP.data('x')+stepX] !=4){
oP.data('x',oP.data('x')+stepX);
oP.data('y',oP.data('y')+stepY);
oP.css('left' , oP.data('x')*50);
oP.css('top' , oP.data('y')*50);
$('.xiangzi').each($.proxy(function(i,elem){
if(this.pz(oP,$(elem))&&this.nowJson.map[(oP.data('y')+stepY)*Math.sqrt(this.nowJson.map.length)+oP.data('x')+stepX] !=4){//判断是否碰到墙。碰到小乌龟弹回来
$(elem).css('left',(oP.data('x')+stepX)*50);
$(elem).css('top',(oP.data('y')+stepY)*50);
$('.xiangzi').each($.proxy(function(j,elem2){//遇到两个箱子的情况
if(this.pz($(elem),$(elem2))&&elem!=elem2){
$(elem).css('left',(oP.data('x'))*50);
$(elem).css('top',(oP.data('y'))*50);
oP.data('x',oP.data('x')-stepX);
oP.data('y',oP.data('y')-stepY);
oP.css('left' , oP.data('x')*50);
oP.css('top' , oP.data('y')*50);
}
},this));
}else if (this.pz(oP,$(elem))){
oP.data('x',oP.data('x')-stepX);
oP.data('y',oP.data('y')-stepY);
oP.css('left' , oP.data('x')*50);
oP.css('top' , oP.data('y')*50);
}
},this));
}
this.nextShow();
},
nextShow :function(){//下一关
var iNum =0;
$('.bg2').each($.proxy(function(i,elem){
$('.xiangzi').each($.proxy(function(j,elem2){
if(this.pz($(elem),$(elem2))){
iNum++;
}
},this));
},this));
if(iNum==$('.xiangzi').size()){
alert("下一关");
this.createMap(1);
}
},
pz :function(obj1,obj2) {
var L1=obj1.offset().left;
var R1=obj1.offset().left+obj1.width();
var T1=obj1.offset().top;
var B1=obj1.offset().top+obj1.height();
var L2=obj2.offset().left;
var R2=obj2.offset().left+obj2.width();
var T2=obj2.offset().top;
var B2=obj2.offset().top+obj2.height();
if(L1>=R2||R1<=L2||B1<=T2||T1>=B2){
return false;
}else{
return true;
}
}
};
index.css
参考妙趣课堂视频所写的游戏,练练手还是很不错的,下面附上代码:
index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<link rel="stylesheet" type="text/css" href="css/index.css">
</head>
<body>
<div id="div1">
</div>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/index.js"></script>
</body>
</html>index.js
$(document).ready(function(){
Game.init($('#div1')); //初始化
// alert("a");
});
var Game = {
gk: [
{//第一关
map : [
1,1,4,4,4,4,1,1,
1,1,4,2,2,4,1,1,
1,4,4,3,2,4,4,1,
1,4,3,3,3,2,4,1,
4,4,3,3,3,3,4,4,
4,3,3,4,3,3,3,4,
4,3,3,3,3,3,3,4,
4,4,4,4,4,4,4,4
],
xiangzi : [
{x: 4, y: 3},
{x: 3, y: 4},
{x: 4, y: 5},
{x: 5, y: 5}
],
me : {x:3 ,y:6}
}
],
init:function(id){
this.oParent = id;
this.createmap(0);
},
createmap: function(inow){
this.oParent.empty();
this.nowJson = this.gk[inow];
this.oParent.css('width',Math.sqrt(this.nowJson.map.length)*50);
$.each(this.nowJson.map , $.proxy(function(i,elem){ //$.proxy替换this指针
this.oParent.append('<div class="bg'+elem +'"></div>')
},this));
this.createBox();
this.createMe();
},
createBox :function(){ //创建箱子
$.each(this.nowJson.xiangzi,$.proxy(function(i,elem){
var oBox = $('<div class="xiangzi"></div>');
oBox.css({
"left":elem.x*50,
"top":elem.y*50
});
this.oParent.append(oBox);
},this))
},
createMe : function(){ //创建我
var oP = $('<div class="me"></div>');
oP.css({
"left":this.nowJson.me.x*50,
"top":this.nowJson.me.y*50
});
oP.data('x',this.nowJson.me.x);
oP.data('y',this.nowJson.me.y);
this.oParent.append(oP);
this.bindMe(oP);
},
bindMe : function(oP){ //操作人
$(document).keydown($.proxy(function(ev){
switch(ev.which){
case 37://←
this.runMe(oP,{x:-1});
break;
case 38://shang
this.runMe(oP,{y:-1});
break;
case 39://you
this.runMe(oP,{x:1});
break;
case 40://xia
this.runMe(oP,{y:1});
break;
}
},this));
},
runMe :function(oP,opt){
var stepX = opt.x||0;
var stepY = opt.y||0;
if(this.nowJson.map[(oP.data('y')+stepY)*Math.sqrt(this.nowJson.map.length)+oP.data('x')+stepX] !=4){
oP.data('x',oP.data('x')+stepX);
oP.data('y',oP.data('y')+stepY);
oP.css('left' , oP.data('x')*50);
oP.css('top' , oP.data('y')*50);
$('.xiangzi').each($.proxy(function(i,elem){
if(this.pz(oP,$(elem))&&this.nowJson.map[(oP.data('y')+stepY)*Math.sqrt(this.nowJson.map.length)+oP.data('x')+stepX] !=4){//判断是否碰到墙。碰到小乌龟弹回来
$(elem).css('left',(oP.data('x')+stepX)*50);
$(elem).css('top',(oP.data('y')+stepY)*50);
$('.xiangzi').each($.proxy(function(j,elem2){//遇到两个箱子的情况
if(this.pz($(elem),$(elem2))&&elem!=elem2){
$(elem).css('left',(oP.data('x'))*50);
$(elem).css('top',(oP.data('y'))*50);
oP.data('x',oP.data('x')-stepX);
oP.data('y',oP.data('y')-stepY);
oP.css('left' , oP.data('x')*50);
oP.css('top' , oP.data('y')*50);
}
},this));
}else if (this.pz(oP,$(elem))){
oP.data('x',oP.data('x')-stepX);
oP.data('y',oP.data('y')-stepY);
oP.css('left' , oP.data('x')*50);
oP.css('top' , oP.data('y')*50);
}
},this));
}
this.nextShow();
},
nextShow :function(){//下一关
var iNum =0;
$('.bg2').each($.proxy(function(i,elem){
$('.xiangzi').each($.proxy(function(j,elem2){
if(this.pz($(elem),$(elem2))){
iNum++;
}
},this));
},this));
if(iNum==$('.xiangzi').size()){
alert("下一关");
this.createMap(1);
}
},
pz :function(obj1,obj2) {
var L1=obj1.offset().left;
var R1=obj1.offset().left+obj1.width();
var T1=obj1.offset().top;
var B1=obj1.offset().top+obj1.height();
var L2=obj2.offset().left;
var R2=obj2.offset().left+obj2.width();
var T2=obj2.offset().top;
var B2=obj2.offset().top+obj2.height();
if(L1>=R2||R1<=L2||B1<=T2||T1>=B2){
return false;
}else{
return true;
}
}
};
index.css
* {margin: 0; padding: 0;} li {list-style: none;} #div1 { position: relative; margin: 20px auto; } .bg1 { width: 50px; height: 50px; float: left; background-color: #ccc; } .bg2 { width: 50px; height: 50px; float: left; background-color: red; } .bg3 { width: 50px; height: 50px; float: left; background-color: blue; } .bg4 { width: 50px; height: 50px; float: left; background: url(../images/qiang.png) no-repeat; } .xiangzi { position: absolute; width: 50px; height: 50px; background: url(../images/xiangzi.png) no-repeat; } .me { position: absolute; width: 50px; height: 50px; background: url(../images/me.png) no-repeat; }
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- JavaScript演示排序算法
- jQuery Ajax 跨域调用
- 我是运营,我没有假期
- jquery教程靠边站,一分钱不花让你免费学会jquery
- JQuery+Strusts1.x无刷新登录
- 每个 Linux 游戏玩家都绝不想要的恼人体验
- Steam 让我们在 Linux 上玩 Windows 的游戏更加容易
- 如何使用 Steam Play 在 Linux 上玩仅限 Windows 的游戏
- 新一代iPad适配应用之游戏篇
- JQuery 初体验(建议学习jquery)
- Jquery实现的table最后一行添加样式的代码
- jQuery 练习[一] 学习jquery的准备工作
- jquery获得页面元素的坐标值实现思路及代码
- jquery如何实现在加载完iframe的内容后再进行操作
- jquery $.ajax()取xml数据的小问题解决方法
- jQuery '行 4954 错误: 不支持该属性或方法' 的问题解决方法
- Jquery 表单取值赋值的一些基本操作
- jQuery实现复选框批量选择与反选的方法
- jQuery中的常用事件总结