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

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看着显卡出力,它自己清闲爽一爽。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/500538.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

现代软件工程系列 学生精彩文章(7) 宝贵的教训

from http://codecanvas3706.spaces.live.com/blog/cns!5A77585898179960!205.entry [当学生的时候, 最好犯一些错误, 经历一些失败. 不经历一些惨痛的失败, 难道要到工作的时候才失败么? ] 个人的失败感言 记得在读完了《梦断代码》之后,我也只是为chandler项…

深度Linux安装火狐,deepin或Ubuntu安装最新版Firefox,并设置去掉标题栏

第一步:使用一下命令下载并安装Firefox################################### 先卸载老板Firefoxsudo rm -Rf /opt/firefox*sudo rm -Rf /usr/bin/firefoxsudo rm -Rf /usr/share/applications/firefox.desktop# 下载最新版Firefoxwget "https://download.mozil…

现代软件工程 作业 个人项目

MSRA Advanced Software Engineering Project: Individual Project - Word frequency program 2010/11/1 考察重点: 基本算法的实现; 基本I/O; 字处理; 程序效能分析; 简单测试用例 Implement a console application to tally the frequency of words under a directory (…

现代软件工程 团队博客作业 如何评价个人在团队中的绩效

在现实社会中有很多团队合作的项目, 他们是如何评价个人在团队中的绩效呢? 例如下面的情况: • 一群人把一堆砖头从A地搬到B地• 一个剧组排演话剧• 一群队员在职业球队踢球• 医生和护士做手术• 计算机系的一群老师教课• 一群学生做软工项目 (PM, Dev, Test) (这是重点) …

手势在c语言的作用,手势态度在人际交往中的重要性

一、人际交往的定义及其在社会活动中,人们运用语言符系统或非语言符系统相互之间交流信息,沟通情感的过程就是人际交往。人际交往是人们共同活动的特殊形式。任何个人或群体进行的交往,总是为达到某种目标、满足某种需要而展开的。二、人际交…

现代软件工程 结对编程 (I) 三维棋类游戏

Pair Project I 3D Board Game Turn a usual 2D board game into 3D by transferring board and game rules into 3D. Goal: how to collaborate in explorative situation (new requirement, new language, lots of ambiguity) 把一个二维的棋类游戏变成三维游戏, 两周时…

洛谷找最小值c语言,洛谷 P1478 陶陶摘苹果(升级版) C语言实现

原题地址:P1478 淘淘摘苹果(升级版)- 洛谷题目描述又是一年秋季时,陶陶家的苹果树结了n个果子。陶陶又跑去摘苹果,这次她有一个a公分的椅子。当他手够不着时,他会站到椅子上再试试。这次与NOIp2005普及组第一题不同的是&#xff1…

现代软件工程 结对编程 (II) 电梯调度 算法和测试框架

[很多同学完成了上一个结对编程项目后, 很想知道下一个项目是什么, 我们这次要练习如何设计 接口, 测试框架, 和算法. ] [博客园的朋友们也可以试一试怎么高效地解决这个问题] 现代软件工程系列 结对编程 (II) 电梯调度程序 ------- Pair Project II Elevator Scheduler D…

c语言入门自学为什么要用,为什么要将C语言作为入门语言?

编程是向计算机发出指令以执行特定任务或执行指令的行为,目前专业行业和学术界使用数百种编程语言。一个人需要熟悉并且能够使用至少几种编程语言进行编程才能作为目前专业开发者的成功。学习编程的最好理由在于它对所有人开放,你不需要大学学位即可通过…

c语言case接收字符,switch-case-break:字符释义 | 新思维:C语言程序设计

【问题:字符解释】从键盘输入一个字符,当输入的字符为“y”或“n”或“c”时,分别显示“Yes”、“No”、“Cancel”,输入其他字符时显示“Illegal!”。#include int main(int argc, char *argv[]){char cgetchar();switch(c) {cas…

现代软件工程讲义 如何提出靠谱的项目建议

互联网时代对于创新者来说, 既是一个伟大的时代, 又是一个糟糕的时代。 你有很多机会做出影响世界的产品, 但是, 似乎任何想法都被别人想到过了, 做出来了, 上市了, 移植到各种平台上去了… 那么我们后来人除了羡慕别人生得早, 还有什么机会呢? 但是往往不经意间, 在同学们…

现代软件工程 教学计划 中国科学技术大学-微软亚洲研究院联合培养班

屈指一算, 我已经讲了3年 <现代软件工程>, 教了 4 个班。 2007 - 2009 清华大学理论计算机科学研究中心 (姚班) 2009 北航计算机系还有在北大合作的教学: 2007 - 2009 北京大学软件学院 (课程名叫 - 微软软件实现技术, 我是讲师之一) …

c语言程序设计主编张玉生教材答案,清华大学出版社-图书详情-《Visual Basic程序设计实验指导》...

前言Visual Basic程序设计实验指导本书是《Visual Basic 程序设计教程》的配套实验指导书&#xff0c;全书内容分为四部分。第1部分为实验指导&#xff0c;设计了18个实验&#xff0c;每个实验都是编者精心设计和选择的&#xff0c;所构思的实验内容选材合理&#xff0c;实验目…

基础知识很扎实 - 但是面试就是做不出来, 怎么办? (长, 慎入)

http://www.newsmth.net/bbstcon.php?boardMicrosoft&gid48785 有人提问: 看了很多的面试题之类的&#xff0c;感觉虽然自己数据结构与算法基础知识很扎实&#xff0c;但还是做不出来&#xff0c;所以请高人指点。 这个问题看似迷惑, 其实提问的人搞混了两件事 - “数据…

c语言中的for循环怎么提前终止,[新人求指教]51C语言编程可否用中断令循环结束提早结束...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼C51_C语言编程控制流水灯硬件电路 p0 接 led 8 个&#xff0c;P33 接按键使用中断2开机灯按1~8逐位闪烁&#xff0c;并循环按键后改为 两灯亮 的流水灯下面写了个程序#include #include #define uchar unsigned char#define uint u…

湖南工程学院+c语言程序设计人事档案管理系统,程序设计人事档案管理系统.doc...

课 程 设 计 报 告课程名称 C语言程序设计课题名称 人事档案管理系统专 业 电子信息班 级 1001班学 号 201001030112姓 名指导教师 肖伟平 黄哲 罗敬2011年 6 月 23 日湖南工程学院课 程 设 计 任 务 书课程名称 C语言程序设计课 题 人事档案管理系统专业班级 电子信息1001班学…

敏捷软件开发宣言ndash;Manifesto for Agile Software Development

敏捷开发, 谁不会呀, 不就是 没文档, 出活快, 用户说啥都能改?下面是一个笑话, 王屋村的大牛说 - 我最近转手接了一个活, 完事能挣四五万, 我拿过图纸一看, 不就是盖一烟囱吗? 我们是敏捷 (Agile) 的团队&#xff0c;要文档作甚? 马上开始干活&#xff01;都快盖好了&…

2015电大c语言,2015电大本科C语言程序设计A试题汇总.doc

2015电大本科C语言程序设计A试题汇总2015年电大本科《C语言程序设计A》一、单选题1&#xff0e;在每个C语言程序中都必须包含有这样一个函数&#xff0c;该函数的函数名为 A 。A. main B. MAIN C. name D. function 2&#xff0e;每个C语言程序文件的编译错误分为(B)类。 A. 1 …

现代软件工程 - 代码量等于树叶量

我 2008年在清华大学上<现代软件工程> 的时候, 和同学讨论了代码量的问题。 同学说&#xff0c;许多相似课程都有“代码量”的要求&#xff0c;就是说软件工程的项目选题如果没有到一定量的代码&#xff0c;就不能算合格的选题。 老师助教专门花时间分析学生的代码是否…

计算机二级考试c语言公共基础知识,全国计算机二级c语言公共基础知识考试内容.doc...

全国计算机二级c语言公共基础知识考试内容全国计算机二级等级考试的笔试包括基础知识和程序设计两部分&#xff0c;其中基础知识占30分。以下是由关于全国计算机二级c语言公共基础知识考试内容的内容&#xff0c;希望大家喜欢!全国计算机二级c语言公共基础知识考试内容一、C语言…