Welcome 微信登录

首页 / 软件开发 / 数据结构与算法

炸弹人游戏开发过程(2) 初步设计

炸弹人游戏开发过程(2) 初步设计

炸弹人游戏开发过程(2) 初步设计2014-10-17 cnblogs 码农终结者前言有了上文的初步需求分析后,就可以进入初步设计阶段了。本文目的得到初步的领域模型,对层和模块进行初步的划分。技术选择首先,要确定选择什么技术来开发游戏。我以前开发过网站,也开发过javascript游戏,因此我决定使用web技术开发。然后就是决定是采用传统的Html4,还是最新的Html5。最终我决定使用Html5技术,因为使用Html5有如下的好处:可以使用强大的Canv...
炸弹人游戏开发过程(3) 显示地图

炸弹人游戏开发过程(3) 显示地图

炸弹人游戏开发过程(3) 显示地图2014-10-17 cnblogs 码农终结者前言上文我们进行了初步的高层设计,现在我们将实现图片预加载和显示地图的功能需求。本文开始我采用TDD开发,大家可以看到在实现的过程中我们会修改设计,修改设计后又会修改对应的实现代码,这是一个不断迭代的过程。在有测试套件的保护下,我们可以放心地重构。本文目的掌握地图绘制的技术。回顾上文与显示地图相关的领域模型开发策略使用我的控件YPreLoadImg来实现图片预加载,结合pro...
炸弹人游戏开发过程(4) 炸弹人显示与移动

炸弹人游戏开发过程(4) 炸弹人显示与移动

炸弹人游戏开发过程(4) 炸弹人显示与移动2014-10-17 cnblogs 码农终结者前言在上文中,我已经介绍了如何测试、如何重构测试,并且通过实验掌握了地图显示的技术。本文会将地图显示的技术用到炸弹人显示中,并且让我们的炸弹人动起来。注:为了提升博文质量和把重点放在记录开发和迭代的思想实践,本文及后续博文将不再记录测试过程。本文目的实现炸弹人的显示和移动回顾上文更新后的领域模型对领域模型进行思考ShowMap类是负责显示地图,包含了游戏逻辑。而Gam...
SAP自动化准备测试数据:基于AutoIt VBS XML的实现思路

SAP自动化准备测试数据:基于AutoIt VBS XML的实现思路

SAP自动化准备测试数据:基于AutoIt VBS XML的实现思路2014-10-17 infoq 兰艳SAP是当前知名且领先的ERP系统,在对与 SAP 有交互的软件系统进行测试时,经常需要使用 SAP GUI Client 完成一定的常规操作,例如创建测试数据等。这些操作具备如下特点:需要一定的 SAP 知识和技能;步骤冗长;耗时耗力;重复性强等。为了提高工作效率,降低测试人员和开发人员的工作量,通过自动化的方式来完成数据准备是我们首先想到的方法。S...
Web基础架构设计原则经典论文《架构风格与基于网络的软件架构设计》导读

Web基础架构设计原则经典论文《架构风格与基于网络的软件架构设计》导读

Web基础架构设计原则经典论文《架构风格与基于网络的软件架构设计》导读2014-10-17 infoq 李锟1. 概述Roy Fielding博士(见个人主页)是IETF发布的HTTP和URI协议的主要设计者。HTTP和URI是两个最为重要的Web基础技术架构协议,因此Fielding博士可谓是Web架构的奠基者之一。除了学术上的卓越成就之外,Fielding博士还参与过很多开源软件的设计和开发工作。他是libwww-perl(世界上最早的HTTP开发库之...
如何使用Cobertura和反射机制来提高Java单元测试中的代码覆盖率

如何使用Cobertura和反射机制来提高Java单元测试中的代码覆盖率

如何使用Cobertura和反射机制来提高Java单元测试中的代码覆盖率2014-10-17 ibm 王传阳, 刘伏亮引言单元测试是软件开发过程中重要的质量保证环节。单元测试可以减少代码中潜在的错误,使缺陷更早地被发现,从而降低了软件的维护成本。软件代码的质量由单元测试来保证,而单元测试自身的质量与效率问题也不容忽视。提高单元测试的质量与效率,不仅能够使软件代码更加有保证,而且能够节省开发人员编写或者修改单元测试代码的时间。衡量单元测试质量与效率的指标多种...
欢迎进入可编程世界

欢迎进入可编程世界

欢迎进入可编程世界2014-10-17家里、汽车里、工厂里,我们的周围布满了小巧的智能设备,这些设备捕捉我们生活中的一举一动。现在,它们开始互相交谈了,很快我们就能指挥它们响应我们的需求、解决我们的问题,甚至挽救我们的生命。汽车车门:温度,+13.0℃;电池,2.4V家庭照明:2001-厨房工作台照明:2001-恒温器:4301-咖啡壶:2001-卧室动作传感器:设备0xB247区间状态 0x0031URL:http://www.bianceng.cn/P...
程序员的工具

程序员的工具

程序员的工具2014-10-17 infoq 姚若舟编码工具编码本质上来说是一种以键盘输入操作为主的工作。因此,输入代码速度的快慢很大程度上影响了一名程序员的效率。我是通过以下手段来提高输入代码速度的。键盘布局很多程序员都不知道我们使用的键盘布局(就是指字母键,数字键和符号键的所处的位置)并非只有一种。绝大部分人使用的是标准键盘布局,也被称为QWERT键盘(以左手上方那排字母键命名的)。但是很遗憾,这种布局的设计初衷其实并不是为了提高打字速度的。我大概从一...
解析精益产品开发:产品开发中的价值

解析精益产品开发:产品开发中的价值

解析精益产品开发:产品开发中的价值2015-01-09 infoq 何勉本文是《解析精益产品开发》系列的第二篇。第一篇中我们介绍了看板方法,看板方法帮助组织持续改进,实现顺畅和持续的价值流动。但是,只有基于正确价值的流动才有意义,这是精益产品开发的前提。在本篇中,我们将揭示产品开发中的价值本质,并以此为基础,分享一个适合精益产品开发的价值定义和发现实践——影响地图(Impact Mapping)。1. 产品开发中价值的本质传统项目管...
解析精益产品开发:面向价值的可视化

解析精益产品开发:面向价值的可视化

解析精益产品开发:面向价值的可视化2015-01-09 infoq 何勉用户故事图谱和任务看板、版本和迭代燃尽图,可视化已经成为敏捷和精益产品开发必选实践。可视化真的重要吗?我们将从一个真实团队的实践开始,探讨可视化的作用,以及如何让可视化发挥效用。1. 一个团队实例这是一个50人左右的团队,做企业级存储和数据管理产品,他们通过实施产品开发中的价值、技术风险和价值流动过程的可视化,促进了团队的沟通、决策、自我管理和持续改进。1.1 可视化价值图1是团队使用...
10大准则令完美的开发/测试实验室成为可能

10大准则令完美的开发/测试实验室成为可能

10大准则令完美的开发/测试实验室成为可能2015-01-09你是否拥有一些实现超敏捷软件开发所必备的特质?创业公司Ravello Systems探讨了通过将云规范化,来构建梦寐以求的开发/测试实验室的关键准则。在这样一个竞争优势与业务敏捷度近乎画上等号的世界中,现实情况是,企业往往需要非常多的时间投入,来开发和测试驱动业务的种种软件。在软件开发中,超敏捷要求基础设施和自动化不仅与开发进程保持一致,而且还要对加速循环和改进整体质量产生实质性帮助。在开发/测...
如何把UML关系转化为代码

如何把UML关系转化为代码

如何把UML关系转化为代码2015-01-091、继承关系(泛化关系)【说明】:继承关系是子类(派生类)继承父类(基类),或者子接口继承父接口的关系。即子类对象“is a” 父类对象,比如鸟是动物。【UML图】:图解:Animal为父类,Bird类、Fish类、Dog类分别继承了Animal类,它们不仅继承了Animal的公用方法Breath(),同时也根据自己的实际需要拓展了相关方法(Fly()方法、Swim()方法、Run()方...
分布式系统设计权衡:CAP

分布式系统设计权衡:CAP

分布式系统设计权衡:CAP2015-01-09写在最前:1.为什么学习并记录分布式设计理念一系列相关的东西在日常工作中系统设计评审的时候,经常会有一些同事抛出一些概念,高可用性,一致性等等字眼,他们用这些最基本的概念去反驳系统最初的设计,但是很多人理解的可用性,一致性等等问题,都是自己拍脑袋想的,或者根本和最原始表达的意思就不是一个东西,在这种情况下PK,就像不再一个频段的人在交流,除了争论,没有任何实质性的进展,所以有必要熟悉其理论基础,以免贻笑大方。(...
基于文本替换的解释器及lambda演算

基于文本替换的解释器及lambda演算

基于文本替换的解释器及lambda演算2015-01-09最近比较闲,打算整理一下之前学习的关于程序语言的知识。主要的内容其实就是一边设计程序语言一边写解释器实现它。这些知识基本上来自Programming Languages and Lambda Calculi和Essentials of Programming Languages这两本书。我还记得高中奥数竞赛培训时的老师这样说过:“解题时一定要抓住定义。” 编程和解题一样,也要...
基于文本替换的解释器:加入整数类型

基于文本替换的解释器:加入整数类型

基于文本替换的解释器:加入整数类型2015-01-09为了有条不紊地实现一个解释器,我将按以下三个步骤走:1.明确语法2.针对语法描述求值过程3.根据求值过程编写代码实现语法(lambda)演算不适合作为一门实际使用的程序语言。 (lambda)演算只有变量和函数两种类型,而其他常用类型如整数、布尔、字符等都没有。 虽然可以通过编码的方式表示这些常用类型,但这样也很麻烦。 通常直接扩展(lambda)演算,加入一些常用类型以及针对这些类型的基本运算。 这种...
基于文本替换的解释器:let表达式,布尔类型,if表达式

基于文本替换的解释器:let表达式,布尔类型,if表达式

基于文本替换的解释器:let表达式,布尔类型,if表达式2015-01-12let表达式let表达式用来声明一个变量。 比如我们正在写一个模拟掷骰子游戏的程序。 一个骰子有6个面。 所以这个程序多次用到了6这个数字。 有一天,我们忽然改变主意,要玩12个面的骰子。 于是我们不得不仔细查找源代码,把里面的6改成12。 对于一个较大的程序,这是灾难的开始。 有时我们会漏掉几个6,有时我们会把几个指的不是骰子面数的6误改成12。 这种灾难被称作“魔术...
基于文本替换的解释器:递归,如何构造递归函数,Y组合子

基于文本替换的解释器:递归,如何构造递归函数,Y组合子

基于文本替换的解释器:递归,如何构造递归函数,Y组合子2015-01-12递归。哦,递归。 递归在计算机科学中的重要性不言而喻。 递归就像女人,即令人烦恼,又无法抛弃。先上个例子,这个例子里的函数double输入一个非负整数$n$,输出$2n$。 [ {double} = lambda n.({if} ; ({iszero} ; n) ; 0 ; (+ ; 2 ; ({double} ; (- ; n ; 1)))) ]现在的问题是,这个递归函数在我们的语...
基于文本替换的解释器:递归,不动点,fix表达式,letrec表达式

基于文本替换的解释器:递归,不动点,fix表达式,letrec表达式

基于文本替换的解释器:递归,不动点,fix表达式,letrec表达式2015-01-12这个系列有个显著的特点,那就是标题越来越长。忽然发现今天是读书节,读书节多读书。==下面是没有意义的一段话我是一个喜欢从学习知识中获得乐趣并乐于分享这种乐趣的人。我认为大部分知识只要花点时间都是能学会的。几年前,我迷上微分几何。我对每个朋友说这东西很有意思花点时间精力就能学会。他们回答说唉没时间时间不知去哪儿了。后来,我迷上量子力学。我对每个朋友说这东西值得一学,只要花...
<< 171 172 173 174 175 176 177 178 179 180 >>