植物 大战 僵尸游戏 demo 分享

19
植植植植植植植植 demo 植植 Lv-fe 植植植

Upload: neil-carroll

Post on 01-Jan-2016

69 views

Category:

Documents


2 download

DESCRIPTION

植物 大战 僵尸游戏 demo 分享. Lv-fe 党弘扬. 游戏和面向对象. 工作中的面向对象 ? 网页编程,大片的 dom 操作,成群的面板、按钮、控件 … 谁还愿意给他们起个名字想象他们是否有生命? 非常的抽象。 游戏中的面向对象? Flash? C++? Javascript… 阳光,向日葵,豌豆射手和邪恶的僵尸? 非常容易区分游戏编程中的事物。 非常的容易抽象 练习写 Game 是学习面向对象的一个很好的途径. 准备场景. 注:游戏的设计不是一成不变的,这只是我的一个习惯。 划分坐标,道路 。 设计一些方法: 放置一个物体到一个坐标 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 植物 大战 僵尸游戏 demo 分享

植物大战僵尸游戏 demo分享

Lv-fe 党弘扬

Page 2: 植物 大战 僵尸游戏 demo 分享

游戏和面向对象• 工作中的面向对象 ?

– 网页编程,大片的 dom操作,成群的面板、按钮、控件…

– 谁还愿意给他们起个名字想象他们是否有生命?

– 非常的抽象。

• 游戏中的面向对象?– Flash? C++? Javascript…阳光,向日葵,豌豆射手和邪恶的僵尸?

– 非常容易区分游戏编程中的事物。

– 非常的容易抽象

• 练习写 Game是学习面向对象的一个很好的途径

Page 3: 植物 大战 僵尸游戏 demo 分享

准备场景• 注:游戏的设计不是一成不变的,这只是我的一个习惯。

• 划分坐标,道路。

• 设计一些方法:– 放置一个物体到一个坐标

– 把一个物体从A坐标移动到B坐标

– B坐标是否可以放东西?上面是否已经有东西了?

– 如果移动过程中遇到前面的坐标中有东西如何处理 (碰撞 )?

– 去除一个场景上的物体

– 检查当前的阳光值?甚至负责采集到的阳光?

Page 4: 植物 大战 僵尸游戏 demo 分享

准备我们的角色 (对象 )——Sunflower

• 创造阳光• 被虐• 被种植 (登陆到我们的场景中 )• 被干掉• 被吃的过程中会被得越来越 sui..

Page 5: 植物 大战 僵尸游戏 demo 分享

准备我们的角色 (对象 )——PeaShooter

• 能够发射炮弹• 被虐• 被种植• 被干掉• 被吃的过程中会变得越来越 sui….

Page 6: 植物 大战 僵尸游戏 demo 分享

准备我们的角色 (对象 )——Zombie

• 能够攻击植物• 被虐• 来到这个世界上 (被上帝种了… )• 被干掉• 在被豌豆射手的子弹下样子越来越 sui…

Page 7: 植物 大战 僵尸游戏 demo 分享

UML图 1

• 注:一种表示类设计和对象之间关系的图谱。• 实现的方案:– 图 http://danghongyang.fe.baidu.com/game/orignal.pdf。

Page 8: 植物 大战 僵尸游戏 demo 分享

进阶?

Page 9: 植物 大战 僵尸游戏 demo 分享

设计模式?• 方案 1面临的问题–如果我想加一个坚果哥?–如果我想加一个可以产生阳光的蘑菇?–如果我想加一个能够奔走杀敌的向日葵?–如果我想让一个豌豆射手可以产生阳光?–让豌豆射手边跑边发射炮弹??–……疯了……

Page 10: 植物 大战 僵尸游戏 demo 分享

UML图 2

• 实现的方案:–图

http://danghongyang.fe.baidu.com/game/proved.pdf

Page 11: 植物 大战 僵尸游戏 demo 分享

所有的行为

• 发射子弹的行为

• 移动的行为

• 创造阳光的行为

• 被虐的行为

• 虐人的行为

• 有一副长相 (姑且也认为这是一种行为 )

Page 12: 植物 大战 僵尸游戏 demo 分享

行为的任意组合?

• 可以发射子弹、创造阳光的向日葵

• 可以移动的豌豆射手

• 甚至变身为向日葵的僵尸……

• 如果行为更多?那么组成也更多。

Page 13: 植物 大战 僵尸游戏 demo 分享

设计模式?• 设计原则–针对接口编程,而不是针对实现编程。–多用组合,少用继成

Page 14: 植物 大战 僵尸游戏 demo 分享

整合所有行为?

• 把让每个行为起作用的代码,用同样的接口封装起来。

• 调用的时候就可以不在乎是哪个行为了。

Page 15: 植物 大战 僵尸游戏 demo 分享

整合所有的雇佣兵?

• 所有的植物、僵尸都是你的雇佣兵。

• 你几乎只完成了拖动它或者系统直接生成它到场景中。其他的都是自动的。

• 那么他们可以拥有共同的接口。

• 使用的时候就不在乎究竟是什么类型的雇佣兵,直接让它上场就可以。

Page 16: 植物 大战 僵尸游戏 demo 分享

工厂方法

• 工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。

• BehaviorFactory (not real… -_-# why?)

• MercenaryFactory

Page 17: 植物 大战 僵尸游戏 demo 分享

抽象工厂模式• 比较难懂• 抽象工厂模式 http://danghongyang.fe.baidu.com/game/abstract-factory.pdf

• 实际上相当于:– 北京的驴肉火烧、保定的驴肉火烧、天津的驴肉火烧、哈尔滨的、美国的 …等等

– 同样都是驴肉火烧,但是原料不一样

– 皮,肉料,调料

– 只要各个地方的生产这些调料的工厂遵循同样生产原料的接口就可以。

• Canvas中实现一个植物大战僵尸?

Page 18: 植物 大战 僵尸游戏 demo 分享

Canvas中实现一个植物大战僵尸?

• Html实现植物大战僵尸?保定做驴肉火烧?• Canvas实现植物大战僵尸?北京做驴肉火烧?• 上 demo -_-#• UML图

http://danghongyang.fe.baidu.com/game/abstract-factory-real.pdf

• SVG实现一个植物大战僵尸?……

Page 19: 植物 大战 僵尸游戏 demo 分享

谢谢• Q&A