from: http://cid-ba6a52af193f301f.spaces.live.com/blog/cns!BA6A52AF193F301F!122.entry

Oh,my pair project

From new Pair(HuangShuo,WangGuan)

签入代码,发送邮件,关上Flex Builder。纠结了差不多两周的Pair Project终于能够有个了结了,此刻跑来码码字,感到甚为解脱。

我们Pair,Wang Guan和我,刚面对这个作业时,基本上是傻眼的,因为除了写点C和Java基本什么也不会了。当我发现了Silverlight网上教程的缺乏又听到有同学说到Flex后,我们选择了Flash+Papervision3D类库来实现我们的3D陆战棋,当然依旧是什么都不会。

我们开始疯狂的Baidu,搜索各种诸如Flash3D,pv3d教程的关键字,然后拿到源码,在机器上试。我们最开始的Pair Programming就是以一起想办法用源代码跑出网上的效果开始的,但是基本上是悲剧的,不断的尝试,却依旧弄不懂怎么在MXML里面显示出那个旋转的立方体。

所有的知识对我们两个都是新的,对它们完全没有概念。我觉得这种情况下的Pair Programming是没法进行了,必须先弄点基础。于是我们开始了分工,WG开始研究陆战棋的规则的3D扩展,我则开始攻关flash 3d图形方面。

庆幸flash的普及度的确很高,教程很多,各种牛人个人主页也多,我开始疯狂看教程,调代码,然后给每一个我能找到的教程作者的email发邮件提问。这样度过了黑暗的好几天,终于慢慢见到光明了,Cube转动起来了,视角拉动起来了,终于有个牛人回我邮件了,最后我们来回了13次邮件。

我掌握了怎么设点,画线以后,我就告诉WG,让他开始设计棋盘,几番争论,大概确定了棋盘的样子。我向WG讲了代码的写法,然后他开始实现棋盘线条的代码。当最后WG改出了一个正确的棋盘时,拖动着那个精致的空间网格,感受着我们自己弄出来的3D效果,真的觉得这是天赐的艺术品啊。

通过不断的看Papervison3d的api,不断的试代码,我终于觉得能开始做自己的项目了。于是我们进行了项目中最关键的一次Pair Programming,我们利用编译课上机时间,在机房里Pair完成了整个项目的类的设计与程序结构的设计。我们一起分析出类,然后找属性,写方法头,开始是WG用键盘,后来我用。一个明显的好处是,写完一条自己不确定的语句,马上可以跟Pair一起缕一缕思路。一下午下来,感觉甚为清爽,因为终于清楚这个项目的做法了。

接下来的工作,又开始分工。我来做图形外观方面的东西,这个容易测试,也不必要两人做。WG则写了很多内部逻辑处理的代码。这时我们开始了项目中用到最多的一种Pair Programming了,也就是WG用他的代码开始跑,我没有写代码带来的主观偏见,很适合出测试样例,代码出了问题,马上我们从比较抽象一点的层面来讨论这个事件的逻辑,最后WG哦的一声,弄明白了,回到代码层次迅速改好代码,继续上面的过程。这时很常见的就是WG坐在电脑前,我站在他身后,走来走去,然后俯身去用鼠标出测试样例;WG则是转身来跟我讨论,完了再转回去改代码。

军棋本来棋子就麻烦,加上我们每个棋子都会有三种贴图,在不同的时候显示,来增强用户的体验效果,因此关于换贴图,关于相互吃子的逻辑,我们反复这样Pair了好多次,改了无数bug,也不幸引进了无数bug,最后也只能弄到自己找不到bug,其实可能还是有。由于军棋中很多类似的逻辑代码,我们又用了很多直接暴力枚举的代码,不在一起写代码而在一起debug,避免了在那些逻辑简单打字量大的代码上浪费Pair的时间,我觉得这个方法还是成功的。

现在基本做完了这个作业,回过头来想想,其实还是有很多经验教训的。

一条经验是,学好基本的东西,真的很有用。Java的基础帮助我们基本上没有在ActionScript的语法与用法上花费什么时间。另外一个再次被印证了的经验,搜索引擎是个好东西,有了互联网,似乎真的不能说什么“流行的”技术是不能掌握的——当然还是要花时间的,说不定还要痛苦个几天。

教训更多的体现在总体的设计上。Actionscript是面向对象的,一开始关于flash3d什么都不明白,我们并没有太在意面向对象的分析设计方法的运用,很多地方有些随意,如果最开始能老老实实的画类图,分析用例,也许不会后来突然发现重要的属性取不到,要改很多代码了。再就是一些逻辑,一开始我们并没有很完全的去分析清楚,没有用很优雅的处理方法写程序,后来改代码,只能疯狂的用if,写到最后,有些代码真的改得很难看了。

整个过程,也让我们对一些问题有了亲身的体会。最明显的就是“回归测试”这个东西,我之前一直不太相信它的必要性,这次改行棋逻辑的代码,算是让人体会到了回归测试多么重要,很多次都是改对了一个贴图显示,新毛病又出来了。。。

也不过是两周不到以前,无助的看着Papervision3D 的api,都有些想放弃这作业了,若干天后的现在居然能做出个东西来,还能现在来码码字,真有种熬过黎明前的黑暗的感觉。这项目,我会记住很久了。

最后说点题外话,因为调试的时候程序崩溃,强行关IE,我这vista悲剧的蓝屏了两次,死机了一次;另外,Flash3D现在还不支持硬件加速,全是CPU算出来的,这些天我的CPU也是长时间接近100%,也许哪天Flash3D能发挥点显卡的能力了,我真应该把这个Pair Project再拿出来试试,让CPU看着显卡出力,它自己清闲爽一爽。

现代软件工程系列 结对编程 两周写好3D 陆战棋相关推荐

  1. 现代软件工程系列 结对编程 (II) 电梯调度程序

    [很多同学完成了上一个结对编程项目后,  很想知道下一个项目是什么, 我们这次要练习如何设计 接口, 测试框架,  和算法] 现代软件工程系列 结对编程 (II) 电梯调度程序 ------- Pai ...

  2. 现代软件工程系列 结对编程 (II) 电梯调度程序新需求

    原来布置的作业在这里: http://www.cnblogs.com/xinz/archive/2010/11/28/1890300.html 正如在现实生活中一样, 软件项目的需求也会经常发生变化. ...

  3. 2022秋软件工程第一次结对编程时作业

    软件工程 FZUSDN社区 作业要求 2022秋软件工程第一次结对编程作业 作业目标 使用NABCD进行需求分析并进行原型设计 成员学号 032002217 成员学号 072003403 墨刀链接 墨 ...

  4. 软件工程第一次结对编程

    10/11-10/16日短短五天,我和队友通过结对编程的方式完成了一个用来做"黄金点游戏"的小程序,项目地址: https://github.com/ycWang9725/gold ...

  5. 【现代软件工程】结对编程 —— 四则运算UI

    结对作业 -- 用户界面设计 徐楠青 PB16120408 王馨儿 PB16060765 项目简介: 本次结对编程的任务是写一个能自动生成小学四则运算题目并给出答案的软件,分为core组和ui组.我们 ...

  6. 软件工程课程-结对编程项目

    结对编程项目 评分标准 结对编程项目总共8个周时,总分数55分 作业期限每一周算一周时 未按时完成作业,但在作业截止后的3天时间内提交作业的,得作业得分x0.6 作业截止3天后未完成作业,扣该作业总分 ...

  7. 现代软件工程 作业 结对编程 模板

    [现代软件工程作业汇总] 技术要求部分 请看以前的各项结对作业的技术要求,例如(电梯调度,四则运算,数独,地铁出行,黄金点游戏) 博客要求部分 1)在博客开头给出作业要求的博客链接, 你们项目的Git ...

  8. 软件工程-第一次结对编程

    1.代码地址 本次和我结对的是王肖男 他的代码地址是GitHub 2.代码审查表 计算器算法审查表 重要性 激活 级别 检查项 Y 20 命名规则是否与所采用的规范保持一致? 注释 重要 Y 10 注 ...

  9. 软件工程作业二——结对编程(用HTML5搭建3D俄罗斯方块)

    队员:杨天一(2012211730):陈彬(2012211574): 此次项目是我们首次尝试结对编程,同时也是第一次接触3D界面程序,在这过程中遇到了一些问题也提高了自己的能力.最终我们确定的项目是3 ...

最新文章

  1. 026_使用eclipse生成hashCode和equals方法
  2. STM32开发 -- 数据搜索
  3. c语言不可见字符的ascii,转CHAR不可见字符
  4. codeforces 1039B Subway Pursuit【二分+随机】
  5. HOWTO: Create and submit your first Linux kernel patch using GIT
  6. devops_您无法购买DevOps
  7. 【LeetCode】【HOT】105. 从前序与中序遍历序列构造二叉树(哈希表+递归)
  8. 排序sort,统计wc
  9. 如何在 Mac 上管理用于锁定备忘录的密码?
  10. python -- 装饰器的高级应用
  11. Jackson解析XML
  12. Struts框架可以支持以下哪种程序开发语言?(选择1项)
  13. grub rescue
  14. MySQL数据库插入中文时出现Incorrect string value: '\xE6\x97\xB7\xE5\x85\xA8' for column 'sz_name' at row 1...
  15. CSS中absolute和relative
  16. 微软skype收购案
  17. [Excel]如何去除恼人的外部链接
  18. pipconda 搜索包|查看可安装包版本
  19. 神经网络与傅立叶变换到底有没有关系?
  20. 【ninja】macOS 下安装ninja

热门文章

  1. java并发编程-----深入剖析ThreadLocal
  2. 深入学习Redis(1):Redis内存模型
  3. 网络对抗技术—-网络对抗实验四
  4. vue中检测对象和数组值变化的问题
  5. MVC防止xss攻击 ——Html.AntiForgeryToken的AJAX提交
  6. 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-通过SQL实现特殊业务...
  7. 用SQL实现记录上下移动的思路
  8. 4.1.1网络层功能概述
  9. 操作系统 —— 文件管理
  10. 总结下载Spring Framework的jar包