10 2013 档案
摘要:使用测试驱动开发大半年了,我还是对Stub和Mock的认识比较模糊,没有进行系统整理。今天查阅了相关资料,觉得写得很不错,所以我试图在博文中对资料进行整理一下,再加上一些自己的观点。本文是目前我对Stub和Mock的认识,难免有偏差,欢迎大家拍砖。
阅读全文
摘要:本文会加入1个AI敌人,敌人使用A*算法追踪炸弹人。
阅读全文
摘要:本文将实现碰撞检测,让炸弹人不能穿过墙。在实现的过程中会发现炸弹人移动的问题,然后会通过设置移动步长来解决。
阅读全文
摘要:本文开始监听键盘事件,使玩家能控制炸弹人移动。然后会在重构的过程中会引入状态模式。大家会看到我是如何在开发的过程中通过重构来提出设计模式,而不是在初步设计阶段提出设计模式的。
阅读全文
摘要:问题分析我们在调整画布大小时,希望画布中的图形保持不变,只是改变画布本身的大小。但是如果使用Css设置画布大小,则会出现问题。问题描述如果使用Css设置Canvas画布的大小,则导致画布按比例缩放到你设置的值。原因在Canvas元素的内部存在一个名为2d渲染环境(2d redering contex...
阅读全文
摘要:本文会将地图显示的技术用到炸弹人显示中,并且让我们的炸弹人动起来。注:为了提升博文质量和把重点放在记录开发和迭代的思想实践,本文及后续博文将不再记录测试过程。
阅读全文
摘要:现在我们将实现图片预加载和显示地图的功能需求。我采用TDD开发,大家可以看到在实现的过程中我们会修改设计,修改设计后又会修改对应的实现代码,这是一个不断迭代的过程。在有测试套件的保护下,我们可以放心地重构。
阅读全文
摘要:本系列博文记录了炸弹人游戏迭代开发的过程。在开发的过程中,代码会不断重构,领域模型会不断演变,高层划分也会不断变化。博文重点在于记录面向对象思想运用、重构、迭代开发的过程,对于游戏的实现细节和原理不会深入讨论。关键词:面向对象、测试驱动开发、重构、迭代、领域模型、炸弹人游戏
阅读全文
摘要:本文进入初步设计阶段,得到初步的领域模型,并对层和模块进行初步的划分。
阅读全文
摘要:大家好!很高兴向大家介绍我的图片预加载控件YPreLoadImg。它可以帮助您预加载图片,并且能显示加载的进度,在预加载完成后调用指定的方法。
YPreLoadImg控件由一个名为PreLoadImg的类组成。该类的构造函数为:PreLoadImg(images, onstep, onload)
阅读全文
摘要:大家好!本文介绍状态模式及其在Javascript中的应用。模式介绍定义当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。类图及说明State:抽象状态接口或抽象类,负责对象状态定义,并且封装环境角色以实现状态切换ConcreState:具体状态每一个具体状态必须完成两个职责:本状态的行为管理以及趋向状态处理。通俗地说,就是本状态下要做的事情,以及本状态如何过渡到其他状态。Context:环境 定义客户端需要的接口,并且负责具体状态的
阅读全文
摘要:大家好!本文介绍迭代器模式及其在Javascript中的应用。模式介绍定义提供一种方法顺序一个聚合对象中各个元素,而又不暴露该对象内部表示。类图及说明Iterator抽象迭代器抽象迭代器负责定义访问和遍历元素的接口,而且基本上是有固定的3个方法:first()获得第一个元素,next()访问下一个元素,isDone()(或者为hasNext())是否已经访问到底部ConcreIterator具体迭代器具体迭代器角色要实现迭代器接口,完成容器元素的遍历。Aggregate抽象容器容器角色负重提供创建具体迭代器角色的接口,必然提供一个类似createIterator()(或者为iterator()
阅读全文