有图有真相,废话不多说上图

看到园友的支持很受鼓舞,更觉得应该做下去,虽然自己是个菜鸟,但也应该共享自己的心得,只要有人获益那就是值得的。

我的下载需要csdn论坛的1个积分,之所以不完全免费出去是因为我觉得一件东西如果得到的太容易往往不会珍惜,哪怕只是象征性的一点点代价,我也希望能付出一点再得到。

如果你实在没有csdn积分,给文章评论或推荐、或者联系我,都可以得到代码,只要付出1点点的努力,感谢你的支持。

ok,接入正题

期待已久的向日葵终于要登场了,掌声有请。

向日葵其实很简单,他的作用就是产生阳光,只要设定一个timer ,以指定的时间生成阳光就ok了。

     function XiangRiKui(config) {
this.body = config.body.clone();
this.id = 1;
this.x = config.x;
this.y = config.y;
var _self = this; //制造阳光
setInterval(function () {
//给阳光注册几个事件
var myYangGuang = $yangGuang.clone();
myYangGuang.mouseover(function () {
$(this).find("img").attr("src", "/img/game/yangGuang2.png");
})
myYangGuang.mouseout(function () {
$(this).find("img").attr("src", "/img/game/yangGuang.png");
}) myYangGuang.click(function () {
$i.Ui.tip("阳光+1");
myYangGuang.remove();
}) myYangGuang.appendTo($zhanChang).css({ "left": _self.x * 100, "top": _self.y * 100 }).animate({ top: "+=20", "left": "+=80" }, 500);
},10000) }

这里给阳光注册了一个点击事件,点击的时候回收阳光增加积分,是不是很简单啊。

以前只有一个植物,现在多了一个,看来得写个工厂生产植物喽,在javascript中工厂模式是非常的简单。

 //植物工厂
function MakeZhiWu(id, config) {
switch (id) {
case 0:
//豌豆射手
config.body = $wanDou;
return new WanDou(config);
break;
case 1:
//向日葵
config.body = $xiangRiKui;
return new XiangRiKui(config);
break;
default:
break;
}
}

界面左边的部分我把它叫做图标,每一个图标对应一个id,图标点击的时候把图标的id交给工厂,这样就有植物了。

子弹也是一个类,子弹的功能是攻击、碰撞检测、展示击中动画、通知僵尸你被击中了。代码如下。

 function ZiDan(config) {
this.body = $ziDan.clone();
this.speed = 10;
this.y = config.gameY;
this.timer = 0;
var _self = this;
var nowLine = _self.y + 1;
//var p = $i.Game.IntPointToWebPoint(config.x, config.y, $stemp, $body); this.body.css({ "left": config.x, "top": config.y }); this.Run = function () {
this.timer = setInterval(function () {
var left = $i.Game.MoveRight(_self.body, 4);
var line = [];
switch (nowLine) {
case 1:
line = $listJiangShi1;
break;
case 2:
line = $listJiangShi2;
break;
case 3:
line = $listJiangShi3;
break;
case 4:
line = $listJiangShi4;
break;
case 5:
line = $listJiangShi5;
break;
case 6:
line = $listJiangShi6;
break;
} //碰撞检测
for (var i = 0; i < line.length; i++) {
if (left >= line[i].body.position().left) {
//var nowLine = i + 1; //击中处理
clearInterval(_self.timer);
//子弹击中的动画
$i.Game.Play(_self.body.find("img"), ["/img/game/zidan2.png", "/img/game/zidan3.png"], 60, function () {
_self.body.remove();
delete _self;
}); //僵尸血量减少
line[i].OnFire(function () {
line.splice(i, 1);
}); if (line.length == 0) {
$i.Event.FireEvent("Line" + nowLine + "Clear");
} break;
}
}
//边界检测
if (left > 800) {
clearInterval(_self.timer);
_self.body.remove();
delete _self;
} }, this.speed);
}
}

对于子弹我还没有写工厂,下次增加其他植物的时候可能就要写工厂了,因为有些植物的子弹属性是不一样的。看了这些不知道你有什么感觉,是否想评头论足一番,来吧欢迎点评。

总结

如果觉得本文对您有帮助,请支持一下。如果你有好的想法,诚请指教。

如果对Js 的三层结构有兴趣,请关注本分类下其他文章。

下载地址

本下载需要1点csdn积分,不付出1点代价换来的东西是不会珍惜的,so 点击下载吧

IceMx.Mvc 我的js MVC 框架六、完善植物大战僵尸(向日葵登场)的更多相关文章

  1. IceMx.Mvc 我的js MVC 框架 三、动手来写一个评论模块儿

    介绍 本人菜鸟,一些自己的浅薄见解,望各位大神指正. 本框架有以下优点 1.简单(调用简单.实现简单.不过度设计) 2.视图.控制器.模型分离(分离对于维护十分有必要) 3.组件化(每一个mvc模块儿 ...

  2. IceMx.Mvc 我的js MVC 框架 开篇

    开篇 这篇文章是后补的,前端时间想写一些对于js开发的一些理解,就直接写了,后来发现很唐突,所以今天在这里补一个开篇. 我的js Mvc 框架 基于实用设计,过分设计等于没设计.本着简单的原则,它只实 ...

  3. IceMx.Mvc 我的js MVC 框架五、完善植物大战僵尸(雏形版增加动画)

    有图有真相 说明 实在找不到僵尸的素材,从网上扒了一个山寨的僵尸,只有4张的一个连续图片,所以动作有点僵硬,植物的图片是自己处理的,非专业所以……咳咳!. 背景是自己抠下来2块儿拼接的,看在这么辛苦的 ...

  4. IceMx.Mvc 我的js MVC 框架 一、html代码的分离(视图)

    介绍 本人菜鸟,一些自己的浅薄见解,望各位大神指正. 本框架有以下优点 1.简单(调用简单.实现简单.不过度设计) 2.视图.控制器.模型分离(分离对于维护十分有必要) 3.组件化(每一个mvc模块儿 ...

  5. IceMx.Mvc 我的js MVC 框架 二、视图的数据绑定

    介绍 本人菜鸟,一些自己的浅薄见解,望各位大神指正. 本框架有以下优点 1.简单(调用简单.实现简单.不过度设计) 2.视图.控制器.模型分离(分离对于维护十分有必要) 3.组件化(每一个mvc模块儿 ...

  6. IceMx.Mvc 我的js MVC 框架四、试水植物大战僵尸(雏形版)

    有图有真相 开始 最近老婆在家迷上了植物大战僵尸,每天回去躺床上就玩,有一天居然跟我说冰箱后边爬着好几只僵尸,当时我就惊呆了,后来才知道她是在说蟑螂,我去. 闲言少叙,书归正传,这是一个雏形,没有在界 ...

  7. IceMx.Mvc 我的js MVC 框架七、完善植物大战僵尸(增加阳光的消费和获得)

    话不多说,先上图 这次增加了阳光的消费和获得,增加了阳光的点击动画 重新排布了布局 有兴趣的话就研究下吧. 上一篇有朋友说让我把项目放到github上面维护,本人没用过这个,肯请朋友们帮小弟科普一下放 ...

  8. 全端开发必备!10个最好的 Node.js MVC 框架

      Node.js 是最流行的 JavaScript 服务端平台,它允许建立可扩展的 Web 应用程序.Node.js 包含不同类型的框架,如 MVC 框架.全栈框架.REST API  以及大量的服 ...

  9. Mithril – 构建杰出 Web 应用的 JS MVC 框架

    Mithril 是一个客户端的 Javascript MVC 框架.它是一个工具,使应用程序代码分为数据层,UI 层和粘合层.提供了一个模板引擎与一个虚拟的 DOM diff 实现,用于高性能渲染,支 ...

随机推荐

  1. SpringMVC1

    itRed You are never too old to set another goal or to dream a new dream. SpringMVC一路总结(一) SpringMVC听 ...

  2. windows编ffmpeg2.2.4和插件h265

    0.前言 据说新出来了h265的视频,在迅雷看看上面看到的.网上查看了一下简单介绍,貌似h265的视频比h264的视频压缩率要高.并且能做4K的视频. 同一时候看到网上有人试过ffmpeg在编译的时候 ...

  3. 关于tcp封装http协议

    如果tcp中没有上层协议,那么就是简单的数据包的传输,如果tcp中有上层协议,那么,当客户端把tcp包发给server的时候,server端的socket收到数据包后,从中分离出应用层协议,交给上层继 ...

  4. sgu139Help Needed!推断15数码是否有解,以及推断N数码是否有解的推论

    是这种,要你推断一个15数码是否有解. 我不会,找了这样一个方法. 将16个数按出现顺序存放在一维数组里面, 然后累加每一个数的逆序对数目, 还要加上0到终态的曼哈顿距离,得到一个数x. 因为最后的状 ...

  5. js 里面 写 C# 代码 遇到的问题

    js  代码块 必须放置在 body 里面

  6. 微信公众平台接口,asp.net实现

    原文:微信公众平台接口,asp.net实现 我为自己的笑话网开发了一个微信公众平台的接口,在这里分享给大家,希望能对朋友们有帮助,如果有什么地方写的不好,好请大家指点! 首先是要进行认证,认证的时候, ...

  7. 探秘IntelliJ IDEA v13的应用服务器

    原文:探秘IntelliJ IDEA v13的应用服务器 IntelliJ IDEA v13应用out-of-the-box支持众多企业级和开源的服务器,包括:GlassFish.WebLogic. ...

  8. unity3d 血液

    这里的人物头像和血条是在3d世界生成的,所以有真正的纵深感和遮挡关系,废话不多说,看我是怎么实现的. 第一步.先在UI Root里制作头像和血条. 这个制作步骤基本和我前面一篇文章介绍头像血条的制作步 ...

  9. Java程序单元测试工具对比——Parasoft Jtest与Junit

    Web应用程序开发中,面向对象的Java语言占了不少的比重.对于Java应用程序的测试方法或方式多种多样,比较典型的是程序员自己来完成程序测试中的一个部分——单元测试. 之前,慧都资讯提到单元测试是程 ...

  10. CSS3的应用,你学会了吗?

    开场白 CSS3相对于CSS2引入了很多的新的css属性和特效,利用css3实现了原来需要加入js才能模拟的效果,因此前端性能提高了很多. 各大浏览器厂商包括IE都逐渐的加大对CSS3 HTML5的支 ...